aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools
diff options
context:
space:
mode:
authorTibor Frank <tifrank@cisco.com>2021-02-19 14:07:29 +0100
committerTibor Frank <tifrank@cisco.com>2021-02-22 12:51:38 +0100
commitb9aa1c7701f6f261acc4849fb07929c64e3ae692 (patch)
tree4f8fea0efd924c6913d1280a439ac7eb6ceaa816 /resources/tools
parentf0e964d35af36f0923c6ae0421e74d94022cadba (diff)
Report: Add gso tests
Change-Id: Ic21d43a104bdafe93600d8f5fd60d403d13285aa Signed-off-by: Tibor Frank <tifrank@cisco.com>
Diffstat (limited to 'resources/tools')
-rw-r--r--resources/tools/presentation/generator_plots.py106
-rw-r--r--resources/tools/presentation/input_data_parser.py5
-rw-r--r--resources/tools/presentation/specification.yaml202
3 files changed, 308 insertions, 5 deletions
diff --git a/resources/tools/presentation/generator_plots.py b/resources/tools/presentation/generator_plots.py
index 4ceeebc7d1..11892a7f7e 100644
--- a/resources/tools/presentation/generator_plots.py
+++ b/resources/tools/presentation/generator_plots.py
@@ -82,7 +82,8 @@ def generate_plots(spec, data):
u"plot_http_server_perf_box": plot_http_server_perf_box,
u"plot_nf_heatmap": plot_nf_heatmap,
u"plot_hdrh_lat_by_percentile": plot_hdrh_lat_by_percentile,
- u"plot_hdrh_lat_by_percentile_x_log": plot_hdrh_lat_by_percentile_x_log
+ u"plot_hdrh_lat_by_percentile_x_log": plot_hdrh_lat_by_percentile_x_log,
+ u"plot_mrr_error_bars_name": plot_mrr_error_bars_name
}
logging.info(u"Generating the plots ...")
@@ -698,6 +699,109 @@ def plot_perf_box_name(plot, input_data):
return
+def plot_mrr_error_bars_name(plot, input_data):
+ """Generate the plot(s) with algorithm: plot_mrr_error_bars_name
+ specified in the specification file.
+
+ :param plot: Plot to generate.
+ :param input_data: Data to process.
+ :type plot: pandas.Series
+ :type input_data: InputData
+ """
+
+ # Transform the data
+ logging.info(
+ f" Creating data set for the {plot.get(u'type', u'')} "
+ f"{plot.get(u'title', u'')}."
+ )
+ data = input_data.filter_tests_by_name(
+ plot,
+ params=[u"result", u"parent", u"tags", u"type"])
+ if data is None:
+ logging.error(u"No data.")
+ return
+
+ # Prepare the data for the plot
+ data_x = list()
+ data_names = list()
+ data_y_avg = list()
+ data_y_stdev = list()
+ data_y_max = 0
+ hover_info = list()
+ idx = 1
+ for item in plot.get(u"include", tuple()):
+ reg_ex = re.compile(str(item).lower())
+ for job in data:
+ for build in job:
+ for test_id, test in build.iteritems():
+ if not re.match(reg_ex, str(test_id).lower()):
+ continue
+ try:
+ data_x.append(idx)
+ name = re.sub(REGEX_NIC, u'', test[u'parent'].lower().
+ replace(u'-mrr', u'').
+ replace(u'2n1l-', u''))
+ data_names.append(f"{idx}. {name}")
+ data_y_avg.append(
+ round(test[u"result"][u"receive-rate"], 3)
+ )
+ data_y_stdev.append(
+ round(test[u"result"][u"receive-stdev"], 3)
+ )
+ hover_info.append(
+ f"{data_names[-1]}<br>"
+ f"average [Gbps]: {data_y_avg[-1]}<br>"
+ f"stdev [Gbps]: {data_y_stdev[-1]}"
+ )
+ if data_y_avg[-1] + data_y_stdev[-1] > data_y_max:
+ data_y_max = data_y_avg[-1] + data_y_stdev[-1]
+ idx += 1
+ except (KeyError, TypeError):
+ pass
+
+ # Add plot traces
+ traces = list()
+ for idx in range(len(data_x)):
+ traces.append(
+ plgo.Scatter(
+ x=[data_x[idx], ],
+ y=[data_y_avg[idx], ],
+ error_y=dict(
+ type=u"data",
+ array=[data_y_stdev[idx], ],
+ visible=True
+ ),
+ name=data_names[idx],
+ mode=u"markers",
+ text=hover_info[idx],
+ hoverinfo=u"text"
+ )
+ )
+
+ try:
+ # Create plot
+ layout = deepcopy(plot[u"layout"])
+ if layout.get(u"title", None):
+ layout[u"title"] = f"<b>Throughput:</b> {layout[u'title']}"
+ if data_y_max:
+ layout[u"yaxis"][u"range"] = [0, int(data_y_max) + 1]
+ plpl = plgo.Figure(data=traces, layout=layout)
+
+ # Export Plot
+ logging.info(f" Writing file {plot[u'output-file']}.html.")
+ ploff.plot(
+ plpl,
+ show_link=False,
+ auto_open=False,
+ filename=f"{plot[u'output-file']}.html"
+ )
+ except PlotlyError as err:
+ logging.error(
+ f" Finished with error: {repr(err)}".replace(u"\n", u" ")
+ )
+ return
+
+
def plot_tsa_name(plot, input_data):
"""Generate the plot(s) with algorithm:
plot_tsa_name
diff --git a/resources/tools/presentation/input_data_parser.py b/resources/tools/presentation/input_data_parser.py
index 268a73620f..6742439be6 100644
--- a/resources/tools/presentation/input_data_parser.py
+++ b/resources/tools/presentation/input_data_parser.py
@@ -268,7 +268,7 @@ class ExecutionChecker(ResultVisitor):
r'tx\s(\d*),\srx\s(\d*)'
)
REGEX_BMRR = re.compile(
- r'Maximum Receive Rate trial results .*: \[(.*)\]'
+ r'.*trial results.*: \[(.*)\]'
)
REGEX_RECONF_LOSS = re.compile(
r'Packets lost due to reconfig: (\d*)'
@@ -1177,7 +1177,8 @@ class ExecutionChecker(ResultVisitor):
if groups is not None:
items_str = groups.group(1)
items_float = [
- float(item.strip()) for item in items_str.split(",")
+ float(item.strip().replace(u"'", u""))
+ for item in items_str.split(",")
]
# Use whole list in CSIT-1180.
stats = jumpavg.AvgStdevStats.for_runs(items_float)
diff --git a/resources/tools/presentation/specification.yaml b/resources/tools/presentation/specification.yaml
index 035fe1f942..669d13fde2 100644
--- a/resources/tools/presentation/specification.yaml
+++ b/resources/tools/presentation/specification.yaml
@@ -382,6 +382,10 @@
- 104 # rls2101.rel NDRPDR reconf iter env 6
- 106 # rls2101.rel NDRPDR reconf iter env 6
+ plot-vpp-gso-2n-skx:
+ csit-vpp-perf-report-iterative-2101-2n-skx:
+ - 129 # rls2101.rel MRR GSO iter env 6
+
plot-dpdk-throughput-latency-2n-skx:
csit-dpdk-perf-report-iterative-2101-2n-skx:
- 11 # rls2101 NDRPDR iter env 6
@@ -432,6 +436,10 @@
csit-vpp-perf-report-iterative-2101-2n-zn2:
- 40 # rls2101.rel NDRPDR iter RND env 6
+ plot-vpp-gso-2n-zn2:
+ csit-vpp-perf-report-iterative-2101-2n-zn2:
+ - 56 # rls2101.rel MRR GSO iter env 6
+
plot-dpdk-throughput-latency-2n-zn2:
csit-dpdk-perf-report-iterative-2101-2n-zn2:
- 11 # rls2101 NDRPDR iter env 6
@@ -545,6 +553,10 @@
- 58 # rls2101.rel soak env 6
- 61 # rls2101.rel soak env 6
+ plot-vpp-gso-2n-clx:
+ csit-vpp-perf-report-iterative-2101-2n-clx:
+ - 159 # rls2101.rel MRR GSO iter env 6
+
plot-dpdk-throughput-latency-2n-clx:
csit-dpdk-perf-report-iterative-2101-2n-clx:
- 12 # rls2101 NDRPDR iter env 6
@@ -3073,6 +3085,61 @@
paper_bgcolor: "white"
plot_bgcolor: "white"
+ plot-scatter-error-bars-gbps:
+ titlefont:
+ size: 16
+ xaxis:
+ title: "<b>Test Cases [Index]</b>"
+ titlefont:
+ size: 14
+ autorange: True
+ fixedrange: False
+ gridcolor: "rgb(230, 230, 230)"
+ linecolor: "rgb(220, 220, 220)"
+ linewidth: 1
+ showgrid: True
+ showline: True
+ showticklabels: True
+ tickcolor: "rgb(220, 220, 220)"
+ tickmode: "linear"
+ tickfont:
+ size: 14
+ zeroline: False
+ yaxis:
+ title: "<b>Traffic Throughput [Gbps]</b>"
+ titlefont:
+ size: 14
+ gridcolor: "rgb(230, 230, 230)"
+ hoverformat: ".4r"
+ tickformat: ".3r"
+ linecolor: "rgb(220, 220, 220)"
+ linewidth: 1
+ showgrid: True
+ showline: True
+ showticklabels: True
+ tickcolor: "rgb(220, 220, 220)"
+ tickfont:
+ size: 14
+ zeroline: False
+ range: [0,10]
+ autosize: False
+ margin:
+ t: 50
+ b: 0
+ l: 80
+ r: 20
+ showlegend: True
+ legend:
+ orientation: "h"
+ font:
+ size: 14
+ width: 700
+ height: 900
+ paper_bgcolor: "#fff"
+ plot_bgcolor: "#fff"
+ hoverlabel:
+ namelength: -1
+
- type: "static"
src-path: "{DIR[RST]}"
dst-path: "{DIR[WORKING,SRC]}"
@@ -3410,6 +3477,7 @@
- 106 # rls2101.rel NDRPDR reconf iter env 6
- 68 # rls2101.rel soak env 6
- 73 # rls2101.rel soak env 6
+ - 129 # rls2101.rel MRR GSO iter env 6
csit-vpp-perf-report-coverage-2101-2n-skx:
- 1 # rls2101.rel NDRPDR cov env 6 2n-skx-ip4-00
- 2 # rls2101.rel NDRPDR cov env 6 2n-skx-ip4-01
@@ -3552,6 +3620,7 @@
- 110 # rls2101.rel NDRPDR reconf iter env 6
- 58 # rls2101.rel soak env 6
- 61 # rls2101.rel soak env 6
+ - 159 # rls2101.rel MRR GSO iter env 6
csit-vpp-perf-report-coverage-2101-2n-clx:
- 1 # rls2101.rel NDRPDR cov env 6 2n-clx-ip4-00
- 2 # rls2101.rel NDRPDR cov env 6 2n-clx-ip4-01
@@ -3613,6 +3682,7 @@
- 50 # rls2101.rel NDRPDR iter RND env 6
- 51 # rls2101.rel NDRPDR iter RND env 6
- 52 # rls2101.rel NDRPDR iter RND env 6
+ - 56 # rls2101.rel MRR GSO iter env 6
csit-vpp-perf-report-coverage-2101-2n-zn2:
- 1 # rls2101.rel NDRPDR cov env 6 2n-zn2-ip4-00
- 2 # rls2101.rel NDRPDR cov env 6 2n-zn2-ip4-01
@@ -4056,8 +4126,8 @@
format:
html:
- full
- pdf:
- - minimal
+# pdf:
+# - minimal
################################################################################
### T A B L E S ###
@@ -25567,3 +25637,131 @@
filter: "'1T1C' and 'NIC_Intel-XL710'"
layout:
layout: "plot-hdrh-latency-percentile-x-log"
+
+###############################################################################
+
+- type: "plot"
+ title: "Throughput: 2n-skx-128kb-1t1c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-128kb-1t1c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-skx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-skx-128kb-1t1c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-128kb-2t2c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-128kb-2t2c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-skx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-skx-128kb-2t2c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-128kb-4t4c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-128kb-4t4c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-skx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-skx-128kb-4t4c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-128kb-1t1c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-128kb-1t1c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-clx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-clx-128kb-1t1c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-128kb-2t2c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-128kb-2t2c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-clx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-clx-128kb-2t2c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-128kb-4t4c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-128kb-4t4c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-clx"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-clx-128kb-4t4c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-128kb-1t1c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-128kb-1t1c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-1t1c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-zn2-128kb-1t1c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-128kb-2t2c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-128kb-2t2c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-2t2c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-zn2-128kb-2t2c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-128kb-4t4c-ip4routing-iperf3"
+ algorithm: "plot_mrr_error_bars_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-128kb-4t4c-ip4routing-iperf3"
+ data: "plot-vpp-gso-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Tap-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2tap-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Gso-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-gso-iperf3-mrr"
+ - "Tests.Vpp.Perf.Gso.2N1L-10Ge2P1X710-Ethip4-Ip4Base-2Vhost-Iperf3-Mrr.128KB-4t4c-ethip4-ip4base-2vhost-iperf3-mrr"
+ layout:
+ title: "2n-zn2-128kb-4t4c-ip4routing-iperf3"
+ layout: "plot-scatter-error-bars-gbps"