diff options
Diffstat (limited to 'resources/tools/presentation')
-rw-r--r-- | resources/tools/presentation/generator_tables.py | 10 | ||||
-rw-r--r-- | resources/tools/presentation/specification.yaml | 12 | ||||
-rw-r--r-- | resources/tools/presentation/utils.py | 23 |
3 files changed, 34 insertions, 11 deletions
diff --git a/resources/tools/presentation/generator_tables.py b/resources/tools/presentation/generator_tables.py index a022c65e09..a667fffb16 100644 --- a/resources/tools/presentation/generator_tables.py +++ b/resources/tools/presentation/generator_tables.py @@ -22,7 +22,7 @@ import prettytable from string import replace from errors import PresentationError -from utils import mean, stdev, relative_change, find_outliers +from utils import mean, stdev, relative_change, remove_outliers def generate_tables(spec, data): @@ -401,15 +401,15 @@ def table_performance_comparison(table, input_data): for tst_name in tbl_dict.keys(): item = [tbl_dict[tst_name]["name"], ] if tbl_dict[tst_name]["ref-data"]: - data_t, _ = find_outliers(tbl_dict[tst_name]["ref-data"], - table["outlier-const"]) + data_t = remove_outliers(tbl_dict[tst_name]["ref-data"], + table["outlier-const"]) item.append(round(mean(data_t) / 1000000, 2)) item.append(round(stdev(data_t) / 1000000, 2)) else: item.extend([None, None]) if tbl_dict[tst_name]["cmp-data"]: - data_t, _ = find_outliers(tbl_dict[tst_name]["cmp-data"], - table["outlier-const"]) + data_t = remove_outliers(tbl_dict[tst_name]["cmp-data"], + table["outlier-const"]) item.append(round(mean(data_t) / 1000000, 2)) item.append(round(stdev(data_t) / 1000000, 2)) else: diff --git a/resources/tools/presentation/specification.yaml b/resources/tools/presentation/specification.yaml index 9d51d51fae..da4443dc30 100644 --- a/resources/tools/presentation/specification.yaml +++ b/resources/tools/presentation/specification.yaml @@ -1598,7 +1598,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "throughput" - "parent" @@ -1619,7 +1619,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "throughput" - "parent" @@ -1640,7 +1640,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-pdrdisc" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'PDRDISC' and not 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'PDRDISC' and not 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "throughput" - "parent" @@ -1661,7 +1661,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-pdrdisc" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'PDRDISC' and not 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'PDRDISC' and not 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "throughput" - "parent" @@ -2701,7 +2701,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc-lat50" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '1T1C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "latency" - "parent" @@ -2720,7 +2720,7 @@ output-file: "{DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc-lat50" data: "plot-vpp-throughput-latency" - filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'IPSEC' and not 'VHOST'" + filter: "'64B' and ('BASE' or 'SCALE' or 'FEATURE') and 'NDRDISC' and '2T2C' and 'IP4FWD' and not 'ACL1' and not 'ACL10' and not '100_FLOWS' and not '100k_FLOWS' and not 'IPSEC' and not 'VHOST'" parameters: - "latency" - "parent" diff --git a/resources/tools/presentation/utils.py b/resources/tools/presentation/utils.py index 154b6e9b23..8365bfad5c 100644 --- a/resources/tools/presentation/utils.py +++ b/resources/tools/presentation/utils.py @@ -68,6 +68,29 @@ def relative_change(nr1, nr2): return float(((nr2 - nr1) / nr1) * 100) +def remove_outliers(input_data, outlier_const): + """ + + :param input_data: Data from which the outliers will be removed. + :param outlier_const: Outlier constant. + :type input_data: list + :type outlier_const: float + :returns: The input list without outliers. + :rtype: list + """ + + data = np.array(input_data) + upper_quartile = np.percentile(data, 75) + lower_quartile = np.percentile(data, 25) + iqr = (upper_quartile - lower_quartile) * outlier_const + quartile_set = (lower_quartile - iqr, upper_quartile + iqr) + result_lst = list() + for y in data.tolist(): + if quartile_set[0] <= y <= quartile_set[1]: + result_lst.append(y) + return result_lst + + def find_outliers(input_data, outlier_const=1.5): """Go through the input data and generate two pandas series: - input data without outliers |