diff options
-rw-r--r-- | docs/cpta/index.rst | 23 | ||||
-rw-r--r-- | docs/cpta/introduction/index.rst | 55 | ||||
-rw-r--r-- | resources/tools/presentation/generator_CPTA.py | 7 | ||||
-rw-r--r-- | resources/tools/presentation/generator_tables.py | 8 | ||||
-rw-r--r-- | resources/tools/presentation/input_data_parser.py | 2 | ||||
-rw-r--r-- | resources/tools/presentation/specification_CPTA.yaml | 6 |
6 files changed, 66 insertions, 35 deletions
diff --git a/docs/cpta/index.rst b/docs/cpta/index.rst index f9fddfc58f..f927236e91 100644 --- a/docs/cpta/index.rst +++ b/docs/cpta/index.rst @@ -1,24 +1,11 @@ Continuous Performance Trending and Analysis ============================================ -VPP Performance Trending Dashboard ----------------------------------- - -1t1c -```` - -.. include:: ../../_build/_static/vpp/performance-trending-dashboard-1t1c.rst - -2t2c -```` - -.. include:: ../../_build/_static/vpp/performance-trending-dashboard-2t2c.rst - -4t4c -```` - -.. include:: ../../_build/_static/vpp/performance-trending-dashboard-4t4c.rst - +This auto-generated document contains VPP performance trending graphs and data. +It is generated using CSIT continuous trending test and analysis jobs and is +updated daily. More detail is available on +`CSIT Performance Trending and Analysis <https://wiki.fd.io/view/CSIT/PerformanceTrendingAnalysis>`_ +wiki page. Contents -------- diff --git a/docs/cpta/introduction/index.rst b/docs/cpta/introduction/index.rst index 5d31b33328..31da9aeb18 100644 --- a/docs/cpta/introduction/index.rst +++ b/docs/cpta/introduction/index.rst @@ -1,8 +1,47 @@ -VPP Performance Trending -======================== - -This auto-generated document contains VPP performance trending graphs and data. -It is generated using CSIT continuous trending test and analysis jobs and is -updated daily. More detail is available on -`CSIT Performance Trending and Analysis <https://wiki.fd.io/view/CSIT/PerformanceTrendingAnalysis>`_ -wiki page. +VPP MRR Performance Dashboard +============================= + +Description +----------- + +Dashboard tables list a summary of per test-case VPP MRR performance trend +values and detected anomalies (Maximum Receive Rate - received packet rate +under line rate load). Data comes from trending MRR jobs executed every 12 hrs +(2:00, 14:00 UTC). Trend and anomaly calculations are done over a rolling +window of <N> samples, currently with N=14 covering last 7 days. Separate +tables are generated for tested VPP worker-thread-core combinations (1t1c, +2t2c, 4t4c). + +Legend to table: + + - "Test case": name of CSIT test case, naming convention here + `CSIT/csit-test-naming <https://wiki.fd.io/view/CSIT/csit-test-naming>`_ + - "Thput trend [Mpps]": last value of trend over rolling window. + - "Anomaly value [Mpps]": in precedence - i) highest outlier if 3 + consecutive outliers, ii) highest regression if regressions detected, + iii) highest progression if progressions detected, iv) nil if normal i.e. + within trend. + - "Anomaly vs. Trend [%]": anomaly value vs. trend value. + - "Classification": outlier, regression, progression, normal - observed + over a rolling window. + - "# Outliers": number of outliers detected. + +Tables are listed in sections 1.x. Followed by daily trending graphs in +sections 2.x. Daily trending data used to generate the graphs is listed in +sections 3.x. + +VPP worker on 1t1c +------------------ + +.. include:: ../../../_build/_static/vpp/performance-trending-dashboard-1t1c.rst + +VPP worker on 2t2c +------------------ + +.. include:: ../../../_build/_static/vpp/performance-trending-dashboard-2t2c.rst + +VPP worker on 4t4c +------------------ + +.. include:: ../../../_build/_static/vpp/performance-trending-dashboard-4t4c.rst + diff --git a/resources/tools/presentation/generator_CPTA.py b/resources/tools/presentation/generator_CPTA.py index 066bfbddc8..c3784e94ef 100644 --- a/resources/tools/presentation/generator_CPTA.py +++ b/resources/tools/presentation/generator_CPTA.py @@ -389,7 +389,7 @@ def _generate_all_charts(spec, input_data): builds_lst.append(str(build["build"])) # Get "build ID": "date" dict: - build_info = dict() + build_info = OrderedDict() for build in builds_lst: try: build_info[build] = ( @@ -398,6 +398,9 @@ def _generate_all_charts(spec, input_data): ) except KeyError: build_info[build] = ("", "") + logging.info("{}: {}, {}".format(build, + build_info[build][0], + build_info[build][1])) # Create the header: csv_table = list() @@ -444,7 +447,7 @@ def _generate_all_charts(spec, input_data): for period in chart["periods"]: # Generate traces: traces = list() - win_size = 10 if period == 1 else 5 if period < 20 else 3 + win_size = 14 if period == 1 else 5 if period < 20 else 3 idx = 0 for test_name, test_data in chart_data.items(): if not test_data: diff --git a/resources/tools/presentation/generator_tables.py b/resources/tools/presentation/generator_tables.py index 985c787d2c..29e1006950 100644 --- a/resources/tools/presentation/generator_tables.py +++ b/resources/tools/presentation/generator_tables.py @@ -606,7 +606,7 @@ def table_performance_comparison_mrr(table, input_data): item.append(round(stdev(data_t) / 1000000, 2)) else: item.extend([None, None]) - if item[1] is not None and item[3] is not None: + if item[1] is not None and item[3] is not None and item[1] != 0: item.append(int(relative_change(float(item[1]), float(item[3])))) if len(item) == 6: tbl_lst.append(item) @@ -747,8 +747,10 @@ def table_performance_trending_dashboard(table, input_data): classification = "outlier" elif "progression" in classification_lst[first_idx:]: classification = "progression" - else: + elif "normal" in classification_lst[first_idx:]: classification = "normal" + else: + classification = None idx = len(classification_lst) - 1 while idx: @@ -770,7 +772,7 @@ def table_performance_trending_dashboard(table, input_data): # Sort the table according to the classification tbl_sorted = list() - for classification in ("regression", "outlier", "progression", "normal"): + for classification in ("regression", "progression", "outlier", "normal"): tbl_tmp = [item for item in tbl_lst if item[4] == classification] tbl_tmp.sort(key=lambda rel: rel[0]) tbl_sorted.extend(tbl_tmp) diff --git a/resources/tools/presentation/input_data_parser.py b/resources/tools/presentation/input_data_parser.py index db63660d43..18fea3e3a4 100644 --- a/resources/tools/presentation/input_data_parser.py +++ b/resources/tools/presentation/input_data_parser.py @@ -250,7 +250,7 @@ class ExecutionChecker(ResultVisitor): self._data["metadata"]["version"] = self._version self._msg_type = None - logging.debug(" VPP version: {0}".format(self._version)) + logging.info(" VPP version: {0}".format(self._version)) def _get_vat_history(self, msg): """Called when extraction of VAT command history is required. diff --git a/resources/tools/presentation/specification_CPTA.yaml b/resources/tools/presentation/specification_CPTA.yaml index f6d07e8063..4e2aad6d40 100644 --- a/resources/tools/presentation/specification_CPTA.yaml +++ b/resources/tools/presentation/specification_CPTA.yaml @@ -226,7 +226,7 @@ # to present all tests. nr-of-tests-shown: 20 outlier-const: 1.5 - window: 10 + window: 14 evaluated-window: 14 - @@ -245,7 +245,7 @@ # to present all tests. nr-of-tests-shown: 20 outlier-const: 1.5 - window: 10 + window: 14 evaluated-window: 14 - @@ -264,7 +264,7 @@ # to present all tests. nr-of-tests-shown: 20 outlier-const: 1.5 - window: 10 + window: 14 evaluated-window: 14 - |