aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--GPL/tools/trex/trex_astf_profile.py247
-rw-r--r--GPL/tools/trex/trex_astf_stop.py13
-rw-r--r--GPL/tools/trex/trex_stl_profile.py96
-rw-r--r--GPL/tools/trex/trex_stl_stop.py15
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py117
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h.py8
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py117
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h.py8
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py117
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h.py8
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py117
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h.py8
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py117
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h.py8
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h-pps.py140
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h.py26
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h-pps.py140
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h.py26
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h-pps.py140
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h.py26
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h-pps.py140
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h.py26
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h-pps.py140
-rw-r--r--GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h.py26
-rw-r--r--docs/job_specs/mlr_weekly/vpp-2n-zn2.md544
-rw-r--r--docs/job_specs/mrr_daily/vpp-2n-zn2.md544
-rw-r--r--docs/job_specs/mrr_weekly/dpdk-2n-zn2.md26
-rw-r--r--docs/job_specs/report_coverage/2n-clx/ip4-01.md8
-rw-r--r--docs/job_specs/report_coverage/2n-clx/ip4-05.md451
-rw-r--r--docs/job_specs/report_coverage/2n-clx/ip4-06.md225
-rw-r--r--docs/job_specs/report_coverage/2n-clx/ip4-07.md136
-rw-r--r--docs/job_specs/report_coverage/2n-skx/ip4-05.md231
-rw-r--r--docs/job_specs/report_coverage/2n-skx/ip4-06.md225
-rw-r--r--docs/job_specs/report_coverage/2n-skx/ip4-07.md136
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/dpdk-00.md50
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-00.md281
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-01.md86
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-02.md66
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-03.md66
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-04.md66
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip4-05.md146
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip6-00.md141
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/ip6-01.md121
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/l2-00.md221
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/l2-01.md121
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/lb-00.md86
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/memif-00.md106
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/vhost-00.md146
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/vhost-01.md106
-rw-r--r--docs/job_specs/report_coverage/2n-zn2/vts-00.md86
-rw-r--r--docs/job_specs/report_iterative/2n-clx/nfv-density-mrr-00.md8
-rw-r--r--docs/job_specs/report_iterative/2n-clx/vpp-mlr-00.md222
-rw-r--r--docs/job_specs/report_iterative/2n-clx/vpp-mrr-00.md232
-rw-r--r--docs/job_specs/report_iterative/2n-dnv/vpp-mrr-00.md8
-rw-r--r--docs/job_specs/report_iterative/2n-skx/nfv-density-mrr-00.md8
-rw-r--r--docs/job_specs/report_iterative/2n-skx/vpp-mlr-00.md205
-rw-r--r--docs/job_specs/report_iterative/2n-skx/vpp-mrr-00.md207
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/dpdk-mlr-00.md50
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/dpdk-mrr-00.md26
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/nfv-density-mlr-00.md143
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/nfv-density-mrr-00.md143
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/reconf-00.md41
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/soak-00.md64
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/vpp-mlr-00.md536
-rw-r--r--docs/job_specs/report_iterative/2n-zn2/vpp-mrr-00.md536
-rw-r--r--docs/job_specs/report_iterative/3n-dnv/vpp-mrr-00.md6
-rw-r--r--docs/job_specs/report_iterative/3n-hsw/vpp-mrr-00.md8
-rw-r--r--docs/job_specs/report_iterative/3n-skx/vpp-mrr-00.md8
-rw-r--r--docs/job_specs/report_iterative/3n-tsh/vpp-mrr-00.md10
-rw-r--r--docs/lab/testbed_specifications.md140
-rw-r--r--docs/lab/testbeds_sm_zn2_hw_bios_cfg.md634
-rw-r--r--docs/report/detailed_test_results/dpdk_performance_results/index.rst1
-rw-r--r--docs/report/detailed_test_results/dpdk_performance_results_2n_zn2/index.rst11
-rw-r--r--docs/report/detailed_test_results/vpp_mrr_results/index.rst1
-rw-r--r--docs/report/detailed_test_results/vpp_mrr_results_2n_zn2/index.rst11
-rw-r--r--docs/report/detailed_test_results/vpp_performance_results/index.rst1
-rw-r--r--docs/report/detailed_test_results/vpp_performance_results_2n_zn2/index.rst11
-rw-r--r--docs/report/dpdk_performance_tests/csit_release_notes.rst3
-rw-r--r--docs/report/dpdk_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst3
-rw-r--r--docs/report/dpdk_performance_tests/packet_latency/2n-zn2-xxv710.rst78
-rw-r--r--docs/report/dpdk_performance_tests/packet_latency/index.rst5
-rw-r--r--docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-x710.rst127
-rw-r--r--docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-xxv710.rst127
-rw-r--r--docs/report/dpdk_performance_tests/packet_throughput_graphs/index.rst3
-rw-r--r--docs/report/introduction/methodology.rst7
-rw-r--r--docs/report/introduction/methodology_data_plane_throughput/methodology_data_plane_throughput.rst3
-rw-r--r--docs/report/introduction/methodology_dut_state.rst150
-rw-r--r--docs/report/introduction/methodology_nat44.rst368
-rw-r--r--docs/report/introduction/methodology_trex_traffic_generator.rst233
-rw-r--r--docs/report/introduction/physical_testbeds.rst44
-rw-r--r--docs/report/introduction/report_history.rst55
-rw-r--r--docs/report/introduction/test_environment_sut_calib_zn2.rst118
-rw-r--r--docs/report/introduction/test_environment_sut_meltspec_zn2.rst331
-rw-r--r--docs/report/introduction/test_environment_tg.rst12
-rw-r--r--docs/report/introduction/testbed-2n-zn2.svg1093
-rw-r--r--docs/report/test_configuration/vpp_mrr_configuration/index.rst1
-rw-r--r--docs/report/test_configuration/vpp_mrr_configuration_2n_zn2/index.rst11
-rw-r--r--docs/report/test_configuration/vpp_performance_configuration/index.rst1
-rw-r--r--docs/report/test_configuration/vpp_performance_configuration_2n_zn2/index.rst11
-rw-r--r--docs/report/test_operational_data/vpp_performance_operational_data/index.rst1
-rw-r--r--docs/report/test_operational_data/vpp_performance_operational_data_2n_zn2/index.rst11
-rw-r--r--docs/report/vpp_performance_tests/comparisons/index.rst2
-rw-r--r--docs/report/vpp_performance_tests/csit_release_notes.rst20
-rw-r--r--docs/report/vpp_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst3
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/container_memif-2n-zn2-xxv710.rst194
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/container_memif.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/index.rst4
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/ip4-2n-zn2-xxv710.rst501
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/ip4.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/ip6-2n-zn2-xxv710.rst235
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/ip6.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/l2-2n-clx-xxv710.rst40
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/l2-2n-skx-xxv710.rst40
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/l2-2n-zn2-xxv710.rst355
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/l2.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/nat44-2n-clx-xxv710.rst69
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/nat44-2n-skx-xxv710.rst69
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/vm_vhost-2n-zn2-xxv710.rst362
-rw-r--r--docs/report/vpp_performance_tests/packet_latency/vm_vhost.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-cx556a.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-xxv710.rst114
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif.rst2
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/index.rst1
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-cx556a.rst157
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-x710.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-xxv710.rst286
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst3
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-cx556a.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-x710.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-xxv710.rst115
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst3
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-cx556a.rst114
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-x710.rst114
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-xxv710.rst200
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst3
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-clx-xxv710.rst287
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-skx-xxv710.rst287
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir.rst12
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/nat44.rst8
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-cx556a.rst114
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-xxv710.rst200
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst2
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/vts-2n-zn2-xxv710.rst71
-rw-r--r--docs/report/vpp_performance_tests/packet_throughput_graphs/vts.rst1
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-cx556a.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-xxv710.rst114
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif.rst2
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/index.rst1
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-cx556a.rst157
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-x710.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-xxv710.rst286
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4.rst3
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-cx556a.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-x710.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-xxv710.rst114
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6.rst3
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-cx556a.rst114
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-x710.rst115
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-xxv710.rst200
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2.rst3
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-clx-xxv710.rst287
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-skx-xxv710.rst287
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-clx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-skx.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir.rst12
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44.rst8
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-cx556a.rst114
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-xxv710.rst200
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost.rst2
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts-2n-zn2-xxv710.rst71
-rw-r--r--docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts.rst1
-rw-r--r--docs/tag_documentation.rst101
-rw-r--r--resources/api/vpp/supported_crcs.yaml4
-rw-r--r--resources/libraries/bash/entry/bootstrap_verify_perf.sh4
-rwxr-xr-xresources/libraries/bash/entry/bootstrap_vpp_device.sh4
-rw-r--r--resources/libraries/bash/entry/per_patch_device.sh6
-rw-r--r--resources/libraries/bash/entry/per_patch_perf.sh8
-rw-r--r--resources/libraries/bash/function/branch.sh6
-rw-r--r--resources/libraries/bash/function/common.sh165
-rw-r--r--resources/libraries/bash/function/device.sh14
-rw-r--r--resources/libraries/bash/function/per_patch.sh31
-rw-r--r--resources/libraries/python/Constants.py3
-rw-r--r--resources/libraries/python/MLRsearch/AbstractMeasurer.py4
-rw-r--r--resources/libraries/python/MLRsearch/AbstractSearchAlgorithm.py15
-rw-r--r--resources/libraries/python/MLRsearch/MultipleLossRatioSearch.py36
-rw-r--r--resources/libraries/python/MLRsearch/ReceiveRateMeasurement.py66
-rw-r--r--resources/libraries/python/NATUtil.py36
-rw-r--r--resources/libraries/python/PLRsearch/PLRsearch.py27
-rw-r--r--resources/libraries/python/PapiExecutor.py12
-rw-r--r--resources/libraries/python/TrafficGenerator.py960
-rw-r--r--resources/libraries/python/autogen/Regenerator.py3
-rw-r--r--resources/libraries/robot/ip/nat.robot24
-rw-r--r--resources/libraries/robot/performance/performance_actions.robot92
-rw-r--r--resources/libraries/robot/performance/performance_display.robot240
-rw-r--r--resources/libraries/robot/performance/performance_limits.robot153
-rw-r--r--resources/libraries/robot/performance/performance_utils.robot922
-rw-r--r--resources/libraries/robot/performance/performance_vars.robot522
-rw-r--r--resources/libraries/robot/shared/default.robot21
-rw-r--r--resources/libraries/robot/shared/test_teardown.robot20
-rw-r--r--resources/tools/presentation/conf.py7
-rw-r--r--resources/tools/presentation/generator_alerts.py11
-rw-r--r--resources/tools/presentation/generator_plots.py168
-rw-r--r--resources/tools/presentation/generator_report.py6
-rw-r--r--resources/tools/presentation/input_data_parser.py121
-rwxr-xr-xresources/tools/presentation/run_report.sh2
-rw-r--r--resources/tools/presentation/specification.yaml4401
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.16.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.17.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.18.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.20.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.21.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.22.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.24.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.25.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.26.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.28.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.29.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.30.yaml18
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.32.yaml18
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.33.yaml18
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.34.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.35.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.36.yaml10
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.37.yaml10
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.39.yaml24
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.40.yaml24
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.44.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.45.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.46.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.47.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.48.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.49.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml35
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml35
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.52.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.53.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.54.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.55.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.58.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.59.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.60.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.65.yaml21
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.66.yaml21
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.67.yaml21
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.68.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.69.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.70.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.71.yaml19
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.10.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.11.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.12.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.13.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.14.yaml25
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.15.yaml25
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.16.yaml21
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.17.yaml59
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml12
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml26
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml26
-rw-r--r--resources/tools/testbed-setup/ansible/inventories/lf_inventory/hosts5
-rw-r--r--resources/tools/testbed-setup/ansible/nomad.yaml4
-rw-r--r--resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml59
-rw-r--r--resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_containers.yaml21
-rw-r--r--resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_process.yaml1
-rw-r--r--resources/tools/testbed-setup/ansible/roles/cleanup/tasks/sut.yaml24
-rw-r--r--resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml1
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/defaults/main.yaml110
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/handlers/main.yaml23
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/meta/main.yaml9
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/tasks/main.yaml174
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/base.hcl.j243
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/consul.hcl.j212
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/consul_systemd.service.j221
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/ports.hcl.j29
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/services.json.j213
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/templates/telemetry.hcl.j23
-rw-r--r--resources/tools/testbed-setup/ansible/roles/consul/vars/main.yaml5
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/Dockerfile61
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/badkeypub1
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/sshconfig3
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/wrapdocker113
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_shim_image/tasks/main.yaml32
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile173
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf24
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml27
-rw-r--r--resources/tools/testbed-setup/ansible/roles/docker/defaults/main.yaml15
-rw-r--r--resources/tools/testbed-setup/ansible/roles/docker/meta/main.yaml4
-rw-r--r--resources/tools/testbed-setup/ansible/roles/docker/tasks/main.yaml4
-rw-r--r--resources/tools/testbed-setup/ansible/roles/docker/tasks/ubuntu_bionic.yaml4
-rw-r--r--resources/tools/testbed-setup/ansible/roles/nomad/defaults/main.yaml1
-rw-r--r--resources/tools/testbed-setup/ansible/roles/nomad/templates/client.hcl.j29
-rw-r--r--resources/tools/testbed-setup/ansible/roles/nomad/templates/nomad_systemd.service.j22
-rw-r--r--resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml8
-rw-r--r--resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/roles/trex/defaults/main.yaml6
-rw-r--r--resources/tools/testbed-setup/ansible/roles/trex/tasks/deploy_block.yaml55
-rw-r--r--resources/tools/testbed-setup/ansible/roles/trex/tasks/main.yaml79
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/sut.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/tg.yaml8
-rw-r--r--resources/tools/testbed-setup/ansible/tg_aws.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/tg_azure.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/vault.yml1289
-rw-r--r--resources/tools/testbed-setup/ansible/vpp_device.yaml12
-rw-r--r--terraform-ci-infra/1n_nmd/alertmanager/conf/nomad/alertmanager.hcl333
-rw-r--r--terraform-ci-infra/1n_nmd/alertmanager/main.tf37
-rw-r--r--terraform-ci-infra/1n_nmd/alertmanager/variables.tf84
-rw-r--r--terraform-ci-infra/1n_nmd/exporter/conf/nomad/exporter.hcl587
-rw-r--r--terraform-ci-infra/1n_nmd/exporter/main.tf64
-rw-r--r--terraform-ci-infra/1n_nmd/exporter/variables.tf76
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_http.json1030
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_icmp.json368
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/consul.json1438
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/docker_cadvisor.json2040
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/node_exporter.json13696
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/nomad.json869
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/nomad/grafana.hcl331
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/conf/prometheus.json3055
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/main.tf24
-rw-r--r--terraform-ci-infra/1n_nmd/grafana/variables.tf66
-rw-r--r--terraform-ci-infra/1n_nmd/main.tf185
-rw-r--r--terraform-ci-infra/1n_nmd/minio/outputs.tf4
-rw-r--r--terraform-ci-infra/1n_nmd/prometheus/conf/nomad/prometheus.hcl569
-rw-r--r--terraform-ci-infra/1n_nmd/prometheus/main.tf37
-rw-r--r--terraform-ci-infra/1n_nmd/prometheus/variables.tf84
-rw-r--r--terraform-ci-infra/1n_nmd/terraform.tfstate824
-rw-r--r--terraform-ci-infra/1n_nmd/terraform.tfstate.backup826
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl169
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/main.tf19
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/variables.tf31
-rw-r--r--tests/vpp/device/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-dev.robot7
-rw-r--r--tests/vpp/device/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-dev.robot3
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot8
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot8
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr.robot)81
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr.robot)81
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr.robot)81
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr.robot)81
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr.robot)81
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot67
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot71
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot67
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot71
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr.robot)69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr.robot)69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr.robot)69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr.robot)69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot (renamed from tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr.robot)69
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot116
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot4
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot4
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot4
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot4
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot59
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot8
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot59
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot8
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot61
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot12
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot59
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot140
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot8
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot61
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot12
-rw-r--r--tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-l3dsr-ndrpdr.robot2
-rw-r--r--tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-maglev-ndrpdr.robot2
-rw-r--r--topologies/available/lf_2n_zn2_testbed210.yaml155
-rw-r--r--topologies/available/lf_3n_tsh_testbed33.yaml4
487 files changed, 57558 insertions, 6107 deletions
diff --git a/GPL/tools/trex/trex_astf_profile.py b/GPL/tools/trex/trex_astf_profile.py
index 0542486105..63831e4bf4 100644
--- a/GPL/tools/trex/trex_astf_profile.py
+++ b/GPL/tools/trex/trex_astf_profile.py
@@ -15,7 +15,7 @@
"""This module gets T-Rex advanced stateful (astf) traffic profile together
with other parameters, reads the profile and sends the traffic. At the end, it
-measures the packet loss and latency.
+parses for various counters.
"""
import argparse
@@ -60,8 +60,16 @@ def fmt_latency(lat_min, lat_avg, lat_max, hdrh):
def simple_burst(
- profile_file, duration, framesize, mult, warmup_time, port_0, port_1,
- latency, async_start=False, traffic_directions=2):
+ profile_file,
+ duration,
+ framesize,
+ multiplier,
+ port_0,
+ port_1,
+ latency,
+ async_start=False,
+ traffic_directions=2,
+ ):
"""Send traffic and measure packet loss and latency.
Procedure:
@@ -70,20 +78,36 @@ def simple_burst(
- resets the ports,
- removes all existing streams,
- adds streams from the traffic profile to the ports,
- - if the warm-up time is more than 0, sends the warm-up traffic, reads the
- statistics,
- clears the statistics from the client,
- starts the traffic,
- waits for the defined time (or runs forever if async mode is defined),
- - stops the traffic,
+ - explicitly stops the traffic,
- reads and displays the statistics and
- disconnects from the client.
+ Duration details:
+ Contrary to stateless mode, ASTF profiles typically limit the number
+ of flows/transactions that can happen.
+ The caller is expected to set the duration parameter accordingly to
+ this limit and multiplier, including any overheads.
+ See *_traffic_duration output fields for TRex's measurement
+ of the real traffic duration (should be without any inactivity overheads).
+ If traffic has not ended by the final time, the traffic
+ is stopped explicitly, counters reflect the state just after the stop.
+
+ TODO: Support tests which focus only on some transaction phases,
+ e.g. TCP tests ignoring init and teardown separated by delays.
+ Currently, approximated time measures the whole traffic duration.
+
:param profile_file: A python module with T-rex traffic profile.
- :param duration: Duration of traffic run in seconds (-1=infinite).
+ :param duration: Expected duration for all transactions to finish,
+ assuming only tolerable duration stretching happens.
+ This includes later start of later transactions
+ (according to TPS multiplier) and expected duration of each transaction.
+ Critically, this also includes any delay TRex shows when starting
+ traffic (but not the similar delay during stopping).
:param framesize: Frame size.
- :param mult: Multiplier of profile CPS.
- :param warmup_time: Traffic warm-up time in seconds, 0 = disable.
+ :param multiplier: Multiplier of profile CPS.
:param port_0: Port 0 on the traffic generator.
:param port_1: Port 1 on the traffic generator.
:param latency: With latency stats.
@@ -92,8 +116,7 @@ def simple_burst(
:type profile_file: str
:type duration: float
:type framesize: int or str
- :type mult: int
- :type warmup_time: float
+ :type multiplier: int
:type port_0: int
:type port_1: int
:type latency: bool
@@ -101,7 +124,7 @@ def simple_burst(
:type traffic_directions: int
"""
client = None
- total_rcvd = 0
+ total_received = 0
total_sent = 0
lost_a = 0
lost_b = 0
@@ -111,7 +134,6 @@ def simple_burst(
lat_b_hist = u""
l7_data = u""
stats = dict()
- stats_sampling = 1.0
approximated_duration = 0
# Read the profile.
@@ -139,37 +161,6 @@ def simple_burst(
if traffic_directions > 1:
ports.append(port_1)
- # Warm-up phase.
- if warmup_time > 0:
- # Clear the stats before injecting.
- client.clear_stats()
- # Choose CPS and start traffic.
- client.start(mult=mult, duration=warmup_time)
- time_start = time.monotonic()
-
- # Read the stats after the warmup duration (no sampling needed).
- time.sleep(warmup_time)
- stats[time.monotonic()-time_start] = client.get_stats()
-
- if client.get_warnings():
- for warning in client.get_warnings():
- print(warning)
-
- client.reset()
-
- print(u"##### Warmup Statistics #####")
- print(json.dumps(stats, indent=4, separators=(u",", u": ")))
-
- # TODO: check stats format
- stats = stats[sorted(stats.keys())[-1]]
- lost_a = stats[port_0][u"opackets"] - stats[port_1][u"ipackets"]
- if traffic_directions > 1:
- lost_b = stats[port_1][u"opackets"] - stats[port_0][u"ipackets"]
-
- print(f"packets lost from {port_0} --> {port_1}: {lost_a} pkts")
- if traffic_directions > 1:
- print(f"packets lost from {port_1} --> {port_0}: {lost_b} pkts")
-
# Clear the stats before injecting.
lost_a = 0
lost_b = 0
@@ -177,21 +168,15 @@ def simple_burst(
# Choose CPS and start traffic.
client.start(
- mult=mult, duration=duration, nc=True,
- latency_pps=mult if latency else 0, client_mask=2**len(ports)-1
+ mult=multiplier,
+ # Increase the input duration slightly,
+ # to ensure it does not end before sleep&stop below happens.
+ duration=duration + 0.1 if duration > 0 else duration,
+ nc=True,
+ latency_pps=int(multiplier) if latency else 0,
+ client_mask=2**len(ports)-1,
)
time_start = time.monotonic()
- # t-rex starts the packet flow with the delay
- stats[time.monotonic()-time_start] = client.get_stats(ports=[port_0])
- while stats[sorted(stats.keys())[-1]][port_0][u"opackets"] == 0:
- stats.clear()
- time.sleep(0.001)
- stats[time.monotonic() - time_start] = \
- client.get_stats(ports=[port_0])
- else:
- trex_start_time = list(sorted(stats.keys()))[-1]
- time_start += trex_start_time
- stats.clear()
if async_start:
# For async stop, we need to export the current snapshot.
@@ -201,26 +186,27 @@ def simple_burst(
xsnap1 = client.ports[port_1].get_xstats().reference_stats
print(f"Xstats snapshot 1: {xsnap1!r}")
else:
- time.sleep(
- stats_sampling if stats_sampling < duration else duration
+ time.sleep(duration)
+
+ # Do not block yet, the existing transactions may take long time
+ # to finish. We need an action that is almost reset(),
+ # but without clearing stats.
+ client.stop(block=False)
+ client.stop_latency()
+ client.remove_rx_queue(client.get_all_ports())
+ # Now we can wait for the real traffic stop.
+ client.stop(block=True)
+
+ # Read the stats after the traffic stopped (or time up).
+ stats[time.monotonic() - time_start] = client.get_stats(
+ ports=ports
)
- # Do not block until done.
- while client.is_traffic_active(ports=ports):
- # Sample the stats.
- stats[time.monotonic()-time_start] = \
- client.get_stats(ports=ports)
- time.sleep(
- stats_sampling if stats_sampling < duration else duration
- )
- else:
- # Read the stats after the test
- stats[time.monotonic()-time_start] = \
- client.get_stats(ports=ports)
if client.get_warnings():
for warning in client.get_warnings():
print(warning)
+ # Now finish the complete reset.
client.reset()
print(u"##### Statistics #####")
@@ -253,8 +239,10 @@ def simple_burst(
if traffic_directions > 1:
total_sent = \
stats[port_0][u"opackets"] + stats[port_1][u"opackets"]
- total_rcvd = \
+ total_received = \
stats[port_0][u"ipackets"] + stats[port_1][u"ipackets"]
+ client_sent = stats[port_0][u"opackets"]
+ client_received = stats[port_0][u"ipackets"]
client_stats = stats[u"traffic"][u"client"]
server_stats = stats[u"traffic"][u"server"]
# Some zero counters are not sent
@@ -263,109 +251,112 @@ def simple_burst(
c_act_flows = client_stats[u"m_active_flows"]
c_est_flows = client_stats[u"m_est_flows"]
c_traffic_duration = client_stats.get(u"m_traffic_duration", 0)
- l7_data = f"client_active_flows={c_act_flows}, "
- l7_data += f"client_established_flows={c_est_flows}, "
- l7_data += f"client_traffic_duration={c_traffic_duration}, "
+ l7_data = f"client_active_flows={c_act_flows}; "
+ l7_data += f"client_established_flows={c_est_flows}; "
+ l7_data += f"client_traffic_duration={c_traffic_duration}; "
# Possible errors
# Too many packets in NIC rx queue
c_err_rx_throttled = client_stats.get(u"err_rx_throttled", 0)
- l7_data += f"client_err_rx_throttled={c_err_rx_throttled}, "
+ l7_data += f"client_err_rx_throttled={c_err_rx_throttled}; "
# Number of client side flows that were not opened
# due to flow-table overflow
c_err_nf_throttled = client_stats.get(u"err_c_nf_throttled", 0)
- l7_data += f"client_err_nf_throttled={c_err_nf_throttled}, "
+ l7_data += f"client_err_nf_throttled={c_err_nf_throttled}; "
# Too many flows
c_err_flow_overflow = client_stats.get(u"err_flow_overflow", 0)
- l7_data += f"client_err_flow_overflow={c_err_flow_overflow}, "
+ l7_data += f"client_err_flow_overflow={c_err_flow_overflow}; "
# Server
s_act_flows = server_stats[u"m_active_flows"]
s_est_flows = server_stats[u"m_est_flows"]
s_traffic_duration = server_stats.get(u"m_traffic_duration", 0)
- l7_data += f"server_active_flows={s_act_flows}, "
- l7_data += f"server_established_flows={s_est_flows}, "
- l7_data += f"server_traffic_duration={s_traffic_duration}, "
+ l7_data += f"server_active_flows={s_act_flows}; "
+ l7_data += f"server_established_flows={s_est_flows}; "
+ l7_data += f"server_traffic_duration={s_traffic_duration}; "
# Possible errors
# Too many packets in NIC rx queue
s_err_rx_throttled = server_stats.get(u"err_rx_throttled", 0)
- l7_data += f"client_err_rx_throttled={s_err_rx_throttled}, "
+ l7_data += f"client_err_rx_throttled={s_err_rx_throttled}; "
if u"udp" in profile_file:
# Client
# Established connections
c_udp_connects = client_stats.get(u"udps_connects", 0)
- l7_data += f"client_udp_connects={c_udp_connects}, "
+ l7_data += f"client_udp_connects={c_udp_connects}; "
# Closed connections
c_udp_closed = client_stats.get(u"udps_closed", 0)
- l7_data += f"client_udp_closed={c_udp_closed}, "
+ l7_data += f"client_udp_closed={c_udp_closed}; "
# Sent bytes
c_udp_sndbyte = client_stats.get(u"udps_sndbyte", 0)
- l7_data += f"client_udp_tx_bytes={c_udp_sndbyte}, "
+ l7_data += f"client_udp_tx_bytes={c_udp_sndbyte}; "
# Sent packets
c_udp_sndpkt = client_stats.get(u"udps_sndpkt", 0)
- l7_data += f"client_udp_tx_packets={c_udp_sndpkt}, "
+ l7_data += f"client_udp_tx_packets={c_udp_sndpkt}; "
# Received bytes
c_udp_rcvbyte = client_stats.get(u"udps_rcvbyte", 0)
- l7_data += f"client_udp_rx_bytes={c_udp_rcvbyte}, "
+ l7_data += f"client_udp_rx_bytes={c_udp_rcvbyte}; "
# Received packets
c_udp_rcvpkt = client_stats.get(u"udps_rcvpkt", 0)
- l7_data += f"client_udp_rx_packets={c_udp_rcvpkt}, "
+ l7_data += f"client_udp_rx_packets={c_udp_rcvpkt}; "
# Keep alive drops
c_udp_keepdrops = client_stats.get(u"udps_keepdrops", 0)
- l7_data += f"client_udp_keep_drops={c_udp_keepdrops}, "
+ l7_data += f"client_udp_keep_drops={c_udp_keepdrops}; "
+ # Client without flow
+ c_err_cwf = client_stats.get(u"err_cwf", 0)
+ l7_data += f"client_err_cwf={c_err_cwf}; "
# Server
# Accepted connections
s_udp_accepts = server_stats.get(u"udps_accepts", 0)
- l7_data += f"server_udp_accepts={s_udp_accepts}, "
+ l7_data += f"server_udp_accepts={s_udp_accepts}; "
# Closed connections
s_udp_closed = server_stats.get(u"udps_closed", 0)
- l7_data += f"server_udp_closed={s_udp_closed}, "
+ l7_data += f"server_udp_closed={s_udp_closed}; "
# Sent bytes
s_udp_sndbyte = server_stats.get(u"udps_sndbyte", 0)
- l7_data += f"server_udp_tx_bytes={s_udp_sndbyte}, "
+ l7_data += f"server_udp_tx_bytes={s_udp_sndbyte}; "
# Sent packets
s_udp_sndpkt = server_stats.get(u"udps_sndpkt", 0)
- l7_data += f"server_udp_tx_packets={s_udp_sndpkt}, "
+ l7_data += f"server_udp_tx_packets={s_udp_sndpkt}; "
# Received bytes
s_udp_rcvbyte = server_stats.get(u"udps_rcvbyte", 0)
- l7_data += f"server_udp_rx_bytes={s_udp_rcvbyte}, "
+ l7_data += f"server_udp_rx_bytes={s_udp_rcvbyte}; "
# Received packets
s_udp_rcvpkt = server_stats.get(u"udps_rcvpkt", 0)
- l7_data += f"server_udp_rx_packets={s_udp_rcvpkt}, "
+ l7_data += f"server_udp_rx_packets={s_udp_rcvpkt}; "
elif u"tcp" in profile_file:
# Client
- # Initiated connections
- c_tcp_connatt = client_stats.get(u"tcps_connattempt", 0)
- l7_data += f"client_tcp_connect_inits={c_tcp_connatt}, "
+ # Connection attempts
+ c_tcp_connattempt = client_stats.get(u"tcps_connattempt", 0)
+ l7_data += f"client_tcp_connattempt={c_tcp_connattempt}; "
# Established connections
c_tcp_connects = client_stats.get(u"tcps_connects", 0)
- l7_data += f"client_tcp_connects={c_tcp_connects}, "
+ l7_data += f"client_tcp_connects={c_tcp_connects}; "
# Closed connections
c_tcp_closed = client_stats.get(u"tcps_closed", 0)
- l7_data += f"client_tcp_closed={c_tcp_closed}, "
+ l7_data += f"client_tcp_closed={c_tcp_closed}; "
# Send bytes
c_tcp_sndbyte = client_stats.get(u"tcps_sndbyte", 0)
- l7_data += f"client_tcp_tx_bytes={c_tcp_sndbyte}, "
+ l7_data += f"client_tcp_tx_bytes={c_tcp_sndbyte}; "
# Received bytes
c_tcp_rcvbyte = client_stats.get(u"tcps_rcvbyte", 0)
- l7_data += f"client_tcp_rx_bytes={c_tcp_rcvbyte}, "
+ l7_data += f"client_tcp_rx_bytes={c_tcp_rcvbyte}; "
# Server
# Accepted connections
s_tcp_accepts = server_stats.get(u"tcps_accepts", 0)
- l7_data += f"server_tcp_accepts={s_tcp_accepts}, "
+ l7_data += f"server_tcp_accepts={s_tcp_accepts}; "
# Established connections
s_tcp_connects = server_stats.get(u"tcps_connects", 0)
- l7_data += f"server_tcp_connects={s_tcp_connects}, "
+ l7_data += f"server_tcp_connects={s_tcp_connects}; "
# Closed connections
s_tcp_closed = server_stats.get(u"tcps_closed", 0)
- l7_data += f"server_tcp_closed={s_tcp_closed}, "
+ l7_data += f"server_tcp_closed={s_tcp_closed}; "
# Sent bytes
s_tcp_sndbyte = server_stats.get(u"tcps_sndbyte", 0)
- l7_data += f"server_tcp_tx_bytes={s_tcp_sndbyte}, "
+ l7_data += f"server_tcp_tx_bytes={s_tcp_sndbyte}; "
# Received bytes
s_tcp_rcvbyte = server_stats.get(u"tcps_rcvbyte", 0)
- l7_data += f"server_tcp_rx_bytes={s_tcp_rcvbyte}, "
+ l7_data += f"server_tcp_rx_bytes={s_tcp_rcvbyte}; "
else:
total_sent = stats[port_0][u"opackets"]
- total_rcvd = stats[port_1][u"ipackets"]
+ total_received = stats[port_1][u"ipackets"]
print(f"packets lost from {port_0} --> {port_1}: {lost_a} pkts")
if traffic_directions > 1:
@@ -383,14 +374,17 @@ def simple_burst(
client.clear_profile()
client.disconnect()
print(
- f"trex_start_time={trex_start_time}, "
- f"cps={mult!r}, total_received={total_rcvd}, "
- f"total_sent={total_sent}, frame_loss={lost_a + lost_b}, "
- f"approximated_duration={approximated_duration}, "
- f"latency_stream_0(usec)={lat_a}, "
- f"latency_stream_1(usec)={lat_b}, "
- f"latency_hist_stream_0={lat_a_hist}, "
- f"latency_hist_stream_1={lat_b_hist}, "
+ f"multiplier={multiplier!r}; "
+ f"total_received={total_received}; "
+ f"total_sent={total_sent}; "
+ f"frame_loss={lost_a + lost_b}; "
+ f"approximated_duration={approximated_duration}; "
+ f"latency_stream_0(usec)={lat_a}; "
+ f"latency_stream_1(usec)={lat_b}; "
+ f"latency_hist_stream_0={lat_a_hist}; "
+ f"latency_hist_stream_1={lat_b_hist}; "
+ f"client_sent={client_sent}; "
+ f"client_received={client_received}; "
f"{l7_data}"
)
@@ -408,21 +402,17 @@ def main():
)
parser.add_argument(
u"-d", u"--duration", required=True, type=float,
- help=u"Duration of traffic run."
+ help=u"Duration of the whole traffic run, including overheads."
)
parser.add_argument(
u"-s", u"--frame_size", required=True,
help=u"Size of a Frame without padding and IPG."
)
parser.add_argument(
- u"-m", u"--mult", required=True, type=int,
+ u"-m", u"--multiplier", required=True, type=float,
help=u"Multiplier of profile CPS."
)
parser.add_argument(
- u"-w", u"--warmup_time", type=float, default=5.0,
- help=u"Traffic warm-up time in seconds, 0 = disable."
- )
- parser.add_argument(
u"--port_0", required=True, type=int,
help=u"Port 0 on the traffic generator."
)
@@ -451,10 +441,15 @@ def main():
framesize = args.frame_size
simple_burst(
- profile_file=args.profile, duration=args.duration, framesize=framesize,
- mult=args.mult, warmup_time=args.warmup_time, port_0=args.port_0,
- port_1=args.port_1, latency=args.latency, async_start=args.async_start,
- traffic_directions=args.traffic_directions
+ profile_file=args.profile,
+ duration=args.duration,
+ framesize=framesize,
+ multiplier=args.multiplier,
+ port_0=args.port_0,
+ port_1=args.port_1,
+ latency=args.latency,
+ async_start=args.async_start,
+ traffic_directions=args.traffic_directions,
)
diff --git a/GPL/tools/trex/trex_astf_stop.py b/GPL/tools/trex/trex_astf_stop.py
index 655bdf1a97..d9784e661a 100644
--- a/GPL/tools/trex/trex_astf_stop.py
+++ b/GPL/tools/trex/trex_astf_stop.py
@@ -92,12 +92,15 @@ def main():
total_rcvd, total_sent = rx_0 + rx_1, tx_0 + tx_1
total_lost = total_sent - total_rcvd
- # TODO: Add latency.
print(
- f"cps='unknown', total_received={total_rcvd}, total_sent={total_sent}, "
- f"frame_loss={total_lost}, "
- f"latency_stream_0(usec)=-1/-1/-1, latency_stream_1(usec)=-1/-1/-1, "
- u"latency_hist_stream_0={}, latency_hist_stream_1={}, "
+ f"cps='unknown'; "
+ f"total_received={total_rcvd}; "
+ f"total_sent={total_sent}; "
+ f"frame_loss={total_lost}; "
+ f"latency_stream_0(usec)=-1/-1/-1; "
+ f"latency_stream_1(usec)=-1/-1/-1; "
+ f"latency_hist_stream_0={}; "
+ f"latency_hist_stream_1={}; "
)
diff --git a/GPL/tools/trex/trex_stl_profile.py b/GPL/tools/trex/trex_stl_profile.py
index ac09b8dda1..ea001b58b6 100644
--- a/GPL/tools/trex/trex_stl_profile.py
+++ b/GPL/tools/trex/trex_stl_profile.py
@@ -60,8 +60,17 @@ def fmt_latency(lat_min, lat_avg, lat_max, hdrh):
def simple_burst(
- profile_file, duration, framesize, rate, warmup_time, port_0, port_1,
- latency, async_start=False, traffic_directions=2, force=False):
+ profile_file,
+ duration,
+ framesize,
+ rate,
+ port_0,
+ port_1,
+ latency,
+ async_start=False,
+ traffic_directions=2,
+ force=False,
+ ):
"""Send traffic and measure packet loss and latency.
Procedure:
@@ -83,7 +92,6 @@ def simple_burst(
:param framesize: Frame size.
:param duration: Duration of traffic run in seconds (-1=infinite).
:param rate: Traffic rate [percentage, pps, bps].
- :param warmup_time: Traffic warm-up time in seconds, 0 = disable.
:param port_0: Port 0 on the traffic generator.
:param port_1: Port 1 on the traffic generator.
:param latency: With latency stats.
@@ -94,7 +102,6 @@ def simple_burst(
:type framesize: int or str
:type duration: float
:type rate: str
- :type warmup_time: float
:type port_0: int
:type port_1: int
:type latency: bool
@@ -105,8 +112,7 @@ def simple_burst(
client = None
total_rcvd = 0
total_sent = 0
- approximated_duration = 0
- approximated_rate = 0
+ approximated_duration = 0.0
lost_a = 0
lost_b = 0
lat_a = u"-1/-1/-1/"
@@ -162,40 +168,6 @@ def simple_burst(
ports = [port_0]
if traffic_directions > 1:
ports.append(port_1)
- # Warm-up phase:
- if warmup_time > 0:
- # Clear the stats before injecting:
- client.clear_stats()
-
- # Choose rate and start traffic:
- client.start(
- ports=ports, mult=rate, duration=warmup_time, force=force,
- core_mask=STLClient.CORE_MASK_PIN
- )
-
- # Block until done:
- time_start = time.monotonic()
- client.wait_on_traffic(ports=ports, timeout=warmup_time+30)
- time_stop = time.monotonic()
- approximated_duration = time_stop - time_start
-
- if client.get_warnings():
- for warning in client.get_warnings():
- print(warning)
-
- # Read the stats after the test:
- stats = client.get_stats()
-
- print(u"##### Warmup statistics #####")
- print(json.dumps(stats, indent=4, separators=(u",", u": ")))
-
- lost_a = stats[port_0][u"opackets"] - stats[port_1][u"ipackets"]
- if traffic_directions > 1:
- lost_b = stats[port_1][u"opackets"] - stats[port_0][u"ipackets"]
-
- print(f"\npackets lost from {port_0} --> {port_1}: {lost_a} pkts")
- if traffic_directions > 1:
- print(f"packets lost from {port_1} --> {port_0}: {lost_b} pkts")
# Clear the stats before injecting:
client.clear_stats()
@@ -204,8 +176,11 @@ def simple_burst(
# Choose rate and start traffic:
client.start(
- ports=ports, mult=rate, duration=duration, force=force,
- core_mask=STLClient.CORE_MASK_PIN
+ ports=ports,
+ mult=rate,
+ duration=duration,
+ force=force,
+ core_mask=STLClient.CORE_MASK_PIN,
)
if async_start:
@@ -254,10 +229,6 @@ def simple_burst(
else:
total_sent = stats[port_0][u"opackets"]
total_rcvd = stats[port_1][u"ipackets"]
- try:
- approximated_rate = total_sent / approximated_duration
- except ZeroDivisionError:
- pass
print(f"\npackets lost from {port_0} --> {port_1}: {lost_a} pkts")
if traffic_directions > 1:
@@ -275,13 +246,14 @@ def simple_burst(
if client:
client.disconnect()
print(
- f"rate={rate!r}, total_received={total_rcvd}, "
- f"total_sent={total_sent}, frame_loss={lost_a + lost_b}, "
- f"target_duration={duration!r}, "
- f"approximated_duration={approximated_duration!r}, "
- f"approximated_rate={approximated_rate}, "
- f"latency_stream_0(usec)={lat_a}, "
- f"latency_stream_1(usec)={lat_b}, "
+ f"rate={rate!r}; "
+ f"total_received={total_rcvd}; "
+ f"total_sent={total_sent}; "
+ f"frame_loss={lost_a + lost_b}; "
+ f"target_duration={duration!r}; "
+ f"approximated_duration={approximated_duration!r}; "
+ f"latency_stream_0(usec)={lat_a}; "
+ f"latency_stream_1(usec)={lat_b}; "
)
@@ -309,10 +281,6 @@ def main():
help=u"Traffic rate with included units (pps)."
)
parser.add_argument(
- u"-w", u"--warmup_time", type=float, default=5.0,
- help=u"Traffic warm-up time in seconds, 0 = disable."
- )
- parser.add_argument(
u"--port_0", required=True, type=int,
help=u"Port 0 on the traffic generator."
)
@@ -345,10 +313,16 @@ def main():
framesize = args.frame_size
simple_burst(
- profile_file=args.profile, duration=args.duration, framesize=framesize,
- rate=args.rate, warmup_time=args.warmup_time, port_0=args.port_0,
- port_1=args.port_1, latency=args.latency, async_start=args.async_start,
- traffic_directions=args.traffic_directions, force=args.force
+ profile_file=args.profile,
+ duration=args.duration,
+ framesize=framesize,
+ rate=args.rate,
+ port_0=args.port_0,
+ port_1=args.port_1,
+ latency=args.latency,
+ async_start=args.async_start,
+ traffic_directions=args.traffic_directions,
+ force=args.force,
)
diff --git a/GPL/tools/trex/trex_stl_stop.py b/GPL/tools/trex/trex_stl_stop.py
index dcdae7c10a..f07479da8a 100644
--- a/GPL/tools/trex/trex_stl_stop.py
+++ b/GPL/tools/trex/trex_stl_stop.py
@@ -91,13 +91,16 @@ def main():
total_rcvd, total_sent = rx_0 + rx_1, tx_0 + tx_1
total_lost = total_sent - total_rcvd
- # TODO: Add latency.
print(
- f"rate='unknown', total_received={total_rcvd}, "
- f"total_sent={total_sent}, frame_loss={total_lost}, "
- f"target_duration='manual', approximated_duration='manual', "
- f"approximated_rate='unknown', "
- f"latency_stream_0(usec)=-1/-1/-1, latency_stream_1(usec)=-1/-1/-1"
+ f"rate='unknown'; "
+ f"total_received={total_rcvd}; "
+ f"total_sent={total_sent}; "
+ f"frame_loss={total_lost}; "
+ f"target_duration='manual'; "
+ f"approximated_duration='manual'; "
+ f"approximated_rate='unknown'; "
+ f"latency_stream_0(usec)=-1/-1/-1; "
+ f"latency_stream_1(usec)=-1/-1/-1; "
)
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py
new file mode 100644
index 0000000000..0c22573a09
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h-pps.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / TCP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.3.255
+ - Destination IP address range: 20.0.0.0 - 20.0.3.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.3.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.3.255"
+
+ # Headers length; not used in this profile, just for the record of
+ # header length for TCP packet with 0B payload
+ self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
+ self.data_size = 11111
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates, None
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ # client commands
+ prog_c = ASTFProgram()
+ prog_c.connect()
+ prog_c.send(u"1" * self.data_size)
+ prog_c.recv(self.data_size)
+
+ # server commands
+ prog_s = ASTFProgram()
+ prog_s.accept()
+ prog_c.recv(self.data_size)
+ prog_c.send(u"1" * self.data_size)
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=64512, # TODO: set via input parameter
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h.py
index 809a954a30..a86355b365 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-1024h.py
@@ -25,6 +25,9 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
"""
from trex.astf.api import *
@@ -49,9 +52,6 @@ class TrafficProfile(TrafficProfileBaseClass):
# header length for TCP packet with 0B payload
self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
- # Delay for keeping tcp sessions active
- self.delay = 2000000 # delay 2s (2,000,000 usec)
-
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -68,8 +68,6 @@ class TrafficProfile(TrafficProfileBaseClass):
prog_c.connect()
# receive syn-ack (0B sent in tcp syn-ack packet) and send ack
prog_c.recv(0)
- # wait defined time, then send fin-ack
- prog_c.delay(self.delay)
# server commands
prog_s = ASTFProgram()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py
new file mode 100644
index 0000000000..c73de7b9c7
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h-pps.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / TCP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.63.255
+ - Destination IP address range: 20.0.0.0 - 20.0.63.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.63.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.63.255"
+
+ # Headers length; not used in this profile, just for the record of
+ # header length for TCP packet with 0B payload
+ self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
+ self.data_size = 11111
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates, None
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ # client commands
+ prog_c = ASTFProgram()
+ prog_c.connect()
+ prog_c.send(u"1" * self.data_size)
+ prog_c.recv(self.data_size)
+
+ # server commands
+ prog_s = ASTFProgram()
+ prog_s.accept()
+ prog_c.recv(self.data_size)
+ prog_c.send(u"1" * self.data_size)
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=1032192, # TODO: set via input parameter
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h.py
index 0d7f9a5974..4899726fc2 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-16384h.py
@@ -25,6 +25,9 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
"""
from trex.astf.api import *
@@ -49,9 +52,6 @@ class TrafficProfile(TrafficProfileBaseClass):
# header length for TCP packet with 0B payload
self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
- # Delay for keeping tcp sessions active
- self.delay = 2000000 # delay 2s (2,000,000 usec)
-
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -68,8 +68,6 @@ class TrafficProfile(TrafficProfileBaseClass):
prog_c.connect()
# receive syn-ack (0B sent in tcp syn-ack packet) and send ack
prog_c.recv(0)
- # wait defined time, then send fin-ack
- prog_c.delay(self.delay)
# server commands
prog_s = ASTFProgram()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py
new file mode 100644
index 0000000000..007b3668ac
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h-pps.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / TCP
+ - Direction 0 --> 1:
+ - Source IP address range: 172.16.0.0 - 172.19.255.255
+ - Destination IP address range: 20.16.0.0 - 20.19.255.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"172.16.0.0"
+ self.p1_src_end_ip = u"172.19.255.255"
+ self.p1_dst_start_ip = u"20.16.0.0"
+ self.p1_dst_end_ip = u"20.19.255.255"
+
+ # Headers length; not used in this profile, just for the record of
+ # header length for TCP packet with 0B payload
+ self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
+ self.data_size = 11111
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates, None
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ # client commands
+ prog_c = ASTFProgram()
+ prog_c.connect()
+ prog_c.send(u"1" * self.data_size)
+ prog_c.recv(self.data_size)
+
+ # server commands
+ prog_s = ASTFProgram()
+ prog_s.accept()
+ prog_c.recv(self.data_size)
+ prog_c.send(u"1" * self.data_size)
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=16515072, # TODO: set via input parameter
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h.py
index 6f533844e0..d52d293c92 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-262144h.py
@@ -25,6 +25,9 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
"""
from trex.astf.api import *
@@ -49,9 +52,6 @@ class TrafficProfile(TrafficProfileBaseClass):
# header length for TCP packet with 0B payload
self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
- # Delay for keeping tcp sessions active
- self.delay = 2000000 # delay 2s (2,000,000 usec)
-
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -68,8 +68,6 @@ class TrafficProfile(TrafficProfileBaseClass):
prog_c.connect()
# receive syn-ack (0B sent in tcp syn-ack packet) and send ack
prog_c.recv(0)
- # wait defined time, then send fin-ack
- prog_c.delay(self.delay)
# server commands
prog_s = ASTFProgram()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py
new file mode 100644
index 0000000000..dc2b612057
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h-pps.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / TCP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.15.255
+ - Destination IP address range: 20.0.0.0 - 20.0.15.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.15.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.15.255"
+
+ # Headers length; not used in this profile, just for the record of
+ # header length for TCP packet with 0B payload
+ self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
+ self.data_size = 11111
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates, None
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ # client commands
+ prog_c = ASTFProgram()
+ prog_c.connect()
+ prog_c.send(u"1" * self.data_size)
+ prog_c.recv(self.data_size)
+
+ # server commands
+ prog_s = ASTFProgram()
+ prog_s.accept()
+ prog_c.recv(self.data_size)
+ prog_c.send(u"1" * self.data_size)
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=258048, # TODO: set via input parameter
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h.py
index acfc5e109a..4ff89a8acb 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-4096h.py
@@ -25,6 +25,9 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
"""
from trex.astf.api import *
@@ -49,9 +52,6 @@ class TrafficProfile(TrafficProfileBaseClass):
# header length for TCP packet with 0B payload
self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
- # Delay for keeping tcp sessions active
- self.delay = 2000000 # delay 2s (2,000,000 usec)
-
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -68,8 +68,6 @@ class TrafficProfile(TrafficProfileBaseClass):
prog_c.connect()
# receive syn-ack (0B sent in tcp syn-ack packet) and send ack
prog_c.recv(0)
- # wait defined time, then send fin-ack
- prog_c.delay(self.delay)
# server commands
prog_s = ASTFProgram()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py
new file mode 100644
index 0000000000..8ba3be5b69
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h-pps.py
@@ -0,0 +1,117 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / TCP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.255.255
+ - Destination IP address range: 20.0.0.0 - 20.0.255.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.255.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.255.255"
+
+ # Headers length; not used in this profile, just for the record of
+ # header length for TCP packet with 0B payload
+ self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
+ self.data_size = 11111
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates, None
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ # client commands
+ prog_c = ASTFProgram()
+ prog_c.connect()
+ prog_c.send(u"1" * self.data_size)
+ prog_c.recv(self.data_size)
+
+ # server commands
+ prog_s = ASTFProgram()
+ prog_s.accept()
+ prog_c.recv(self.data_size)
+ prog_c.send(u"1" * self.data_size)
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=4128768, # TODO: set via input parameter
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h.py
index 7d2f5b6265..e5786f4f05 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4tcp-65536h.py
@@ -25,6 +25,9 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up and tears down TCP session.
+No delays, no data transfer.
"""
from trex.astf.api import *
@@ -49,9 +52,6 @@ class TrafficProfile(TrafficProfileBaseClass):
# header length for TCP packet with 0B payload
self.headers_size = 58 # 14B l2 + 20B ipv4 + 24B tcp incl. 4B options
- # Delay for keeping tcp sessions active
- self.delay = 2000000 # delay 2s (2,000,000 usec)
-
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -68,8 +68,6 @@ class TrafficProfile(TrafficProfileBaseClass):
prog_c.connect()
# receive syn-ack (0B sent in tcp syn-ack packet) and send ack
prog_c.recv(0)
- # wait defined time, then send fin-ack
- prog_c.delay(self.delay)
# server commands
prog_s = ASTFProgram()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h-pps.py
new file mode 100644
index 0000000000..3de855442e
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h-pps.py
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / UDP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.3.255
+ - Destination IP address range: 20.0.0.0 - 20.0.3.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self, **kwargs):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.3.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.3.255"
+
+ self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B UDP
+
+ self.udp_data = u""
+
+ self.n_data = 32 # TODO: set via input parameter
+ self.m_delay = 1200000 # delay 1200s (1,200,000 ms)
+ self.u_delay = 1000 * self.m_delay # delay 1200s (1,200,000,000 us)
+ self.limit = 64512
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ if self.framesize == 64:
+ self.udp_data += self._gen_padding(self.headers_size, 72)
+ if self.framesize == 1518:
+ self.udp_data += self._gen_padding(self.headers_size, 1514)
+
+ # Client program.
+ prog_c = ASTFProgram(stream=False)
+ prog_c.set_keepalive_msg(self.m_delay)
+ prog_c.send_msg(self.udp_data)
+ # No delay, PPS tests combine connect and data send (no data receive).
+ prog_c.set_var(u"var1", self.n_data)
+ prog_c.set_label(u"a:")
+ prog_c.send_msg(self.udp_data)
+ prog_c.jmp_nz(u"var1", u"a:")
+ # We should read the server response,
+ # but no reason to overload client workers even more.
+
+ # Server program.
+ prog_s = ASTFProgram(stream=False)
+ prog_s.set_keepalive_msg(self.m_delay)
+ # If server closes too soon, new instances are started
+ # leading in too much replies. To prevent that, we need to recv all.
+ prog_s.recv_msg(1 + self.n_data)
+ # In packet loss scenarios, some instances never get here.
+ # This maybe increases server traffic duration,
+ # but no other way if we want to avoid
+ # TRex creating a second instance of the same server.
+ prog_s.send_msg(self.udp_data)
+ prog_s.set_var(u"var2", self.n_data)
+ prog_s.set_label(u"b:")
+ prog_s.send_msg(self.udp_data)
+ prog_s.jmp_nz(u"var2", u"b:")
+ # VPP never duplicates packets,
+ # so it is safe to close the server instance now.
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=self.limit,
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h.py
index 6bf0d53d1f..ebcf17e59e 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-1024h.py
@@ -25,6 +25,10 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up UDP session.
+No delays, no data transfer.
+Keepalive mechanism cannot be disabled, so it is at least set to long waits.
"""
from trex.astf.api import *
@@ -53,8 +57,7 @@ class TrafficProfile(TrafficProfileBaseClass):
# Headers length
self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B udp
- # Required UDP keepalive value for T-Rex
- self.udp_keepalive = 2000 # 2s (2,000 msec)
+ # No need to set keepalive, both programs end just after start&send.
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -70,27 +73,18 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
# send REQ message
prog_c.send_msg(self.udp_req)
- # receive RES message
- prog_c.recv_msg(1)
-
- prog_c.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # No need to process the response, seeing L2 counter is enough.
+ # Client program can end here.
# server commands
prog_s = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
- # receive REQ message
- prog_s.recv_msg(1)
+ # When server instance is created means REQ is visible in L2 counter.
+ # No need to receive explicitly?
# send RES message
prog_s.send_msg(self.udp_res)
-
- prog_s.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # Server program can end here.
# ip generators
ip_gen_c = ASTFIPGenDist(
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h-pps.py
new file mode 100644
index 0000000000..856f5b28a3
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h-pps.py
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / UDP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.63.255
+ - Destination IP address range: 20.0.0.0 - 20.0.63.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self, **kwargs):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.63.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.63.255"
+
+ self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B UDP
+
+ self.udp_data = u""
+
+ self.n_data = 32 # TODO: set via input parameter
+ self.m_delay = 1200000 # delay 1200s (1,200,000 ms)
+ self.u_delay = 1000 * self.m_delay # delay 1200s (1,200,000,000 us)
+ self.limit = 1032192
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ if self.framesize == 64:
+ self.udp_data += self._gen_padding(self.headers_size, 72)
+ if self.framesize == 1518:
+ self.udp_data += self._gen_padding(self.headers_size, 1514)
+
+ # Client program.
+ prog_c = ASTFProgram(stream=False)
+ prog_c.set_keepalive_msg(self.m_delay)
+ prog_c.send_msg(self.udp_data)
+ # No delay, PPS tests combine connect and data send (no data receive).
+ prog_c.set_var(u"var1", self.n_data)
+ prog_c.set_label(u"a:")
+ prog_c.send_msg(self.udp_data)
+ prog_c.jmp_nz(u"var1", u"a:")
+ # We should read the server response,
+ # but no reason to overload client workers even more.
+
+ # Server program.
+ prog_s = ASTFProgram(stream=False)
+ prog_s.set_keepalive_msg(self.m_delay)
+ # If server closes too soon, new instances are started
+ # leading in too much replies. To prevent that, we need to recv all.
+ prog_s.recv_msg(1 + self.n_data)
+ # In packet loss scenarios, some instances never get here.
+ # This maybe increases server traffic duration,
+ # but no other way if we want to avoid
+ # TRex creating a second instance of the same server.
+ prog_s.send_msg(self.udp_data)
+ prog_s.set_var(u"var2", self.n_data)
+ prog_s.set_label(u"b:")
+ prog_s.send_msg(self.udp_data)
+ prog_s.jmp_nz(u"var2", u"b:")
+ # VPP never duplicates packets,
+ # so it is safe to close the server instance now.
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=self.limit,
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h.py
index 9237831aa5..3f13cbdda3 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-16384h.py
@@ -25,6 +25,10 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up UDP session.
+No delays, no data transfer.
+Keepalive mechanism cannot be disabled, so it is at least set to long waits.
"""
from trex.astf.api import *
@@ -53,8 +57,7 @@ class TrafficProfile(TrafficProfileBaseClass):
# Headers length
self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B udp
- # Required UDP keepalive value for T-Rex
- self.udp_keepalive = 2000 # 2s (2,000 msec)
+ # No need to set keepalive, both programs end just after start&send.
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -70,27 +73,18 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
# send REQ message
prog_c.send_msg(self.udp_req)
- # receive RES message
- prog_c.recv_msg(1)
-
- prog_c.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # No need to process the response, seeing L2 counter is enough.
+ # Client program can end here.
# server commands
prog_s = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
- # receive REQ message
- prog_s.recv_msg(1)
+ # When server instance is created means REQ is visible in L2 counter.
+ # No need to receive explicitly?
# send RES message
prog_s.send_msg(self.udp_res)
-
- prog_s.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # Server program can end here.
# ip generators
ip_gen_c = ASTFIPGenDist(
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h-pps.py
new file mode 100644
index 0000000000..f6f7fcfe3d
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h-pps.py
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / UDP
+ - Direction 0 --> 1:
+ - Source IP address range: 172.16.0.0 - 172.19.255.255
+ - Destination IP address range: 20.16.0.0 - 20.19.255.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self, **kwargs):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"172.16.0.0"
+ self.p1_src_end_ip = u"172.19.255.255"
+ self.p1_dst_start_ip = u"20.16.0.0"
+ self.p1_dst_end_ip = u"20.19.255.255"
+
+ self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B UDP
+
+ self.udp_data = u""
+
+ self.n_data = 32 # TODO: set via input parameter
+ self.m_delay = 1200000 # delay 1200s (1,200,000 ms)
+ self.u_delay = 1000 * self.m_delay # delay 1200s (1,200,000,000 us)
+ self.limit = 16515072
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ if self.framesize == 64:
+ self.udp_data += self._gen_padding(self.headers_size, 72)
+ if self.framesize == 1518:
+ self.udp_data += self._gen_padding(self.headers_size, 1514)
+
+ # Client program.
+ prog_c = ASTFProgram(stream=False)
+ prog_c.set_keepalive_msg(self.m_delay)
+ prog_c.send_msg(self.udp_data)
+ # No delay, PPS tests combine connect and data send (no data receive).
+ prog_c.set_var(u"var1", self.n_data)
+ prog_c.set_label(u"a:")
+ prog_c.send_msg(self.udp_data)
+ prog_c.jmp_nz(u"var1", u"a:")
+ # We should read the server response,
+ # but no reason to overload client workers even more.
+
+ # Server program.
+ prog_s = ASTFProgram(stream=False)
+ prog_s.set_keepalive_msg(self.m_delay)
+ # If server closes too soon, new instances are started
+ # leading in too much replies. To prevent that, we need to recv all.
+ prog_s.recv_msg(1 + self.n_data)
+ # In packet loss scenarios, some instances never get here.
+ # This maybe increases server traffic duration,
+ # but no other way if we want to avoid
+ # TRex creating a second instance of the same server.
+ prog_s.send_msg(self.udp_data)
+ prog_s.set_var(u"var2", self.n_data)
+ prog_s.set_label(u"b:")
+ prog_s.send_msg(self.udp_data)
+ prog_s.jmp_nz(u"var2", u"b:")
+ # VPP never duplicates packets,
+ # so it is safe to close the server instance now.
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=self.limit,
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h.py
index 728eba8a04..8149a27cb9 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-262144h.py
@@ -25,6 +25,10 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up UDP session.
+No delays, no data transfer.
+Keepalive mechanism cannot be disabled, so it is at least set to long waits.
"""
from trex.astf.api import *
@@ -53,8 +57,7 @@ class TrafficProfile(TrafficProfileBaseClass):
# Headers length
self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B udp
- # Required UDP keepalive value for T-Rex
- self.udp_keepalive = 2000 # 2s (2,000 msec)
+ # No need to set keepalive, both programs end just after start&send.
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -70,27 +73,18 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
# send REQ message
prog_c.send_msg(self.udp_req)
- # receive RES message
- prog_c.recv_msg(1)
-
- prog_c.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # No need to process the response, seeing L2 counter is enough.
+ # Client program can end here.
# server commands
prog_s = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
- # receive REQ message
- prog_s.recv_msg(1)
+ # When server instance is created means REQ is visible in L2 counter.
+ # No need to receive explicitly?
# send RES message
prog_s.send_msg(self.udp_res)
-
- prog_s.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # Server program can end here.
# ip generators
ip_gen_c = ASTFIPGenDist(
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h-pps.py
new file mode 100644
index 0000000000..cd295b1164
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h-pps.py
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / UDP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.15.255
+ - Destination IP address range: 20.0.0.0 - 20.0.15.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self, **kwargs):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.15.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.15.255"
+
+ self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B UDP
+
+ self.udp_data = u""
+
+ self.n_data = 32 # TODO: set via input parameter
+ self.m_delay = 1200000 # delay 1200s (1,200,000 ms)
+ self.u_delay = 1000 * self.m_delay # delay 1200s (1,200,000,000 us)
+ self.limit = 258048
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ if self.framesize == 64:
+ self.udp_data += self._gen_padding(self.headers_size, 72)
+ if self.framesize == 1518:
+ self.udp_data += self._gen_padding(self.headers_size, 1514)
+
+ # Client program.
+ prog_c = ASTFProgram(stream=False)
+ prog_c.set_keepalive_msg(self.m_delay)
+ prog_c.send_msg(self.udp_data)
+ # No delay, PPS tests combine connect and data send (no data receive).
+ prog_c.set_var(u"var1", self.n_data)
+ prog_c.set_label(u"a:")
+ prog_c.send_msg(self.udp_data)
+ prog_c.jmp_nz(u"var1", u"a:")
+ # We should read the server response,
+ # but no reason to overload client workers even more.
+
+ # Server program.
+ prog_s = ASTFProgram(stream=False)
+ prog_s.set_keepalive_msg(self.m_delay)
+ # If server closes too soon, new instances are started
+ # leading in too much replies. To prevent that, we need to recv all.
+ prog_s.recv_msg(1 + self.n_data)
+ # In packet loss scenarios, some instances never get here.
+ # This maybe increases server traffic duration,
+ # but no other way if we want to avoid
+ # TRex creating a second instance of the same server.
+ prog_s.send_msg(self.udp_data)
+ prog_s.set_var(u"var2", self.n_data)
+ prog_s.set_label(u"b:")
+ prog_s.send_msg(self.udp_data)
+ prog_s.jmp_nz(u"var2", u"b:")
+ # VPP never duplicates packets,
+ # so it is safe to close the server instance now.
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=self.limit,
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h.py
index 0807175d36..cd81cb96ee 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-4096h.py
@@ -25,6 +25,10 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up UDP session.
+No delays, no data transfer.
+Keepalive mechanism cannot be disabled, so it is at least set to long waits.
"""
from trex.astf.api import *
@@ -53,8 +57,7 @@ class TrafficProfile(TrafficProfileBaseClass):
# Headers length
self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B udp
- # Required UDP keepalive value for T-Rex
- self.udp_keepalive = 2000 # 2s (2,000 msec)
+ # No need to set keepalive, both programs end just after start&send.
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -70,27 +73,18 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
# send REQ message
prog_c.send_msg(self.udp_req)
- # receive RES message
- prog_c.recv_msg(1)
-
- prog_c.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # No need to process the response, seeing L2 counter is enough.
+ # Client program can end here.
# server commands
prog_s = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
- # receive REQ message
- prog_s.recv_msg(1)
+ # When server instance is created means REQ is visible in L2 counter.
+ # No need to receive explicitly?
# send RES message
prog_s.send_msg(self.udp_res)
-
- prog_s.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # Server program can end here.
# ip generators
ip_gen_c = ASTFIPGenDist(
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h-pps.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h-pps.py
new file mode 100644
index 0000000000..f6aaebcf30
--- /dev/null
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h-pps.py
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Traffic profile for T-rex advanced stateful (astf) traffic generator.
+Traffic profile:
+ - Two streams sent in directions 0 --> 1 (client -> server, requests) and
+ 1 --> 0 (server -> client, responses) at the same time.
+ - Packet: ETH / IP / UDP
+ - Direction 0 --> 1:
+ - Source IP address range: 192.168.0.0 - 192.168.255.255
+ - Destination IP address range: 20.0.0.0 - 20.0.255.255
+ - Direction 1 --> 0:
+ - Source IP address range: destination IP address from packet received
+ on port 1
+ - Destination IP address range: source IP address from packet received
+ on port 1
+"""
+
+from trex.astf.api import *
+from profile_trex_astf_base_class import TrafficProfileBaseClass
+
+
+class TrafficProfile(TrafficProfileBaseClass):
+ """Traffic profile."""
+
+ def __init__(self, **kwargs):
+ """Initialization and setting of profile parameters."""
+
+ super(TrafficProfileBaseClass, self).__init__()
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = u"192.168.0.0"
+ self.p1_src_end_ip = u"192.168.255.255"
+ self.p1_dst_start_ip = u"20.0.0.0"
+ self.p1_dst_end_ip = u"20.0.255.255"
+
+ self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B UDP
+
+ self.udp_data = u""
+
+ self.n_data = 32 # TODO: set via input parameter
+ self.m_delay = 1200000 # delay 1200s (1,200,000 ms)
+ self.u_delay = 1000 * self.m_delay # delay 1200s (1,200,000,000 us)
+ self.limit = 4128768
+
+ def define_profile(self):
+ """Define profile to be used by advanced stateful traffic generator.
+
+ This method MUST return:
+
+ return ip_gen, templates
+
+ :returns: IP generator and profile templates for ASTFProfile().
+ :rtype: tuple
+ """
+ if self.framesize == 64:
+ self.udp_data += self._gen_padding(self.headers_size, 72)
+ if self.framesize == 1518:
+ self.udp_data += self._gen_padding(self.headers_size, 1514)
+
+ # Client program.
+ prog_c = ASTFProgram(stream=False)
+ prog_c.set_keepalive_msg(self.m_delay)
+ prog_c.send_msg(self.udp_data)
+ # No delay, PPS tests combine connect and data send (no data receive).
+ prog_c.set_var(u"var1", self.n_data)
+ prog_c.set_label(u"a:")
+ prog_c.send_msg(self.udp_data)
+ prog_c.jmp_nz(u"var1", u"a:")
+ # We should read the server response,
+ # but no reason to overload client workers even more.
+
+ # Server program.
+ prog_s = ASTFProgram(stream=False)
+ prog_s.set_keepalive_msg(self.m_delay)
+ # If server closes too soon, new instances are started
+ # leading in too much replies. To prevent that, we need to recv all.
+ prog_s.recv_msg(1 + self.n_data)
+ # In packet loss scenarios, some instances never get here.
+ # This maybe increases server traffic duration,
+ # but no other way if we want to avoid
+ # TRex creating a second instance of the same server.
+ prog_s.send_msg(self.udp_data)
+ prog_s.set_var(u"var2", self.n_data)
+ prog_s.set_label(u"b:")
+ prog_s.send_msg(self.udp_data)
+ prog_s.jmp_nz(u"var2", u"b:")
+ # VPP never duplicates packets,
+ # so it is safe to close the server instance now.
+
+ # ip generators
+ ip_gen_c = ASTFIPGenDist(
+ ip_range=[self.p1_src_start_ip, self.p1_src_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen_s = ASTFIPGenDist(
+ ip_range=[self.p1_dst_start_ip, self.p1_dst_end_ip],
+ distribution=u"seq"
+ )
+ ip_gen = ASTFIPGen(
+ glob=ASTFIPGenGlobal(ip_offset=u"0.0.0.1"),
+ dist_client=ip_gen_c,
+ dist_server=ip_gen_s
+ )
+
+ # server association
+ s_assoc = ASTFAssociation(rules=ASTFAssociationRule(port=8080))
+
+ # template
+ temp_c = ASTFTCPClientTemplate(
+ program=prog_c,
+ ip_gen=ip_gen,
+ limit=self.limit,
+ port=8080
+ )
+ temp_s = ASTFTCPServerTemplate(program=prog_s, assoc=s_assoc)
+ template = ASTFTemplate(client_template=temp_c, server_template=temp_s)
+
+ return ip_gen, template, None
+
+
+def register():
+ """Register this traffic profile to T-Rex.
+
+ Do not change this function.
+
+ :return: Traffic Profiles.
+ :rtype: Object
+ """
+ return TrafficProfile()
diff --git a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h.py b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h.py
index 85eaff005c..56215ddece 100644
--- a/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h.py
+++ b/GPL/traffic_profiles/trex/trex-astf-ethip4udp-65536h.py
@@ -25,6 +25,10 @@ Traffic profile:
on port 1
- Destination IP address range: source IP address from packet received
on port 1
+
+This is a profile for CPS tests, it only sets up UDP session.
+No delays, no data transfer.
+Keepalive mechanism cannot be disabled, so it is at least set to long waits.
"""
from trex.astf.api import *
@@ -53,8 +57,7 @@ class TrafficProfile(TrafficProfileBaseClass):
# Headers length
self.headers_size = 42 # 14B l2 + 20B ipv4 + 8B udp
- # Required UDP keepalive value for T-Rex
- self.udp_keepalive = 2000 # 2s (2,000 msec)
+ # No need to set keepalive, both programs end just after start&send.
def define_profile(self):
"""Define profile to be used by advanced stateful traffic generator.
@@ -70,27 +73,18 @@ class TrafficProfile(TrafficProfileBaseClass):
# client commands
prog_c = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
# send REQ message
prog_c.send_msg(self.udp_req)
- # receive RES message
- prog_c.recv_msg(1)
-
- prog_c.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # No need to process the response, seeing L2 counter is enough.
+ # Client program can end here.
# server commands
prog_s = ASTFProgram(stream=False)
- # set the keepalive timer for UDP flows to not close udp session
- # immediately after packet exchange
- prog_c.set_keepalive_msg(self.udp_keepalive)
- # receive REQ message
- prog_s.recv_msg(1)
+ # When server instance is created means REQ is visible in L2 counter.
+ # No need to receive explicitly?
# send RES message
prog_s.send_msg(self.udp_res)
-
- prog_s.delay(self.udp_keepalive * 1000) # delay is defined in usec
+ # Server program can end here.
# ip generators
ip_gen_c = ASTFIPGenDist(
diff --git a/docs/job_specs/mlr_weekly/vpp-2n-zn2.md b/docs/job_specs/mlr_weekly/vpp-2n-zn2.md
new file mode 100644
index 0000000000..5a0c331ece
--- /dev/null
+++ b/docs/job_specs/mlr_weekly/vpp-2n-zn2.md
@@ -0,0 +1,544 @@
+# 2n-zn2
+### tests 363
+### job hrs est. 35
+### job hrs real 35
+### test mins est. 5.78
+### test mins real 5.78
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+### intel-x710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+### mellanox-cx556a
+#### rdma-core
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+### intel-xxv710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+##### dot1q-l2bdbasemaclrn-gbp
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+##### dot1q-l2bdbasemaclrn-gbp
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
+### intel-xxv710
+#### avf
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+
diff --git a/docs/job_specs/mrr_daily/vpp-2n-zn2.md b/docs/job_specs/mrr_daily/vpp-2n-zn2.md
new file mode 100644
index 0000000000..93417cf5a4
--- /dev/null
+++ b/docs/job_specs/mrr_daily/vpp-2n-zn2.md
@@ -0,0 +1,544 @@
+# 2n-zn2
+### tests 363
+### job hrs est. 10
+### job hrs real 10
+### test mins est. 1.65
+### test mins real 1.65
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+### intel-x710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+### mellanox-cx556a
+#### rdma-core
+##### ethip4-ip4base
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+### intel-xxv710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6base
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+##### dot1q-l2bdbasemaclrn-gbp
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
+##### eth-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+##### eth-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+##### dot1q-l2bdbasemaclrn-gbp
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
+##### eth-l2xcbase
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
+### intel-xxv710
+#### avf
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+
diff --git a/docs/job_specs/mrr_weekly/dpdk-2n-zn2.md b/docs/job_specs/mrr_weekly/dpdk-2n-zn2.md
new file mode 100644
index 0000000000..5e17e168a1
--- /dev/null
+++ b/docs/job_specs/mrr_weekly/dpdk-2n-zn2.md
@@ -0,0 +1,26 @@
+# 2n-zn2
+### tests 12
+### job hrs est. 0.1
+### job hrs real 0.1
+### test mins est. 0.7
+### test mins real 0.7
+### intel-x710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+### intel-xxv710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
diff --git a/docs/job_specs/report_coverage/2n-clx/ip4-01.md b/docs/job_specs/report_coverage/2n-clx/ip4-01.md
index 2174c410f0..19a2a48427 100644
--- a/docs/job_specs/report_coverage/2n-clx/ip4-01.md
+++ b/docs/job_specs/report_coverage/2n-clx/ip4-01.md
@@ -1,9 +1,9 @@
# 2n-clx
### tests 54
-### job hrs est. 5.26
-### job hrs real 5.26
-### test mins est. 3.94
-### test mins real 3.94
+### job hrs est. 4.2
+### job hrs real 4.2
+### test mins est. 4.67
+### test mins real 4.67
## ./container_memif
## ./crypto
## ./ip4
diff --git a/docs/job_specs/report_coverage/2n-clx/ip4-05.md b/docs/job_specs/report_coverage/2n-clx/ip4-05.md
index 9c319d4781..99b86a959c 100644
--- a/docs/job_specs/report_coverage/2n-clx/ip4-05.md
+++ b/docs/job_specs/report_coverage/2n-clx/ip4-05.md
@@ -1,168 +1,18 @@
# 2n-clx
-### tests 144
-### job hrs est. 12
-### job hrs real 12
-### test mins est. 5
-### test mins real 5
+### tests 60
+### job hrs est. 4.1
+### job hrs real 4.1
+### test mins est. 4.1
+### test mins real 4.1
## ./container_memif
## ./crypto
## ./ip4
### intel-xxv710
#### avf
-##### ethip4udp-nat44det-h1-p1-s1
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
-##### ethip4udp-nat44det-h1024-p63-s64512
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-##### ethip4udp-nat44det-h16384-p63-s1032192
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
-##### ethip4udp-nat44det-h65536-p63-s4128758
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-##### ethip4udp-nat44det-h262144-p63-s16515072
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
-##### ethip4udp-nat44ed-h1024-p63-s64512-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
-##### ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
-##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
-##### ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-##### ethip4udp-nat44ed-h4096-p63-s258048-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
-##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
-##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
@@ -170,9 +20,9 @@
#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
@@ -180,9 +30,9 @@
#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
@@ -190,9 +40,9 @@
#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
@@ -200,126 +50,165 @@
#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-##### ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-##### ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-##### ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-##### ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-##### ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-##### ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-##### ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-##### ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-##### ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-##### ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#### dpdk-vfio-pci
-##### ethip4udp-nat44det-h1-p1-s1
-1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
-4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
## ./ip4_tunnels
## ./ip6
## ./ip6_tunnels
diff --git a/docs/job_specs/report_coverage/2n-clx/ip4-06.md b/docs/job_specs/report_coverage/2n-clx/ip4-06.md
new file mode 100644
index 0000000000..8412b1615a
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-clx/ip4-06.md
@@ -0,0 +1,225 @@
+# 2n-clx
+### tests 60
+### job hrs est. 7.05
+### job hrs real 7.05
+### test mins est. 7.05
+### test mins real 7.05
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+##### ethip4udp-nat44ed-h1024-p63-s64512-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+##### ethip4udp-nat44ed-h4096-p63-s258048-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+##### ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+##### ethip4udp-nat44ed-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-clx/ip4-07.md b/docs/job_specs/report_coverage/2n-clx/ip4-07.md
new file mode 100644
index 0000000000..6782b20732
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-clx/ip4-07.md
@@ -0,0 +1,136 @@
+# 2n-clx
+### tests 33
+### job hrs est. 4.15
+### job hrs real 4.15
+### test mins est. 7.55
+### test mins real 7.55
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#### dpdk-vfio-pci
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-skx/ip4-05.md b/docs/job_specs/report_coverage/2n-skx/ip4-05.md
index b2ae32e245..9c39f85549 100644
--- a/docs/job_specs/report_coverage/2n-skx/ip4-05.md
+++ b/docs/job_specs/report_coverage/2n-skx/ip4-05.md
@@ -1,35 +1,214 @@
# 2n-skx
-### tests 18
-### job hrs est. 1.5
-### job hrs real 1.5
-### test mins est. 5
-### test mins real 5
+### tests 60
+### job hrs est. 3.85
+### job hrs real 3.85
+### test mins est. 3.85
+### test mins real 3.85
## ./container_memif
## ./crypto
## ./ip4
### intel-xxv710
#### avf
-##### ethip4udp-nat44det-h1024-p63-s64512
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
-#### dpdk-vfio-pci
-##### ethip4udp-nat44det-h1024-p63-s64512
-1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
-4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
## ./ip4_tunnels
## ./ip6
## ./ip6_tunnels
diff --git a/docs/job_specs/report_coverage/2n-skx/ip4-06.md b/docs/job_specs/report_coverage/2n-skx/ip4-06.md
new file mode 100644
index 0000000000..b9c58c7149
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-skx/ip4-06.md
@@ -0,0 +1,225 @@
+# 2n-skx
+### tests 60
+### job hrs est. 8.4
+### job hrs real 8.4
+### test mins est. 8.4
+### test mins real 8.4
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+##### ethip4udp-nat44ed-h1024-p63-s64512-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+##### ethip4udp-nat44ed-h4096-p63-s258048-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+##### ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+##### ethip4udp-nat44ed-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-skx/ip4-07.md b/docs/job_specs/report_coverage/2n-skx/ip4-07.md
new file mode 100644
index 0000000000..fa78c40fec
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-skx/ip4-07.md
@@ -0,0 +1,136 @@
+# 2n-skx
+### tests 33
+### job hrs est. 3.55
+### job hrs real 3.55
+### test mins est. 6.45
+### test mins real 6.45
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+#### dpdk-vfio-pci
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+#4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/dpdk-00.md b/docs/job_specs/report_coverage/2n-zn2/dpdk-00.md
new file mode 100644
index 0000000000..f66aee1022
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/dpdk-00.md
@@ -0,0 +1,50 @@
+# 2n-zn2
+### tests 36
+### job hrs est. 2.5
+### job hrs real 2.5
+### test mins est. 3.13
+### test mins real 3.13
+### intel-x710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+### intel-xxv710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-00.md b/docs/job_specs/report_coverage/2n-zn2/ip4-00.md
new file mode 100644
index 0000000000..c7f24af54c
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-00.md
@@ -0,0 +1,281 @@
+# 2n-zn2
+### tests 225
+### job hrs est. 12.2
+### job hrs real 12.2
+### test mins est. 3.25
+### test mins real 3.25
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-x710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip4base
+### mellanox-cx556a
+#### rdma-core
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-01.md b/docs/job_specs/report_coverage/2n-zn2/ip4-01.md
new file mode 100644
index 0000000000..05d6ead834
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-01.md
@@ -0,0 +1,86 @@
+# 2n-zn2
+### tests 54
+### job hrs est. 5.26
+### job hrs real 5.26
+### test mins est. 3.94
+### test mins real 3.94
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4-ip4base-copwhtlistbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-copwhtlistbase
+##### ethip4-ip4base-iacldstbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-iacldstbase
+##### ethip4-ip4base-ipolicemarkbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-ipolicemarkbase
+#### dpdk-vfio-pci
+##### ethip4-ip4base-copwhtlistbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-copwhtlistbase
+##### ethip4-ip4base-iacldstbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-iacldstbase
+##### ethip4-ip4base-ipolicemarkbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-ipolicemarkbase
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-02.md b/docs/job_specs/report_coverage/2n-zn2/ip4-02.md
new file mode 100644
index 0000000000..184217a802
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-02.md
@@ -0,0 +1,66 @@
+# 2n-zn2
+### tests 36
+### job hrs est. 2.8
+### job hrs real 2.8
+### test mins est. 4.69
+### test mins real 4.69
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sf-10kflows
+##### ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl1sl-10kflows
+#### dpdk-vfio-pci
+##### ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sf-10kflows
+##### ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl1sl-10kflows
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-03.md b/docs/job_specs/report_coverage/2n-zn2/ip4-03.md
new file mode 100644
index 0000000000..84f18baa08
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-03.md
@@ -0,0 +1,66 @@
+# 2n-zn2
+### tests 36
+### job hrs est. 2.8
+### job hrs real 2.8
+### test mins est. 4.69
+### test mins real 4.69
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+#### dpdk-vfio-pci
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-iacl50sl-10kflows
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-04.md b/docs/job_specs/report_coverage/2n-zn2/ip4-04.md
new file mode 100644
index 0000000000..9e1b84d087
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-04.md
@@ -0,0 +1,66 @@
+# 2n-zn2
+### tests 36
+### job hrs est. 2.8
+### job hrs real 2.8
+### test mins est. 4.69
+### test mins real 4.69
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+#### dpdk-vfio-pci
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-ip4base-oacl50sl-10kflows
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip4-05.md b/docs/job_specs/report_coverage/2n-zn2/ip4-05.md
new file mode 100644
index 0000000000..c828817248
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip4-05.md
@@ -0,0 +1,146 @@
+# 2n-zn2
+### tests 108
+### job hrs est. 9
+### job hrs real 9
+### test mins est. 5
+### test mins real 5
+## ./container_memif
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#### dpdk-vfio-pci
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h262144-p63-s16515072
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip6-00.md b/docs/job_specs/report_coverage/2n-zn2/ip6-00.md
new file mode 100644
index 0000000000..472aafec0a
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip6-00.md
@@ -0,0 +1,141 @@
+# 2n-zn2
+### tests 99
+### job hrs est. 6
+### job hrs real 6
+### test mins est. 3.64
+### test mins real 3.64
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+### intel-xxv710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+##### ethip6-ip6base-copwhtlistbase
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-copwhtlistbase
+##### ethip6-ip6base-iacldstbase
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base-iacldstbase
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-ip6base
+##### ethip6-ip6base-copwhtlistbase
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-copwhtlistbase
+##### ethip6-ip6base-iacldstbase
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base-iacldstbase
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/ip6-01.md b/docs/job_specs/report_coverage/2n-zn2/ip6-01.md
new file mode 100644
index 0000000000..b009e8f8a8
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/ip6-01.md
@@ -0,0 +1,121 @@
+# 2n-zn2
+### tests 81
+### job hrs est. 4.87
+### job hrs real 4.87
+### test mins est. 3.61
+### test mins real 3.61
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### intel-xxv710
+#### avf
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/l2-00.md b/docs/job_specs/report_coverage/2n-zn2/l2-00.md
new file mode 100644
index 0000000000..565fadd36d
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/l2-00.md
@@ -0,0 +1,221 @@
+# 2n-zn2
+### tests 171
+### job hrs est. 9.77
+### job hrs real 9.77
+### test mins est. 3.1
+### test mins real 3.1
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2patch
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+#### dpdk-vfio-pci
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2patch
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+### intel-xxv710
+#### avf
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+#### dpdk-vfio-pci
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/l2-01.md b/docs/job_specs/report_coverage/2n-zn2/l2-01.md
new file mode 100644
index 0000000000..ae698b9792
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/l2-01.md
@@ -0,0 +1,121 @@
+# 2n-zn2
+### tests 81
+### job hrs est. 4.5
+### job hrs real 4.5
+### test mins est. 3.33
+### test mins real 3.33
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 1518b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND 9000b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND imix AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+### intel-xxv710
+#### avf
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+1c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 1518b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+1c AND 9000b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+1c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND imix AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/lb-00.md b/docs/job_specs/report_coverage/2n-zn2/lb-00.md
new file mode 100644
index 0000000000..82793b4f12
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/lb-00.md
@@ -0,0 +1,86 @@
+# 2n-zn2
+### tests 54
+### job hrs est. 3.4
+### job hrs real 3.4
+### test mins est. 3.75
+### test mins real 3.75
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+### intel-xxv710
+#### avf
+##### ethip4-loadbalancer-l3dsr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-l3dsr
+##### ethip4-loadbalancer-maglev
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-maglev
+##### ethip4-loadbalancer-nat4
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-loadbalancer-nat4
+#### dpdk-vfio-pci
+##### ethip4-loadbalancer-l3dsr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-l3dsr
+##### ethip4-loadbalancer-maglev
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-maglev
+##### ethip4-loadbalancer-nat4
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-loadbalancer-nat4
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/memif-00.md b/docs/job_specs/report_coverage/2n-zn2/memif-00.md
new file mode 100644
index 0000000000..6a72fed9dc
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/memif-00.md
@@ -0,0 +1,106 @@
+# 2n-zn2
+### tests 72
+### job hrs est. 6
+### job hrs real 6
+### test mins est. 5
+### test mins real 5
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/vhost-00.md b/docs/job_specs/report_coverage/2n-zn2/vhost-00.md
new file mode 100644
index 0000000000..853458405a
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/vhost-00.md
@@ -0,0 +1,146 @@
+# 2n-zn2
+### tests 108
+### job hrs est. 10.5
+### job hrs real 10.5
+### test mins est. 5.83
+### test mins real 5.83
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm
+##### ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+#### dpdk-vfio-pci
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm
+##### ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/vhost-01.md b/docs/job_specs/report_coverage/2n-zn2/vhost-01.md
new file mode 100644
index 0000000000..48d2adfc2f
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/vhost-01.md
@@ -0,0 +1,106 @@
+# 2n-zn2
+### tests 72
+### job hrs est. 6.9
+### job hrs real 6.9
+### test mins est. 5.73
+### test mins real 5.73
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+#### dpdk-vfio-pci
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
diff --git a/docs/job_specs/report_coverage/2n-zn2/vts-00.md b/docs/job_specs/report_coverage/2n-zn2/vts-00.md
new file mode 100644
index 0000000000..dce1ffe526
--- /dev/null
+++ b/docs/job_specs/report_coverage/2n-zn2/vts-00.md
@@ -0,0 +1,86 @@
+# 2n-zn2
+### tests 54
+### job hrs est. 6
+### job hrs real 6
+### test mins est. 6.67
+### test mins real 6.67
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
+### intel-xxv710
+#### avf
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+#### dpdk-vfio-pci
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
diff --git a/docs/job_specs/report_iterative/2n-clx/nfv-density-mrr-00.md b/docs/job_specs/report_iterative/2n-clx/nfv-density-mrr-00.md
index b3e6f175b9..6fb3b46a92 100644
--- a/docs/job_specs/report_iterative/2n-clx/nfv-density-mrr-00.md
+++ b/docs/job_specs/report_iterative/2n-clx/nfv-density-mrr-00.md
@@ -1,9 +1,9 @@
# 2n-clx
### tests 84
-### job hrs est. 4.4
-### job hrs real 4.4
-### test mins est. 3.14
-### test mins real 3.14
+### job hrs est. 5
+### job hrs real 5
+### test mins est. 3.57
+### test mins real 3.57
## ./container_memif
## ./crypto
## ./ip4
diff --git a/docs/job_specs/report_iterative/2n-clx/vpp-mlr-00.md b/docs/job_specs/report_iterative/2n-clx/vpp-mlr-00.md
index e08f119697..3f8037ecf7 100644
--- a/docs/job_specs/report_iterative/2n-clx/vpp-mlr-00.md
+++ b/docs/job_specs/report_iterative/2n-clx/vpp-mlr-00.md
@@ -1,9 +1,9 @@
# 2n-clx
-### tests 405
-### job hrs est. 39
-### job hrs real 39
+### tests 432
+### job hrs est. 41.62
+### job hrs real x
### test mins est. 5.78
-### test mins real 5.78
+### test mins real x
## ./container_memif
### intel-xxv710
#### avf
@@ -142,9 +142,9 @@
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
##### ethip4udp-nat44det-h65536-p63-s4128758
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
##### ethip4udp-nat44det-h262144-p63-s16515072
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
@@ -154,101 +154,181 @@
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
##### ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
##### ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
##### ethip4udp-nat44ed-h4096-p63-s258048-cps
#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-##### ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-##### ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-##### ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-##### ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-##### ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-##### ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-##### ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-##### ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-##### ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-##### ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
#### dpdk-vfio-pci
##### ethip4-ip4base
1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
diff --git a/docs/job_specs/report_iterative/2n-clx/vpp-mrr-00.md b/docs/job_specs/report_iterative/2n-clx/vpp-mrr-00.md
index f99a65046f..5fc14403d6 100644
--- a/docs/job_specs/report_iterative/2n-clx/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/2n-clx/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 2n-clx
-### tests 405
-### job hrs est. 11.14
-### job hrs real 11.14
-### test mins est. 1.65
-### test mins real 1.65
+### tests 432
+### job hrs est. 11.97
+### job hrs real 11.97
+### test mins est. 1.66
+### test mins real 1.66
## ./container_memif
### intel-xxv710
#### avf
@@ -142,9 +142,9 @@
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
##### ethip4udp-nat44det-h65536-p63-s4128758
-1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
-4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
##### ethip4udp-nat44det-h262144-p63-s16515072
1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
@@ -154,101 +154,181 @@
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
##### ethip4udp-nat44ed-h4096-p63-s258048-udir
-1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
-4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
-1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
-4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
##### ethip4udp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
##### ethip4udp-nat44ed-h4096-p63-s258048-cps
#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
-##### ethip4udp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512
-##### ethip4udp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048
-##### ethip4udp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192
-##### ethip4udp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768
-##### ethip4udp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072
-##### ethip4tcp-nat44ed-h1024-p63-s64512
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512
-##### ethip4tcp-nat44ed-h4096-p63-s258048
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048
-##### ethip4tcp-nat44ed-h16384-p63-s1032192
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192
-##### ethip4tcp-nat44ed-h65536-p63-s4128768
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768
-##### ethip4tcp-nat44ed-h262144-p63-s16515072
-#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
-#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
#### dpdk-vfio-pci
##### ethip4-ip4base
1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
@@ -457,10 +537,6 @@
1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
-##### dot1q-l2bdbasemaclrn-gbp
-1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
##### eth-l2xcbase
1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
@@ -520,10 +596,6 @@
1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
-##### dot1q-l2bdbasemaclrn-gbp
-1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
-2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
-4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-gbp
##### eth-l2xcbase
1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
diff --git a/docs/job_specs/report_iterative/2n-dnv/vpp-mrr-00.md b/docs/job_specs/report_iterative/2n-dnv/vpp-mrr-00.md
index 922a499ba8..acbd770554 100644
--- a/docs/job_specs/report_iterative/2n-dnv/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/2n-dnv/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 2n-dnv
### tests 24
-### job hrs est. 1.1
-### job hrs real xx.x
-### test mins est. 2.8
-### test mins real x.x
+### job hrs est. 0.8
+### job hrs real 0.8
+### test mins est. 2.0
+### test mins real 2.0
## ./container_memif
## ./crypto
## ./ip4
diff --git a/docs/job_specs/report_iterative/2n-skx/nfv-density-mrr-00.md b/docs/job_specs/report_iterative/2n-skx/nfv-density-mrr-00.md
index 800d4361da..16ec824d3a 100644
--- a/docs/job_specs/report_iterative/2n-skx/nfv-density-mrr-00.md
+++ b/docs/job_specs/report_iterative/2n-skx/nfv-density-mrr-00.md
@@ -1,9 +1,9 @@
# 2n-skx
### tests 84
-### job hrs est. 7.15
-### job hrs real 7.15
-### test mins est. 5.1
-### test mins real 5.1
+### job hrs est. 4.7
+### job hrs real 4.7
+### test mins est. 3.36
+### test mins real 3.36
## ./container_memif
## ./crypto
## ./ip4
diff --git a/docs/job_specs/report_iterative/2n-skx/vpp-mlr-00.md b/docs/job_specs/report_iterative/2n-skx/vpp-mlr-00.md
index af625b6c51..26ed5680f5 100644
--- a/docs/job_specs/report_iterative/2n-skx/vpp-mlr-00.md
+++ b/docs/job_specs/report_iterative/2n-skx/vpp-mlr-00.md
@@ -1,9 +1,9 @@
# 2n-skx
-### tests 255
-### job hrs est. 24.5
-### job hrs real 24.5
+### tests 339
+### job hrs est. 32.5
+### job hrs real x
### test mins est. 5.76
-### test mins real 5.76
+### test mins real x
## ./container_memif
### intel-xxv710
#### avf
@@ -119,6 +119,198 @@
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+##### ethip4udp-nat44ed-h1024-p63-s64512-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+##### ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+##### ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+##### ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
#### dpdk-vfio-pci
##### ethip4-ip4base
1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
@@ -263,10 +455,6 @@
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
-##### dot1q-l2bdbasemaclrn-gbp
-1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
##### eth-l2xcbase
1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
@@ -387,4 +575,3 @@
1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
-
diff --git a/docs/job_specs/report_iterative/2n-skx/vpp-mrr-00.md b/docs/job_specs/report_iterative/2n-skx/vpp-mrr-00.md
index 4633026366..8b327b1d21 100644
--- a/docs/job_specs/report_iterative/2n-skx/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/2n-skx/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 2n-skx
-### tests 255
-### job hrs est. 22.6
-### job hrs real 22.6
-### test mins est. 2.86
-### test mins real 2.86
+### tests 339
+### job hrs est. 9.23
+### job hrs real 9.23
+### test mins est. 1.63
+### test mins real 1.63
## ./container_memif
### intel-xxv710
#### avf
@@ -119,6 +119,198 @@
1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+##### ethip4udp-nat44ed-h1024-p63-s64512-udir
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-udir
+##### ethip4udp-nat44ed-h4096-p63-s258048-udir
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-udir
+##### ethip4udp-nat44ed-h16384-p63-s1032192-udir
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-udir
+##### ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-udir
+##### ethip4udp-nat44ed-h262144-p63-s16515072-udir
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-udir
+##### ethip4udp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-cps
+##### ethip4udp-nat44ed-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-cps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4udp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h1024-p63-s64512-pps
+##### ethip4udp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h4096-p63-s258048-pps
+##### ethip4udp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4udp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4udp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-cps
+##### ethip4udp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-cps
+##### ethip4udp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-cps
+##### ethip4udp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-cps
+##### ethip4udp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-cps
+##### ethip4udp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h1024-p63-s64512-pps
+##### ethip4udp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h4096-p63-s258048-pps
+##### ethip4udp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h16384-p63-s1032192-pps
+##### ethip4udp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h65536-p63-s4128768-pps
+##### ethip4udp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-h262144-p63-s16515072-pps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-cps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-cps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-cps
+##### ethip4tcp-nat44ed-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h1024-p63-s64512-pps
+##### ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h4096-p63-s258048-pps
+##### ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+##### ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+##### ethip4tcp-ip4base-h1024-p63-s64512-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-cps
+##### ethip4tcp-ip4base-h4096-p63-s258048-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-cps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-cps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-cps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-cps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-cps
+##### ethip4tcp-ip4base-h1024-p63-s64512-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h1024-p63-s64512-pps
+##### ethip4tcp-ip4base-h4096-p63-s258048-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h4096-p63-s258048-pps
+##### ethip4tcp-ip4base-h16384-p63-s1032192-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h16384-p63-s1032192-pps
+##### ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+#4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h65536-p63-s4128768-pps
+##### ethip4tcp-ip4base-h262144-p63-s16515072-pps
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4tcp-ip4base-h262144-p63-s16515072-pps
#### dpdk-vfio-pci
##### ethip4-ip4base
1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
@@ -263,10 +455,6 @@
1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
-##### dot1q-l2bdbasemaclrn-gbp
-1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
-4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-gbp
##### eth-l2xcbase
1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
@@ -387,4 +575,3 @@
1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
-
diff --git a/docs/job_specs/report_iterative/2n-zn2/dpdk-mlr-00.md b/docs/job_specs/report_iterative/2n-zn2/dpdk-mlr-00.md
new file mode 100644
index 0000000000..f66aee1022
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/dpdk-mlr-00.md
@@ -0,0 +1,50 @@
+# 2n-zn2
+### tests 36
+### job hrs est. 2.5
+### job hrs real 2.5
+### test mins est. 3.13
+### test mins real 3.13
+### intel-x710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 1518b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 9000b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND imix AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+### intel-xxv710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 1518b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND 9000b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+1c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND imix AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
diff --git a/docs/job_specs/report_iterative/2n-zn2/dpdk-mrr-00.md b/docs/job_specs/report_iterative/2n-zn2/dpdk-mrr-00.md
new file mode 100644
index 0000000000..71e900dda2
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/dpdk-mrr-00.md
@@ -0,0 +1,26 @@
+# 2n-zn2
+### tests 12
+### job hrs est. 0.3
+### job hrs real [No data available]
+### test mins est. 1.6
+### test mins real [No data available]
+### intel-x710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+### intel-xxv710
+#### dpdk-vfio-pci
+##### eth-l2xcbase-testpmd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-testpmd
+##### ethip4-ip4base-l3fwd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-l3fwd
diff --git a/docs/job_specs/report_iterative/2n-zn2/nfv-density-mlr-00.md b/docs/job_specs/report_iterative/2n-zn2/nfv-density-mlr-00.md
new file mode 100644
index 0000000000..75c80247a9
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/nfv-density-mlr-00.md
@@ -0,0 +1,143 @@
+# 2n-zn2
+### tests 84
+### job hrs est. 10.1
+### job hrs real 10.1
+### test mins est. 7.21
+### test mins real 7.21
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+### intel-xxv710
+#### avf
+##### eth-l2bd-1ch-2mif-1dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+##### eth-l2bd-1ch-4mif-2dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+##### eth-l2bd-1ch-8mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-1ch-12mif-6dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+##### eth-l2bd-2ch-4mif-2dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+##### eth-l2bd-2ch-8mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-4ch-8mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-6ch-12mif-6dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+### intel-xxv710
+#### avf
+##### eth-l2bd-1pl-2mif-1dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-2dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-6dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+##### eth-l2bd-2pl-4mif-2dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+##### eth-l2bd-2pl-4mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+##### eth-l2bd-2pl-8mif-4dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+##### eth-l2bd-6pl-12mif-6dcr1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+## ./nfv_density/vm_vhost/chain
+### intel-xxv710
+#### avf
+##### eth-l2bd-1ch-2vh-1vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+##### eth-l2bd-1ch-4vh-2vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+##### eth-l2bd-1ch-8vh-4vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+##### eth-l2bd-1ch-12vh-6vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+##### eth-l2bd-2ch-4vh-2vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+##### eth-l2bd-2ch-8vh-4vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+##### eth-l2bd-4ch-8vh-4vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+##### eth-l2bd-6ch-12vh-6vm1t-vppip4
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+### intel-xxv710
+#### avf
+##### dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+##### dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+##### dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+##### dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+1c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+2c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+4c AND imix AND ndrpdr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_iterative/2n-zn2/nfv-density-mrr-00.md b/docs/job_specs/report_iterative/2n-zn2/nfv-density-mrr-00.md
new file mode 100644
index 0000000000..e20c13eb12
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/nfv-density-mrr-00.md
@@ -0,0 +1,143 @@
+# 2n-zn2
+### tests 84
+### job hrs est. 4.4
+### job hrs real 4.4
+### test mins est. 3.14
+### test mins real 3.14
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+### intel-xxv710
+#### avf
+##### eth-l2bd-1ch-2mif-1dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2mif-1dcr1t-vppip4
+##### eth-l2bd-1ch-4mif-2dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4mif-2dcr1t-vppip4
+##### eth-l2bd-1ch-8mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-1ch-12mif-6dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12mif-6dcr1t-vppip4
+##### eth-l2bd-2ch-4mif-2dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4mif-2dcr1t-vppip4
+##### eth-l2bd-2ch-8mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-4ch-8mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8mif-4dcr1t-vppip4
+##### eth-l2bd-6ch-12mif-6dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12mif-6dcr1t-vppip4
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+### intel-xxv710
+#### avf
+##### eth-l2bd-1pl-2mif-1dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-1dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-2dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-2dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-4dcr1t-vppip4
+##### eth-l2bd-1pl-2mif-6dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1pl-2mif-6dcr1t-vppip4
+##### eth-l2bd-2pl-4mif-2dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-2dcr1t-vppip4
+##### eth-l2bd-2pl-4mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-4mif-4dcr1t-vppip4
+##### eth-l2bd-2pl-8mif-4dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2pl-8mif-4dcr1t-vppip4
+##### eth-l2bd-6pl-12mif-6dcr1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6pl-12mif-6dcr1t-vppip4
+## ./nfv_density/vm_vhost/chain
+### intel-xxv710
+#### avf
+##### eth-l2bd-1ch-2vh-1vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-2vh-1vm1t-vppip4
+##### eth-l2bd-1ch-4vh-2vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-4vh-2vm1t-vppip4
+##### eth-l2bd-1ch-8vh-4vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-8vh-4vm1t-vppip4
+##### eth-l2bd-1ch-12vh-6vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-1ch-12vh-6vm1t-vppip4
+##### eth-l2bd-2ch-4vh-2vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-4vh-2vm1t-vppip4
+##### eth-l2bd-2ch-8vh-4vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-2ch-8vh-4vm1t-vppip4
+##### eth-l2bd-4ch-8vh-4vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-4ch-8vh-4vm1t-vppip4
+##### eth-l2bd-6ch-12vh-6vm1t-vppip4
+1c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+2c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+4c AND imix AND mrr AND xxv710 AND drv_avf AND eth-l2bd-6ch-12vh-6vm1t-vppip4
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+### intel-xxv710
+#### avf
+##### dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+1c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+2c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+4c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-2vh-1vm1t-testpmd
+##### dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+1c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+2c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+4c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-4vh-2vm1t-testpmd
+##### dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+1c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+2c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+4c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-8vh-4vm1t-testpmd
+##### dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+1c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+2c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+4c AND imix AND mrr AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-12vh-6vm1t-testpmd
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_iterative/2n-zn2/reconf-00.md b/docs/job_specs/report_iterative/2n-zn2/reconf-00.md
new file mode 100644
index 0000000000..bb291cbdbb
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/reconf-00.md
@@ -0,0 +1,41 @@
+# 2n-zn2
+### tests 12
+### job hrs est. 1.07
+### job hrs real 1.07
+### test mins est. 5.36
+### test mins real 5.36
+## ./container_memif
+## ./crypto
+## ./ip4
+## ./ip4_tunnels
+## ./ip6
+## ./ip6_tunnels
+## ./l2
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+### intel-xxv710
+#### avf
+##### dot1qip4vxlan-l2bd-1ch-1ach-2vh-1vm1t-testpmd
+1c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-1ach-2vh-1vm1t-testpmd
+2c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-1ach-2vh-1vm1t-testpmd
+4c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-1ch-1ach-2vh-1vm1t-testpmd
+##### dot1qip4vxlan-l2bd-2ch-1ach-4vh-2vm1t-testpmd
+1c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-1ach-4vh-2vm1t-testpmd
+2c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-1ach-4vh-2vm1t-testpmd
+4c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-2ch-1ach-4vh-2vm1t-testpmd
+##### dot1qip4vxlan-l2bd-4ch-1ach-8vh-4vm1t-testpmd
+1c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-1ach-8vh-4vm1t-testpmd
+2c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-1ach-8vh-4vm1t-testpmd
+4c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-4ch-1ach-8vh-4vm1t-testpmd
+##### dot1qip4vxlan-l2bd-6ch-1ach-12vh-6vm1t-testpmd
+1c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-1ach-12vh-6vm1t-testpmd
+2c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-1ach-12vh-6vm1t-testpmd
+4c AND imix AND reconf AND xxv710 AND drv_avf AND dot1qip4vxlan-l2bd-6ch-1ach-12vh-6vm1t-testpmd
+## ./srv6
+## ./tcp
+## ./vm_vhost
+## ./vts
diff --git a/docs/job_specs/report_iterative/2n-zn2/soak-00.md b/docs/job_specs/report_iterative/2n-zn2/soak-00.md
new file mode 100644
index 0000000000..a8cafff05e
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/soak-00.md
@@ -0,0 +1,64 @@
+
+# 2n-zn2
+### tests 12
+### job hrs est. 6.25
+### job hrs real 6.25
+### test mins est. 31.25
+### test mins real 31.25
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND soak AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND soak AND xxv710 AND drv_avf AND ethip4-ip4base
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+## ./ip4_tunnels
+## ./ip6
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND soak AND xxv710 AND drv_avf AND ethip6-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND soak AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+## ./ip6_tunnels
+## ./l2
+#### avf
+##### eth-l2xcbase
+1c AND 64b AND soak AND xxv710 AND drv_avf AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+#### dpdk-vfio-pci
+##### eth-l2xcbase
+1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+#### avf
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND soak AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND soak AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+# #### dpdk-vfio-pci
+# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+# 1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+# 1c AND 64b AND soak AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
diff --git a/docs/job_specs/report_iterative/2n-zn2/vpp-mlr-00.md b/docs/job_specs/report_iterative/2n-zn2/vpp-mlr-00.md
new file mode 100644
index 0000000000..50ed95b3af
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/vpp-mlr-00.md
@@ -0,0 +1,536 @@
+# 2n-zn2
+### tests 357
+### job hrs est. 35
+### job hrs real 35
+### test mins est. 5.78
+### test mins real 5.78
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+### intel-x710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+### mellanox-cx556a
+#### rdma-core
+##### ethip4-ip4base
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND x710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+### intel-xxv710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6base
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+2c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+4c AND 78b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2patch
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+##### eth-l2xcbase
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2patch
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND ndrpdr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
+### intel-xxv710
+#### avf
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 114b AND ndrpdr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+
diff --git a/docs/job_specs/report_iterative/2n-zn2/vpp-mrr-00.md b/docs/job_specs/report_iterative/2n-zn2/vpp-mrr-00.md
new file mode 100644
index 0000000000..2127e7d5e5
--- /dev/null
+++ b/docs/job_specs/report_iterative/2n-zn2/vpp-mrr-00.md
@@ -0,0 +1,536 @@
+# 2n-zn2
+### tests 357
+### job hrs est. 10
+### job hrs real 10
+### test mins est. 1.65
+### test mins real 1.65
+## ./container_memif
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base-eth-2memif-1dcr
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base-eth-2memif-1dcr
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+##### dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2memif-1dcr
+##### eth-l2xcbase-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2memif-1dcr
+##### ethip4-ip4base-eth-2memif-1dcr
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base-eth-2memif-1dcr
+## ./crypto
+## ./ip4
+### intel-x710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND x710 AND drv_avf AND ethip4-ip4scale2m-rnd
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND ethip4-ip4base
+### intel-xxv710
+#### avf
+##### ethip4-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1-p63-s63
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1-p63-s63
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h1024-p63-s64512
+##### ethip4udp-nat44det-h16384-p63-s1032192
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h16384-p63-s1032192
+##### ethip4udp-nat44det-h65536-p63-s4128758
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h65536-p63-s4128758
+##### ethip4udp-nat44det-h262144-p63-s16515072
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND ethip4udp-nat44det-h262144-p63-s16515072
+#### dpdk-vfio-pci
+##### ethip4-ip4base
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4-ip4scale2m-rnd
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND ethip4udp-nat44det-h1-p1-s1
+### mellanox-cx556a
+#### rdma-core
+##### ethip4-ip4base
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4base
+##### ethip4-ip4scale20k
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale20k-rnd
+##### ethip4-ip4scale200k
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k
+##### ethip4-ip4scale200k-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale200k-rnd
+##### ethip4-ip4scale2m
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m
+##### ethip4-ip4scale2m-rnd
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4-ip4scale2m-rnd
+##### dot1q-ip4base
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip4base
+##### ethip4udp-ip4base-iacl50sf-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sf-10kflows
+##### ethip4udp-ip4base-iacl50sl-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-iacl50sl-10kflows
+##### ethip4udp-ip4base-oacl50sf-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sf-10kflows
+##### ethip4udp-ip4base-oacl50sl-10kflows
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-ip4base-oacl50sl-10kflows
+##### ethip4udp-nat44det-h1-p1-s1
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1-p1-s1
+##### ethip4udp-nat44det-h1024-p63-s64512
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND ethip4udp-nat44det-h1024-p63-s64512
+## ./ip4_tunnels
+## ./ip6
+### intel-x710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND x710 AND drv_avf AND ethip6-ip6scale2m
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND mrr AND x710 AND drv_vfio_pci AND ethip6-ip6base
+### intel-xxv710
+#### avf
+##### ethip6-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_avf AND dot1q-ip6base
+#### dpdk-vfio-pci
+##### ethip6-ip6base
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND xxv710 AND drv_vfio_pci AND ethip6-ip6scale2m
+### mellanox-cx556a
+#### rdma-core
+##### ethip6-ip6base
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6base
+##### ethip6-ip6scale20k
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale20k
+##### ethip6-ip6scale200k
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale200k
+##### ethip6-ip6scale2m
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND ethip6-ip6scale2m
+##### dot1q-ip6base
+1c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+2c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+4c AND 78b AND mrr AND cx556a AND drv_rdma_core AND dot1q-ip6base
+## ./ip6_tunnels
+## ./l2
+### intel-x710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND x710 AND drv_avf AND eth-l2bdscale1mmaclrn
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND x710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn
+##### eth-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2patch
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdscale1mmaclrn
+##### eth-l2xcbase
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2patch
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+##### eth-l2bdscale10kmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale10kmaclrn
+##### eth-l2bdscale100kmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale100kmaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdscale1mmaclrn
+##### dot1q-l2bdbasemaclrn
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn
+##### eth-l2xcbase
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase
+##### dot1q-l2xcbase
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase
+##### eth-l2patch
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2patch
+## ./lb
+## ./nfv_density/dcr_memif/chain
+## ./nfv_density/dcr_memif/chain_ipsec
+## ./nfv_density/dcr_memif/pipeline
+## ./nfv_density/vm_vhost/chain
+## ./nfv_density/vm_vhost/chain_dot1qip4vxlan
+## ./srv6
+## ./tcp
+## ./vm_vhost
+### intel-xxv710
+#### avf
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_avf AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+#### dpdk-vfio-pci
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND xxv710 AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm
+##### dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+##### eth-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm
+##### eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm
+##### dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+1c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+2c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+4c AND 64b AND mrr AND cx556a AND drv_rdma_core AND dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc
+## ./vts
+### intel-xxv710
+#### avf
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm
+##### ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+1c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+2c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+4c AND 114b AND mrr AND xxv710 AND drv_avf AND ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm
+
diff --git a/docs/job_specs/report_iterative/3n-dnv/vpp-mrr-00.md b/docs/job_specs/report_iterative/3n-dnv/vpp-mrr-00.md
index 5c02a9d52f..613a648f62 100644
--- a/docs/job_specs/report_iterative/3n-dnv/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/3n-dnv/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 3n-dnv
### tests 54
### job hrs est. 2.5
-### job hrs real xx.x
-### test mins est. 2.8
-### test mins real x.x
+### job hrs real 2.5
+### test mins est. 2.5
+### test mins real 2.5
## ./container_memif
## ./crypto
### intel-x553
diff --git a/docs/job_specs/report_iterative/3n-hsw/vpp-mrr-00.md b/docs/job_specs/report_iterative/3n-hsw/vpp-mrr-00.md
index be77cad615..f43abcf3f1 100644
--- a/docs/job_specs/report_iterative/3n-hsw/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/3n-hsw/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 3n-hsw
### tests 150
-### job hrs est. 4.75
-### job hrs real 4.75
-### test mins est. 1.9
-### test mins real 1.9
+### job hrs est. 5.6
+### job hrs real 5.6
+### test mins est. 2.24
+### test mins real 2.24
#
# Tests with avf driver are not executed on 3n-hsw systems as it requires
# enabling of SoftIOMMU thats quite difficult there.
diff --git a/docs/job_specs/report_iterative/3n-skx/vpp-mrr-00.md b/docs/job_specs/report_iterative/3n-skx/vpp-mrr-00.md
index e8cefb487e..5c727c8a75 100644
--- a/docs/job_specs/report_iterative/3n-skx/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/3n-skx/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 3n-skx
### tests 288
-### job hrs est. 13.2
-### job hrs real 13.2
-### test mins est. 2.75
-### test mins real 2.75
+### job hrs est. 13.8
+### job hrs real 13.8
+### test mins est. 2.88
+### test mins real 2.88
## ./container_memif
### intel-xxv710
#### avf
diff --git a/docs/job_specs/report_iterative/3n-tsh/vpp-mrr-00.md b/docs/job_specs/report_iterative/3n-tsh/vpp-mrr-00.md
index 11eb14429c..980cfcdb48 100644
--- a/docs/job_specs/report_iterative/3n-tsh/vpp-mrr-00.md
+++ b/docs/job_specs/report_iterative/3n-tsh/vpp-mrr-00.md
@@ -1,9 +1,9 @@
# 3n-tsh
-### tests 201
-### job hrs est. 20.2
-### job hrs real 20.2
-### test mins est. 6.03
-### test mins real 6.03
+### tests 198
+### job hrs est. 22.3
+### job hrs real 22.3
+### test mins est. 6.76
+### test mins real 6.76
## ./container_memif
### intel-x520-da2
#### dpdk-vfio-pci
diff --git a/docs/lab/testbed_specifications.md b/docs/lab/testbed_specifications.md
index 703ebb1427..1b45f625e9 100644
--- a/docs/lab/testbed_specifications.md
+++ b/docs/lab/testbed_specifications.md
@@ -10,6 +10,7 @@
1. [2-Node-Denverton Atom Intel (2n-dnv)](#2-node-denverton-atom-intel-2n-dnv)
1. [2-Node-IxiaPS1L47 Ixia PSOne L47 (2n-ps1)](#2-node-ixiaps1l47-ixia-psone-l47-2n-ps1)
1. [2-Node-Cascadelake Xeon Intel (2n-clx)](#2-node-cascadelake-xeon-intel-2n-clx)
+ 1. [2-Node-Zen2 EPYC AMD (2n-zn2)](#2-node-zen2-epyc-amd-2n-zn)
1. [3-Node-Haswell Xeon Intel (3n-skx)](#3-node-haswell-xeon-intel-3n-skx)
1. [3-Node-Skylake Xeon Intel (3n-skx)](#3-node-skylake-xeon-intel-3n-skx)
1. [3-Node-TaiShan Arm Huawei (3n-tsh)](#3-node-taishan-arm-huawei-3n-tsh)
@@ -27,11 +28,12 @@
1. [Per Testbed Server Allocation and Naming](#per-testbed-server-allocation-and-naming)
1. [1-Node-Skylake Servers (1n-skx) PROD](#1-node-skylake-servers-1n-skx-prod)
1. [1-Node-Thunderx2 Servers (1n-tx2) WIP](#1-node-thunderx2-servers-1n-tx2-wip)
- 1. [1-Node-Cascadelake Servers (1n-clx) SETUP](#1-node-cascadelake-servers-1n-clx-setup)
+ 1. [1-Node-Cascadelake Servers (1n-clx) PROD](#1-node-cascadelake-servers-1n-clx-prod)
1. [2-Node-Skylake Servers (2n-skx) PROD](#2-node-skylake-servers-2n-skx-prod)
1. [2-Node-Denverton Servers (2n-dnv) TODO](#2-node-denverton-servers-2n-dnv-todo)
1. [2-Node-IxiaPS1L47 Servers (2n-ps1) VERIFY](#2-node-ixiaps1l47-servers-2n-ps1-verify)
1. [2-Node-Cascadelake Servers (2n-clx) SETUP](#2-node-cascadelake-servers-2n-clx-setup)
+ 1. [2-Node-Zen2 Servers (2n-zn2) SETUP](#2-node-zen2-servers-2n-zn2-setup])
1. [3-Node-Haswell Servers (3n-hsw) PROD](#3-node-haswell-servers-3n-hsw-prod)
1. [3-Node-Skylake Servers (3n-skx) PROD](#3-node-skylake-servers-3n-skx-prod)
1. [3-Node-Rangeley Servers (3n-rng) VERIFY](#3-node-rangeley-servers-3n-rng-verify)
@@ -44,7 +46,8 @@
1. [2-Node-Skylake Wiring (2n-skx) PROD](#2-node-skylake-wiring-2n-skx-prod)
1. [2-Node-Denverton Wiring (2n-dnv) TODO](#2-node-denverton-wiring-2n-dnv-todo)
1. [2-Node-IxiaPS1L47 Wiring (2n-ps1) VERIFY](#2-node-ixiaps1l47-wiring-2n-ps1-verify)
- 1. [2-Node-Cascadelake Wiring (2n-clx) SETUP](#2-node-cascadelake-wiring-2n-clx-setup)
+ 1. [2-Node-Cascadelake Wiring (2n-clx) PROD](#2-node-cascadelake-wiring-2n-clx-prod)
+ 1. [2-Node-Zen2 Wiring (2n-zen2) SETUP](#2-node-zen2-wiring-2n-zen2-setup])
1. [3-Node-Haswell Wiring (3n-hsw) PROD](#3-node-haswell-wiring-3n-hsw-prod)
1. [3-Node-Skylake Wiring (3n-skx) PROD](#3-node-skylake-wiring-3n-skx-prod)
1. [3-Node-Rangeley Wiring (3n-rng) TODO](#3-node-rangeley-wiring-3n-rng-todo)
@@ -68,22 +71,23 @@ hosted by LFN FD.io CSIT project.
### Summary List
```
- #. CSIT_tb Purpose SUT TG #TB #SUT #TG #hsw #skx #ps1 #rng #dnv #tx2 #tsh #mcb
- 1. 1-Node-VIRL dev hsw --- 3 3 0 3 0 0 0 0 0 0 0
- 2. 1-Node-Skylake dev skx na 2 2 0 0 2 0 0 0 0 0 0
- 3. 1-Node-Thunderx2 dev tx2 na 1 1 0 0 0 0 0 0 1 0 0
- 4. 1-Node-Cascadelake dev clx lcx 1 1 0 0 0 0 0 0 0 0 0
- 5. 2-Node-Skylake perf skx skx 4 4 4 0 8 0 0 0 0 0 0
- 6. 2-Node-Denverton perf dnv skx 1 1 1 0 .5 0 0 1 0 0 0
- 7. 2-Node-IxiaPS1L47 tcp skx ps1 1 1 1 0 1 1 0 0 0 0 0
- 8. 2-Node-Cascadelake perf clx clx 3 3 3 0 0 0 0 0 0 0 0
- 9. 3-Node-Haswell perf hsw hsw 3 6 3 9 0 0 0 0 0 0 0
-10. 3-Node-Skylake perf skx skx 2 4 2 0 6 0 0 0 0 0 0
-11. 3-Node-Rangeley perf rng skx 1 3 1 0 0 0 2 0 0 0 0
-12. 3-Node-Taishan perf tsh skx 1 2 1 0 .5 0 0 0 0 2 0
-13. 3-Node-Mcbin perf mcb skx 1 2 1 0 .5 0 0 0 0 0 2
-14. 3-Node-Denverton perf dnv skx 1 2 1 0 .5 0 0 2 0 0 0
- Totals: 22 35 18 12 19 1 2 3 1 2 2
+ #. CSIT_tb Purpose SUT TG #TB #SUT #TG #hsw #skx #ps1 #rng #dnv #tx2 #tsh #clx #zn2
+ 1. 1-Node-VIRL dev hsw --- 3 3 0 3 0 0 0 0 0 0 0 0
+ 2. 1-Node-Skylake dev skx na 2 2 0 0 2 0 0 0 0 0 0 0
+ 3. 1-Node-Thunderx2 idle tx2 na 1 1 0 0 0 0 0 0 1 0 0 0
+ 4. 1-Node-Thunderx2 dev tx2 na 2 2 0 0 0 0 0 0 2 0 0 0
+ 5. 1-Node-Cascadelake dev clx lcx 1 1 0 0 0 0 0 0 0 0 1 0
+ 6. 2-Node-Skylake perf skx skx 4 4 4 0 8 0 0 0 0 0 0 0
+ 7. 2-Node-Denverton perf dnv skx 1 1 1 0 .5 0 0 1 0 0 0 0
+ 8. 2-Node-IxiaPS1L47 tcp skx ps1 1 1 1 0 1 1 0 0 0 0 0 0
+ 9. 2-Node-Cascadelake perf clx clx 3 3 3 0 0 0 0 0 0 0 6 0
+10. 3-Node-Haswell perf hsw hsw 3 6 3 9 0 0 0 0 0 0 0 0
+11. 3-Node-Skylake perf skx skx 2 4 2 0 6 0 0 0 0 0 0 0
+12. 3-Node-Rangeley perf rng skx 1 3 1 0 0 0 2 0 0 0 0 0
+13. 3-Node-Taishan perf tsh skx 1 2 .5 0 .5 0 0 0 0 2 0 0
+14. 3-Node-Denverton perf dnv skx 1 2 1 0 .5 0 0 2 0 0 0 0
+15. 2-Node-Zen2 perf zn2 zn2 1 1 1 0 0 0 0 0 0 0 0 2
+ Totals: 27 36 16.5 12 18.5 1 2 3 3 2 7 2
```
### 1-Node-Skylake Xeon Intel (1n-skx)
@@ -133,6 +137,13 @@ one TG (Server-Type-C3) connected in a 2-node circular topology
([Server Types](#server-types)).
Used for FD.io performance tests.
+### 2-Node-Zen2 EPYC AMD (2n-zn2)
+
+Each 2-Node-Zen2 testbed includes one SUT (Server-Type-D1) and
+one TG (Server-Type-D2) connected in a 2-node circular topology
+([Server Types](#server-types)).
+Used for FD.io performance tests.
+
### 3-Node-Haswell Xeon Intel (3n-hsw)
Each 3-Node-Haswell testbed includes two SUTs (Server-Type-A1) and one
@@ -292,6 +303,8 @@ n/a | s21-t34-sut2
10.30.55.21 | s36-t28-tg1
10.30.55.22 | s37-t29-sut1
10.30.55.23 | s38-t29-tg1
+10.30.55.24 | s60-t210-sut1
+10.30.55.25 | s61-t210-tg1
10.30.55.255 | Broadcast
### Management VLAN IP Addresses
@@ -381,6 +394,8 @@ Name | Comment
10.32.8.21 | s36-t28-tg1
10.32.8.22 | s37-t29-sut1
10.32.8.23 | s38-t29-tg1
+10.32.8.24 | s60-t210-sut1
+10.32.8.25 | s61-t210-tg1
10.32.8.255 | Broadcast
## Server Specifications
@@ -634,7 +649,6 @@ FD.io CSIT lab contains following server types:
- PCIe Slot6 86:00.xx: empty.
- PCIe Slot8 af:00.xx: empty.
- PCIe Slot10 d8:00.xx: empty.
-
15. Server-Type-C2: Purpose - Cascadelake Xeon SUT for FD.io performance testing.
- Quantity: 3
- Physical connectivity:
@@ -651,7 +665,6 @@ FD.io CSIT lab contains following server types:
- PCIe Slot2 18:00.xx: x710-4p10GE Intel.
- PCIe Slot4 3b:00.xx: xxv710-DA2-2p25GE Intel.
- PCIe Slot9 5e:00.xx: ConnectX5-2p100GE Mellanox.
- - Only 4 of mcx556a-edat ConnectX5-2p100GE NICs are in the lab, so only two out of three 2-node testbeds are equipped with them.
- Numa1: (x16, x16, x16 PCIe3.0 lanes)
- PCIe Slot6 86:00.xx: empty.
- PCIe Slot8 af:00.xx: empty.
@@ -672,12 +685,10 @@ FD.io CSIT lab contains following server types:
- PCIe Slot2 18:00.xx: x710-4p10GE Intel.
- PCIe Slot4 3b:00.xx: xxv710-DA2 2p25GE Intel.
- PCIe Slot9 5e:00.xx: ConnectX5-2p100GE Mellanox.
- - Only 4 of mcx556a-edat ConnectX5-2p100GE NICs are in the lab, so only two out of three 2-node testbeds are equipped with them.
- Numa1: (x16, x16, x16 PCIe3.0 lanes)
- PCIe Slot6 86:00.xx: empty.
- PCIe Slot8 af:00.xx: empty.
- PCIe Slot10 d8:00.xx: empty.
-
17. Server-Type-C4: Purpose - Cascadelake Xeon Backend hosts for FD.io builds and data processing.
- Quantity: 3.
- Physical connectivity:
@@ -694,6 +705,36 @@ FD.io CSIT lab contains following server types:
- no cards.
- Numa1:
- no cards.
+18. Server-Type-D1: Purpose - Zen2 EPYC SUT for FD.io performance testing.
+ - Quantity: 1.
+ - Physical connectivity:
+ - IPMI and host management ports.
+ - NIC ports connected into 2-node testbed topologies.
+ - Main HW configuration:
+ - Chassis: SuperMicro AS-1114S-WTRT
+ - Processors: 1* AMD EPYC 7532 2.4 GHz.
+ - RAM Memory: 8* 32GB DDR4-2933.
+ - Disks: 1* 1TB SATA SSD.
+ - NICs configuration:
+ - Numa0: (x16, x16, x16 PCIe3.0 lanes)
+ - PCIe Slot1 01:00.xx: x710-4p10GE Intel.
+ - PCIe Slot2 41:00.xx: xxv710-DA2-2p25GE Intel.
+ - PCIe Slot3 81:00.xx: mcx556a-edat ConnectX5-2p100GE Mellanox.
+19. Server-Type-D2: Purpose - Zen2 EPYC TG for FD.io performance testing.
+ - Quantity: 1.
+ - Physical connectivity:
+ - IPMI and host management ports.
+ - NIC ports connected into 2-node testbed topologies.
+ - Main HW configuration:
+ - Chassis: SuperMicro AS-1114S-WTRT
+ - Processors: 1* AMD EPYC 7532 2.4 GHz.
+ - RAM Memory: 8* 32GB DDR4-2933.
+ - Disks: 1* 1TB SATA SSD.
+ - NICs configuration:
+ - Numa0: (x16, x16, x16 PCIe3.0 lanes)
+ - PCIe Slot1 01:00.xx: mcx556a-edat ConnectX5-2p100GE Mellanox.
+ - PCIe Slot2 41:00.xx: x710-4p10GE Intel.
+ - PCIe Slot3 81:00.xx: xxv710-DA2 2p25GE Intel.
```
### Naming Convention
@@ -771,7 +812,7 @@ connectivity and wiring across defined CSIT testbeds:
- s27-t13-sut1-c6/p2 - 40GE-port2 XL710-QDA2-2p40GE.
```
-#### 1-Node-Cascadelake Servers (1n-clx) SETUP
+#### 1-Node-Cascadelake Servers (1n-clx) PROD
```
- SUT [Server-Type-C1]:
@@ -1040,6 +1081,39 @@ Note: ServerB28 (TG) is shared between testbed26 & testbed35
- s38-t29-tg1-c9/p2 - FUTURE 100GE-port2 ConnectX5-2p100GE.
```
+#### 2-Node-Zen2 Servers (2n-zn2) SETUP
+
+```
+- SUT [Server-Type-D1]:
+ - testbedname: testbed210.
+ - hostname: s60-t210-sut1.
+ - IPMI IP: 10.30.55.24
+ - Host IP: 10.32.8.24
+ - portnames:
+ - s60-t210-sut1-c1/p1 - 10GE-port1 x710-4p10GE.
+ - s60-t210-sut1-c1/p2 - 10GE-port2 x710-4p10GE.
+ - s60-t210-sut1-c1/p3 - 10GE-port3 x710-4p10GE.
+ - s60-t210-sut1-c1/p4 - 10GE-port4 x710-4p10GE.
+ - s60-t210-sut1-c2/p1 - 25GE-port1 xxv710-DA2-2p25GE.
+ - s60-t210-sut1-c2/p2 - 25GE-port2 xxv710-DA2-2p25GE.
+ - s60-t210-sut1-c3/p1 - 100GE-port1 ConnectX5-2p100GE.
+ - s60-t210-sut1-c3/p2 - 100GE-port2 ConnectX5-2p100GE.
+- TG [Server-Type-D2]:
+ - testbedname: testbed210.
+ - hostname: s61-t210-tg1.
+ - IPMI IP: 10.30.55.25
+ - Host IP: 10.32.8.25
+ - portnames:
+ - s61-t210-tg1-c1/p1 - 100GE-port1 ConnectX5-2p100GE.
+ - s61-t210-tg1-c1/p2 - 100GE-port2 ConnectX5-2p100GE.
+ - s61-t210-tg1-c2/p1 - 10GE-port1 x710-4p10GE.
+ - s61-t210-tg1-c2/p2 - 10GE-port2 x710-4p10GE.
+ - s61-t210-tg1-c2/p3 - 10GE-port3 x710-4p10GE.
+ - s61-t210-tg1-c2/p4 - 10GE-port4 x710-4p10GE.
+ - s61-t210-tg1-c3/p1 - 25GE-port1 xxv710-DA2-2p25GE.
+ - s61-t210-tg1-c3/p2 - 25GE-port2 xxv710-DA2-2p25GE.
+```
+
#### 3-Node-Haswell Servers (3n-hsw) PROD
```
@@ -1530,7 +1604,7 @@ To be completed.
- t25-tg1-p4 to t25-sut1-c2/p4.
```
-#### 2-Node-Cascadelake Wiring (2n-clx) SETUP
+#### 2-Node-Cascadelake Wiring (2n-clx) PROD
```
- testbed27:
@@ -1574,6 +1648,24 @@ To be completed.
- s37-t29-sut1-c9/p2 to s38-t29-tg1-c9/p2.
```
+#### 2-Node-Zen2 Wiring (2n-zen2) SETUP
+
+```
+- testbed210:
+ - ring1 10GE-ports x710-4p10GE on SUT:
+ - s61-t210-tg1-c2/p1 to s60-t210-sut1-c1/p1.
+ - s60-t210-sut1-c1/p2 to s61-t210-tg1-c2/p2.
+ - ring2 10GE-ports x710-4p10GE on SUT:
+ - s61-t210-tg1-c2/p3 to s60-t210-sut1-c1/p3.
+ - s60-t210-sut1-c1/p4 to s61-t210-tg1-c2/p4.
+ - ring3 25GE-ports xxv710-DA2-2p25GE on SUT
+ - s61-t210-tg1-c3/p1 to s60-t210-sut1-c2/p1.
+ - s60-t210-sut1-c2/p2 to s61-t210-tg1-c3/p2.
+ - ring4 100GE-ports ConnectX5-2p100GE on SUT:
+ - s61-t210-tg1-c1/p1 to s60-t210-sut1-c3/p1.
+ - s60-t210-sut1-c3/p2 to s61-t210-tg1-c1/p2.
+```
+
#### 3-Node-Haswell Wiring (3n-hsw) PROD
```
diff --git a/docs/lab/testbeds_sm_zn2_hw_bios_cfg.md b/docs/lab/testbeds_sm_zn2_hw_bios_cfg.md
new file mode 100644
index 0000000000..6e274da971
--- /dev/null
+++ b/docs/lab/testbeds_sm_zn2_hw_bios_cfg.md
@@ -0,0 +1,634 @@
+# SuperMicro Cascadelake Servers - HW and BIOS Configuration
+
+1. [Linux lscpu](#linux-lscpu)
+1. [Linux dmidecode](#dmidecode)
+1. [Linux dmidecode pci](#linux-dmidecode-pci)
+1. [Linux dmidecode memory](#linux-dmidecode-memory)
+1. [EPYC zn2 Server BIOS Configuration](#epyc-zn2-server-bios-configuration)
+ 1. [Boot Feature](#boot-feature)
+ 1. [CPU Configuration](#cpu-configuration)
+ 1. [Advanced Power Management Configuration](#advanced-power-management-configuration)
+ 1. [CPU P State Control](#cpu-p-state-control)
+ 1. [Hardware PM State Control](#hardware-pm-state-control)
+ 1. [CPU C State Control](#cpu-c-state-control)
+ 1. [Package C State Control](#package-c-state-control)
+ 1. [CPU T State Control](#cpu-t-state-control)
+ 1. [Chipset Configuration](#chipset-configuration)
+ 1. [North Bridge](#north-bridge)
+ 1. [UPI Configuration](#upi-configuration)
+ 1. [Memory Configuration](#memory-configuration)
+ 1. [IIO Configuration](#iio-configuration)
+ 1. [CPU1 Configuration](#cpu1-configuration)
+ 1. [CPU2 Configuration](#cpu2-configuration)
+ 1. [South Bridge](#south-bridge)
+ 1. [PCIe/PCI/PnP Configuration](#pciepcipnp-configuration)
+ 1. [ACPI Settings](#acpi-settings)
+1. [EPYC zn2 Server Firmware Inventory](#epyc-zn2-server-firmware-inventory)
+
+## Linux lscpu
+
+```
+$ lscpu
+Architecture: x86_64
+CPU op-mode(s): 32-bit, 64-bit
+Byte Order: Little Endian
+CPU(s): 64
+On-line CPU(s) list: 0-63
+Thread(s) per core: 2
+Core(s) per socket: 32
+Socket(s): 1
+NUMA node(s): 2
+Vendor ID: AuthenticAMD
+CPU family: 23
+Model: 49
+Model name: AMD EPYC 7532 32-Core Processor
+Stepping: 0
+CPU MHz: 1981.470
+CPU max MHz: 2400.0000
+CPU min MHz: 1500.0000
+BogoMIPS: 4800.05
+Virtualization: AMD-V
+L1d cache: 32K
+L1i cache: 32K
+L2 cache: 512K
+L3 cache: 16384K
+NUMA node0 CPU(s): 0-15,32-47
+NUMA node1 CPU(s): 16-31,48-63
+Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
+```
+
+```
+$ lscpu
+Architecture: x86_64
+CPU op-mode(s): 32-bit, 64-bit
+Byte Order: Little Endian
+CPU(s): 64
+On-line CPU(s) list: 0-63
+Thread(s) per core: 2
+Core(s) per socket: 32
+Socket(s): 1
+NUMA node(s): 2
+Vendor ID: AuthenticAMD
+CPU family: 23
+Model: 49
+Model name: AMD EPYC 7532 32-Core Processor
+Stepping: 0
+CPU MHz: 1981.470
+CPU max MHz: 2400.0000
+CPU min MHz: 1500.0000
+BogoMIPS: 4800.05
+Virtualization: AMD-V
+L1d cache: 32K
+L1i cache: 32K
+L2 cache: 512K
+L3 cache: 16384K
+NUMA node0 CPU(s): 0-15,32-47
+NUMA node1 CPU(s): 16-31,48-63
+Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
+```
+
+## Linux dmidecode
+
+```
+ $ dmidecode -t slot
+ Handle 0x0026, DMI type 7, 27 bytes
+ Cache Information
+ Socket Designation: L1 Cache
+ Configuration: Enabled, Not Socketed, Level 1
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 2048 kB
+ Maximum Size: 2048 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 1 ns
+ Error Correction Type: Multi-bit ECC
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+ Handle 0x0027, DMI type 7, 27 bytes
+ Cache Information
+ Socket Designation: L2 Cache
+ Configuration: Enabled, Not Socketed, Level 2
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 16384 kB
+ Maximum Size: 16384 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 1 ns
+ Error Correction Type: Multi-bit ECC
+ System Type: Unified
+ Associativity: 8-way Set-associative
+
+ Handle 0x0028, DMI type 7, 27 bytes
+ Cache Information
+ Socket Designation: L3 Cache
+ Configuration: Enabled, Not Socketed, Level 3
+ Operational Mode: Write Back
+ Location: Internal
+ Installed Size: 262144 kB
+ Maximum Size: 262144 kB
+ Supported SRAM Types:
+ Pipeline Burst
+ Installed SRAM Type: Pipeline Burst
+ Speed: 1 ns
+ Error Correction Type: Multi-bit ECC
+ System Type: Unified
+ Associativity: 16-way Set-associative
+
+ Handle 0x0029, DMI type 4, 48 bytes
+ Processor Information
+ Socket Designation: CPU
+ Type: Central Processor
+ Family: Zen
+ Manufacturer: Advanced Micro Devices, Inc.
+ ID: 10 0F 83 00 FF FB 8B 17
+ Signature: Family 23, Model 49, Stepping 0
+ Flags:
+ FPU (Floating-point unit on-chip)
+ VME (Virtual mode extension)
+ DE (Debugging extension)
+ PSE (Page size extension)
+ TSC (Time stamp counter)
+ MSR (Model specific registers)
+ PAE (Physical address extension)
+ MCE (Machine check exception)
+ CX8 (CMPXCHG8 instruction supported)
+ APIC (On-chip APIC hardware supported)
+ SEP (Fast system call)
+ MTRR (Memory type range registers)
+ PGE (Page global enable)
+ MCA (Machine check architecture)
+ CMOV (Conditional move instruction supported)
+ PAT (Page attribute table)
+ PSE-36 (36-bit page size extension)
+ CLFSH (CLFLUSH instruction supported)
+ MMX (MMX technology supported)
+ FXSR (FXSAVE and FXSTOR instructions supported)
+ SSE (Streaming SIMD extensions)
+ SSE2 (Streaming SIMD extensions 2)
+ HTT (Multi-threading)
+ Version: AMD EPYC 7532 32-Core Processor
+ Voltage: 1.1 V
+ External Clock: 100 MHz
+ Max Speed: 3300 MHz
+ Current Speed: 2400 MHz
+ Status: Populated, Enabled
+ Upgrade: Socket SP3
+ L1 Cache Handle: 0x0026
+ L2 Cache Handle: 0x0027
+ L3 Cache Handle: 0x0028
+ Serial Number: Unknown
+ Asset Tag: Unknown
+ Part Number: Unknown
+ Core Count: 32
+ Core Enabled: 32
+ Thread Count: 64
+ Characteristics:
+ 64-bit capable
+ Multi-Core
+ Hardware Thread
+ Execute Protection
+ Enhanced Virtualization
+ Power/Performance Control
+```
+
+## Linux dmidecode pci
+
+```
+ $ dmidecode -t slot
+ Getting SMBIOS data from sysfs.
+ SMBIOS 3.2.0 present.
+ # SMBIOS implementations newer than version 3.1.1 are not
+ # fully supported by this version of dmidecode.
+
+ Handle 0x000A, DMI type 9, 17 bytes
+ System Slot Information
+ Designation: M.2-HC1 CPU PCI-E 4.0 X4/X2
+ Type: x4 PCI Express 3 x4
+ Current Usage: Available
+ Length: Short
+ ID: 1
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:ff:00.0
+
+ Handle 0x000B, DMI type 9, 17 bytes
+ System Slot Information
+ Designation: M.2-HC2 CPU PCI-E 4.0 X2
+ Type: x2 PCI Express 3 x2
+ Current Usage: Available
+ Length: Short
+ ID: 2
+ Characteristics:
+ 3.3 V is provided
+ Opening is shared
+ PME signal is supported
+ Bus Address: 0000:ff:00.0
+
+ Handle 0x0042, DMI type 9, 17 bytes
+ System Slot Information
+ Designation: RSC-W-66G4 SLOT1 PCI-E 4.0 X16
+ Type: x16 PCI Express 3 x16
+ Current Usage: In Use
+ Length: Long
+ ID: 1
+ Characteristics:
+ 3.3 V is provided
+ PME signal is supported
+ Bus Address: 0000:41:00.0
+
+ Handle 0x0043, DMI type 9, 17 bytes
+ System Slot Information
+ Designation: RSC-W-66G4 SLOT2 PCI-E 4.0 X16
+ Type: x16 PCI Express 3 x16
+ Current Usage: In Use
+ Length: Long
+ ID: 2
+ Characteristics:
+ 3.3 V is provided
+ PME signal is supported
+ Bus Address: 0000:81:00.0
+
+ Handle 0x0045, DMI type 9, 17 bytes
+ System Slot Information
+ Designation: RSC-WR-6 SLOT1 PCI-E 4.0 X16
+ Type: x16 PCI Express 3 x16
+ Current Usage: In Use
+ Length: Long
+ ID: 1
+ Characteristics:
+ 3.3 V is provided
+ PME signal is supported
+ Bus Address: 0000:01:00.0
+
+```
+
+## Linux dmidecode memory
+
+```
+ $ dmidecode -t memory
+ # dmidecode 3.1
+ Getting SMBIOS data from sysfs.
+ SMBIOS 3.2.0 present.
+ # SMBIOS implementations newer than version 3.1.1 are not
+ # fully supported by this version of dmidecode.
+
+ Handle 0x0023, DMI type 16, 23 bytes
+ Physical Memory Array
+ Location: System Board Or Motherboard
+ Use: System Memory
+ Error Correction Type: Multi-bit ECC
+ Maximum Capacity: 2 TB
+ Error Information Handle: 0x0022
+ Number Of Devices: 8
+
+ Handle 0x002B, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x002A
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMA1
+ Bank Locator: P0_Node0_Channel0_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9216
+ Asset Tag: P1-DIMMA1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x002E, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x002D
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMB1
+ Bank Locator: P0_Node0_Channel1_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E91D2
+ Asset Tag: P1-DIMMB1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x0031, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x0030
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMC1
+ Bank Locator: P0_Node0_Channel2_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E918A
+ Asset Tag: P1-DIMMC1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x0034, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x0033
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMD1
+ Bank Locator: P0_Node0_Channel3_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9187
+ Asset Tag: P1-DIMMD1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x0037, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x0036
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMME1
+ Bank Locator: P0_Node0_Channel4_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9178
+ Asset Tag: P1-DIMME1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x003A, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x0039
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMF1
+ Bank Locator: P0_Node0_Channel5_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9206
+ Asset Tag: P1-DIMMF1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x003D, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x003C
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMG1
+ Bank Locator: P0_Node0_Channel6_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9207
+ Asset Tag: P1-DIMMG1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+
+ Handle 0x0040, DMI type 17, 84 bytes
+ Memory Device
+ Array Handle: 0x0023
+ Error Information Handle: 0x003F
+ Total Width: 72 bits
+ Data Width: 64 bits
+ Size: 32 GB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMMH1
+ Bank Locator: P0_Node0_Channel7_Dimm0
+ Type: DDR4
+ Type Detail: Synchronous Registered (Buffered)
+ Speed: 3200 MT/s
+ Manufacturer: SK Hynix
+ Serial Number: 431E9209
+ Asset Tag: P1-DIMMH1_AssetTag (date:19/00)
+ Part Number: HMA84GR7CJR4N-XN
+ Rank: 2
+ Configured Clock Speed: 3200 MT/s
+ Minimum Voltage: 1.2 V
+ Maximum Voltage: 1.2 V
+ Configured Voltage: 1.2 V
+```
+
+## EPYC zn2 Server BIOS Configuration - TG
+
+### Boot Feature
+
+```
+ | Quiet Boot [Enabled] |Boot option |
+ | | |
+ | Option ROM Messages [Force BIOS] | |
+ | Bootup NumLock State [On] | |
+ | Wait For "F1" If Error [Enabled] | |
+ | INT19 Trap Response [Immediate] | |
+ | Re-try Boot [Disabled] | |
+ | | |
+ | Power Configuration | |
+ | Watch Dog Function [Disabled] | |
+ | Restore on AC Power Loss [Last State] | |
+ | Power Button Function [Instant Off] | |
+```
+
+### CPU Configuration
+
+```
+ | ACPI Settings ^| |
+ | -------------------------------------------------- *| |
+ | PCI AER Support [Disabled] *| |
+ | High Precision Event Timer [Disabled] *| |
+ | NUMA Nodes Per Socket [NPS2] *| |
+ | ACPI SRAT L3 Cache As NUMA Domain [Auto] *| |
+ | *| |
+ | CPU Configuration ^| |
+ | -------------------------------------------------- *| |
+ | SMT Control [Auto] *| |
+ | Core Performance Boost [Auto] *| |
+ | Global C-state control [Disabled] *| |
+ | Local APIC Mode [Auto] *| |
+ | CCD Control [Auto] *| |
+ | Core Control [Auto] *| |
+ | Core Control [Auto] *| |
+ | L1 Stream HW Prefetcher [Enabled] *| |
+ | L2 Stream HW Prefetcher [Enabled] *| |
+ | SVM Mode [Enabled] *| |
+ | SMEE [Disabled] *| |
+ | *| |
+ |> CPU1 Information *| |
+ | *| |
+ | NB Configuration ^| |
+ | -------------------------------------------------- *| |
+ | Determinism Control [Manual] *| |
+ | Determinism Slider [Performance] *| |
+ | cTDP Control [Disabled] *| |
+ | IOMMU [Disabled] *| |
+ | ACS Enable [Auto] *| |
+ | Package Power Limit Control [Auto] *| |
+ | APBDIS [1] *| |
+ | Fixed SOC Pstate [P0] *| |
+ | DF Cstates [Enabled] *| |
+ | Preferred IO [Manual] *| |
+ | Preferred IO Bus [##] *| |
+ | *| |
+ | *|-----------------------------|
+ | *|><: Select Screen |
+ | *|^v: Select Item |
+ | *|Enter: Select |
+ | +|+/-: Change Opt. |
+ | +|F1: General Help |
+ | +|F2: Previous Values |
+ | +|F3: Optimized Defaults |
+ | v|F4: Save & Exit |
+ | | |
+```
+
+
+## EPYC zn2 Server BIOS Configuration - DUT
+
+### Boot Feature
+
+```
+ | Quiet Boot [Enabled] |Boot option |
+ | | |
+ | Option ROM Messages [Force BIOS] | |
+ | Bootup NumLock State [On] | |
+ | Wait For "F1" If Error [Enabled] | |
+ | INT19 Trap Response [Immediate] | |
+ | Re-try Boot [Disabled] | |
+ | | |
+ | Power Configuration | |
+ | Watch Dog Function [Disabled] | |
+ | Restore on AC Power Loss [Last State] | |
+ | Power Button Function [Instant Off] | |
+```
+
+### CPU Configuration
+
+```
+ | ACPI Settings ^| |
+ | -------------------------------------------------- *| |
+ | PCI AER Support [Disabled] *| |
+ | High Precision Event Timer [Disabled] *| |
+ | NUMA Nodes Per Socket [NPS2] *| |
+ | ACPI SRAT L3 Cache As NUMA Domain [Auto] *| |
+ | *| |
+ | CPU Configuration ^| |
+ | -------------------------------------------------- *| |
+ | SMT Control [Auto] *| |
+ | Core Performance Boost [Auto] *| |
+ | Global C-state control [Disabled] *| |
+ | Local APIC Mode [Auto] *| |
+ | CCD Control [Auto] *| |
+ | Core Control [Auto] *| |
+ | Core Control [Auto] *| |
+ | L1 Stream HW Prefetcher [Enabled] *| |
+ | L2 Stream HW Prefetcher [Enabled] *| |
+ | SVM Mode [Enabled] *| |
+ | SMEE [Disabled] *| |
+ | *| |
+ |> CPU1 Information *| |
+ | *| |
+ | NB Configuration ^| |
+ | -------------------------------------------------- *| |
+ | Determinism Control [Manual] *| |
+ | Determinism Slider [Performance] *| |
+ | cTDP Control [Disabled] *| |
+ | IOMMU [Disabled] *| |
+ | ACS Enable [Auto] *| |
+ | Package Power Limit Control [Auto] *| |
+ | APBDIS [1] *| |
+ | Fixed SOC Pstate [P0] *| |
+ | DF Cstates [Enabled] *| |
+ | Preferred IO [Manual] *| |
+ | Preferred IO Bus [##] *| |
+ | *| |
+ | *|-----------------------------|
+ | *|><: Select Screen |
+ | *|^v: Select Item |
+ | *|Enter: Select |
+ | +|+/-: Change Opt. |
+ | +|F1: General Help |
+ | +|F2: Previous Values |
+ | +|F3: Optimized Defaults |
+ | v|F4: Save & Exit |
+ | | |
+```
+
+
+## EPYC zn2 Server Firmware Inventory
+
+```
+Host. IPMI IP. BMC. BIOS. CPLD. CPU Microcode. PCI Bus. X710 Firmware. XXV710 Firmware. i40e. MLX5 Firmware. mlx5_core
+s60-t210-sut1. 10.30.55.24. 03.10.04. 1.1a. 02.c2.00. 0x8301038. ?. 6.80 0x80003ce6 1.2074.0. 6.01 0x80003554 1.1747.0. 2.1.14-k. 16.26.1040. 4.6-1.0.1.
+s61-t210-tg1. 10.30.55.25. 03.10.04. 1.1a. 02.c2.00. 0x8301038. ?. 6.80 0x80003ce6 1.2074.0. 6.01 0x80003554 1.1747.0. 2.1.14-k. 16.26.1040. 4.6-1.0.1.
+``` \ No newline at end of file
diff --git a/docs/report/detailed_test_results/dpdk_performance_results/index.rst b/docs/report/detailed_test_results/dpdk_performance_results/index.rst
index 87c956beb2..c34e4b03b9 100644
--- a/docs/report/detailed_test_results/dpdk_performance_results/index.rst
+++ b/docs/report/detailed_test_results/dpdk_performance_results/index.rst
@@ -6,6 +6,7 @@ DPDK Throughput
../dpdk_performance_results_2n_skx/index
../dpdk_performance_results_3n_skx/index
../dpdk_performance_results_2n_clx/index
+ ../dpdk_performance_results_2n_zn2/index
../dpdk_performance_results_3n_hsw/index
../dpdk_performance_results_3n_tsh/index
diff --git a/docs/report/detailed_test_results/dpdk_performance_results_2n_zn2/index.rst b/docs/report/detailed_test_results/dpdk_performance_results_2n_zn2/index.rst
new file mode 100644
index 0000000000..331a662946
--- /dev/null
+++ b/docs/report/detailed_test_results/dpdk_performance_results_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test results: i) `FD.io test executor dpdk
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/detailed_test_results/vpp_mrr_results/index.rst b/docs/report/detailed_test_results/vpp_mrr_results/index.rst
index f783a404ba..af193dc709 100644
--- a/docs/report/detailed_test_results/vpp_mrr_results/index.rst
+++ b/docs/report/detailed_test_results/vpp_mrr_results/index.rst
@@ -7,6 +7,7 @@ VPP MRR
i) `FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_,
diff --git a/docs/report/detailed_test_results/vpp_mrr_results_2n_zn2/index.rst b/docs/report/detailed_test_results/vpp_mrr_results_2n_zn2/index.rst
new file mode 100644
index 0000000000..b89bd2f517
--- /dev/null
+++ b/docs/report/detailed_test_results/vpp_mrr_results_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test results: i) `FD.io test executor vpp
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/detailed_test_results/vpp_performance_results/index.rst b/docs/report/detailed_test_results/vpp_performance_results/index.rst
index b6c6c8f645..f68acefdef 100644
--- a/docs/report/detailed_test_results/vpp_performance_results/index.rst
+++ b/docs/report/detailed_test_results/vpp_performance_results/index.rst
@@ -7,6 +7,7 @@ VPP Throughput
i) `FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_,
diff --git a/docs/report/detailed_test_results/vpp_performance_results_2n_zn2/index.rst b/docs/report/detailed_test_results/vpp_performance_results_2n_zn2/index.rst
new file mode 100644
index 0000000000..b89bd2f517
--- /dev/null
+++ b/docs/report/detailed_test_results/vpp_performance_results_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test results: i) `FD.io test executor vpp
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/dpdk_performance_tests/csit_release_notes.rst b/docs/report/dpdk_performance_tests/csit_release_notes.rst
index 720f00f440..a0ae239b23 100644
--- a/docs/report/dpdk_performance_tests/csit_release_notes.rst
+++ b/docs/report/dpdk_performance_tests/csit_release_notes.rst
@@ -8,6 +8,9 @@ Changes in |csit-release|
- Fixed DPDK compilation on ARM systems.
+ - **AMD 2n-zn2 testbed**: New physical testbed type installed in
+ FD.io CSIT, with DPDK performance data added to this report.
+
#. DPDK RELEASE VERSION CHANGE
- |csit-release| tested |dpdk-release|, as used by |vpp-release|.
diff --git a/docs/report/dpdk_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst b/docs/report/dpdk_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst
new file mode 100644
index 0000000000..2f14be0030
--- /dev/null
+++ b/docs/report/dpdk_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst
@@ -0,0 +1,3 @@
+2n-zn2
+======
+
diff --git a/docs/report/dpdk_performance_tests/packet_latency/2n-zn2-xxv710.rst b/docs/report/dpdk_performance_tests/packet_latency/2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..8ea2ff206c
--- /dev/null
+++ b/docs/report/dpdk_performance_tests/packet_latency/2n-zn2-xxv710.rst
@@ -0,0 +1,78 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+CSIT source code for the test cases used for plots can be found in
+`CSIT git repository <https://git.fd.io/csit/tree/tests/dpdk/perf?h=rls2009>`_.
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-base
+-------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-testpmd.html" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-testpmd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-testpmd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-testpmd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-l3fwd.html" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-l3fwd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-l3fwd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-l3fwd}
+ \end{figure}
diff --git a/docs/report/dpdk_performance_tests/packet_latency/index.rst b/docs/report/dpdk_performance_tests/packet_latency/index.rst
index 53285b9ef6..3232a8be6b 100644
--- a/docs/report/dpdk_performance_tests/packet_latency/index.rst
+++ b/docs/report/dpdk_performance_tests/packet_latency/index.rst
@@ -33,6 +33,10 @@ Additional information about graph data:
.. note::
Test results have been generated by
+ `FD.io test executor dpdk performance job 2n-skx`_,
+ `FD.io test executor dpdk performance job 2n-clx`_,
+ `FD.io test executor dpdk performance job 3n-skx`_,
+ `FD.io test executor dpdk performance job 2n-zn2`_,
`FD.io test executor dpdk performance job 3n-hsw`_ and
`FD.io test executor dpdk performance job 3n-tsh`_ with RF
result files csit-dpdk-perf-|srelease|-\*.zip
@@ -44,5 +48,6 @@ Additional information about graph data:
2n-skx-xxv710
3n-skx-xxv710
2n-clx-xxv710
+ 2n-zn2-xxv710
3n-hsw-xl710
3n-tsh-x520
diff --git a/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-x710.rst b/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-x710.rst
new file mode 100644
index 0000000000..5edf345373
--- /dev/null
+++ b/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-x710.rst
@@ -0,0 +1,127 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+Following sections include summary graphs of Phy-to-Phy performance with
+packet routed forwarding, including NDR throughput (zero packet loss)
+and PDR throughput (<0.5% packet loss).
+
+CSIT source code for the test cases used for plots can be found in
+`CSIT git repository <https://git.fd.io/csit/tree/tests/dpdk/perf?h=rls2009>`_.
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-base
+-------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-x710-64b-2t1c-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-base-ndr}
+ \label{fig:2n-zn2-x710-64b-2t1c-base-ndr}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-x710-64b-2t1c-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-base-pdr}
+ \label{fig:2n-zn2-x710-64b-2t1c-base-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-4t2c-base
+-------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="03" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-x710-64b-4t2c-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-4t2c-base-ndr}
+ \label{fig:2n-zn2-x710-64b-4t2c-base-ndr}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-x710-64b-4t2c-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-4t2c-base-pdr}
+ \label{fig:2n-zn2-x710-64b-4t2c-base-pdr}
+ \end{figure}
diff --git a/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-xxv710.rst b/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..ccb30c80fe
--- /dev/null
+++ b/docs/report/dpdk_performance_tests/packet_throughput_graphs/2n-zn2-xxv710.rst
@@ -0,0 +1,127 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+Following sections include summary graphs of Phy-to-Phy performance with
+packet routed forwarding, including NDR throughput (zero packet loss)
+and PDR throughput (<0.5% packet loss).
+
+CSIT source code for the test cases used for plots can be found in
+`CSIT git repository <https://git.fd.io/csit/tree/tests/dpdk/perf?h=rls2009>`_.
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-base
+-------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-xxv710-64b-2t1c-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-base-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-base-ndr}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-xxv710-64b-2t1c-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-base-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-base-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-4t2c-base
+-------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="03" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-xxv710-64b-4t2c-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-4t2c-base-ndr}
+ \label{fig:2n-zn2-xxv710-64b-4t2c-base-ndr}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/dpdk/2n-zn2-xxv710-64b-4t2c-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/dpdk/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-4t2c-base-pdr}
+ \label{fig:2n-zn2-xxv710-64b-4t2c-base-pdr}
+ \end{figure}
diff --git a/docs/report/dpdk_performance_tests/packet_throughput_graphs/index.rst b/docs/report/dpdk_performance_tests/packet_throughput_graphs/index.rst
index 5a0ce623e8..8758088ef8 100644
--- a/docs/report/dpdk_performance_tests/packet_throughput_graphs/index.rst
+++ b/docs/report/dpdk_performance_tests/packet_throughput_graphs/index.rst
@@ -47,6 +47,7 @@ Additional information about graph data:
`FD.io test executor dpdk performance job 2n-skx`_,
`FD.io test executor dpdk performance job 3n-skx`_,
`FD.io test executor dpdk performance job 2n-clx`_,
+ `FD.io test executor dpdk performance job 2n-zn2`_,
`FD.io test executor dpdk performance job 3n-hsw`_,
`FD.io test executor dpdk performance job 3n-tsh`_,
`FD.io test executor dpdk performance job 2n-dnv`_ and
@@ -66,6 +67,8 @@ Additional information about graph data:
3n-skx-x710
2n-clx-xxv710
2n-clx-x710
+ 2n-zn2-xxv710
+ 2n-zn2-x710
3n-hsw-xl710
3n-hsw-x710
3n-tsh-x520
diff --git a/docs/report/introduction/methodology.rst b/docs/report/introduction/methodology.rst
index f62d415a7e..6044063f36 100644
--- a/docs/report/introduction/methodology.rst
+++ b/docs/report/introduction/methodology.rst
@@ -8,11 +8,13 @@ Test Methodology
methodology_terminology
methodology_vpp_forwarding_modes
+ methodology_data_plane_throughput/index
+ methodology_trex_traffic_generator
+ methodology_dut_state
+ methodology_nat44
methodology_tunnel_encapsulations
methodology_ipsec
- methodology_nat44
methodology_acls
- methodology_data_plane_throughput/index
methodology_packet_latency
methodology_multi_core_speedup
methodology_hoststack_testing/index
@@ -22,4 +24,3 @@ Test Methodology
methodology_lxc_drc_container_memif
methodology_nfv_service_density
methodology_vpp_device_functional
- methodology_trex_traffic_generator
diff --git a/docs/report/introduction/methodology_data_plane_throughput/methodology_data_plane_throughput.rst b/docs/report/introduction/methodology_data_plane_throughput/methodology_data_plane_throughput.rst
index 6389353a65..00dcb0b40e 100644
--- a/docs/report/introduction/methodology_data_plane_throughput/methodology_data_plane_throughput.rst
+++ b/docs/report/introduction/methodology_data_plane_throughput/methodology_data_plane_throughput.rst
@@ -13,6 +13,9 @@ Following throughput test methods are used:
- MRR - Maximum Receive Rate
- PLRsearch - Probabilistic Loss Ratio search
+..
+ TODO: Add RECONF.
+
Description of each test method is followed by generic test properties
shared by all methods.
diff --git a/docs/report/introduction/methodology_dut_state.rst b/docs/report/introduction/methodology_dut_state.rst
new file mode 100644
index 0000000000..c66fe58277
--- /dev/null
+++ b/docs/report/introduction/methodology_dut_state.rst
@@ -0,0 +1,150 @@
+DUT state considerations
+------------------------
+
+This page discusses considerations for Device Under Test (DUT) state.
+DUTs such as VPP require configuration, to be provided before the aplication
+starts (via config files) or just after it starts (via API or CLI access).
+
+During operation DUTs gather various telemetry data, depending on configuration.
+This internal state handling is part of normal operation,
+so any performance impact is included in the test results.
+Accessing telemetry data is additional load on DUT,
+so we are not doing that in main trial measurements that affect results,
+but we include separate trials specifically for gathering runtime telemetry.
+
+But there is one kind of state that needs specific handling.
+This kind of DUT state is dynamically created based on incoming traffic,
+it affects how DUT handles the traffic, and (unlike telemetry counters)
+it has uneven impact on CPU load.
+Typical example is NAT where opening sessions takes more CPU than
+forwarding packet on existing sessions.
+We call DUT configurations with this kind of state "stateful",
+and configurations without them "stateless".
+(Even though stateless configurations contain state described in previous
+paragraphs, and some configuration items may have "stateful" in their name,
+such as stateful ACLs.)
+
+Stateful DUT configurations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Typically, the level of CPU impact of traffic depends on DUT state.
+The first packets causing DUT state to change have higher impact,
+subsequent packets matching that state have lower impact.
+
+From performance point of view, this is similar to traffic phases
+for stateful protocols, see
+`NGFW draft <https://tools.ietf.org/html/draft-ietf-bmwg-ngfw-performance-05#section-4.3.4>`.
+In CSIT we borrow the terminology (even if it does not fit perfectly,
+see discussion below). Ramp-up traffic causes the state change,
+sustain traffic does not change the state.
+
+As the performance is different, each test has to choose which traffic
+it wants to test, and manipulate the DUT state to achieve the intended impact.
+
+Ramp-up trial
+_____________
+
+Tests aiming at sustain performance need to make sure DUT state is created.
+We achieve this via a ramp-up trial, specific purpose of which
+is to create the state. Subsequent trials need no specific handling,
+as state remains the same.
+
+For the state to be set completely, it is important DUT (nor TG) loses
+no packets, we achieve this by setting the profile multiplier (TPS from now on)
+to low enough value.
+
+It is also important each state-affecting packet is sent.
+For size-limited traffic profile it is guaranteed by the size limit.
+For continuous traffic, we set a long enough duration (based on TPS).
+
+At the end of the ramp-up trial, we check telemetry to confirm
+the state has been created as expected.
+Test fails if the state is not complete.
+
+State Reset
+___________
+
+Tests aiming at ramp-up performance do not use ramp-up trial,
+and they need to reset the DUT state before each trial measurement.
+The way of resetting the state depends on test,
+usually an API call is used to partially de-configure
+the part that holds the state, and then re-configure it back.
+
+In CSIT we control the DUT state behavior via a test variable "resetter".
+If it is not set, DUT state is not reset.
+If it is set, each search algorithm (including MRR) will invoke it
+before all trial measurements (both main and telemetry ones).
+Any configuration keyword enabling a feature with DUT state
+will check whether a test variable for ramp-up (duration) is present.
+If it is present, resetter is not set.
+If it is not present, the keyword sets the apropriate resetter value.
+This logic makes sure either ramp-up or state reset are used.
+
+..
+ TODO: Classify trials into main and telemetry, in a separate place.
+
+Notes: If both ramp-up and state reset were used, the DUT behavior
+would be identical to just reset, while test would take longer to execute.
+If neither were used, DUT will show different performance in subsequent trials,
+violating assumptions of search algorithms.
+
+DUT versus protocol ramp-up
+___________________________
+
+There are at least three different causes for bandwidth possibly increasing
+within a single measurement trial.
+
+The first is DUT switching from state modification phase to constant phase,
+it is the primary focus of this document.
+Using ramp-up traffic before main trials eliminates this cause
+for tests wishing to measure the performance of the next phase.
+Using size-limited profiles eliminates the next phase
+for tests wishing to measure performance of this phase.
+
+The second is protocol such as TCP ramping up their throughput to utilize
+the bandwidth available. This is the original meaning of "ramp up"
+in the NGFW draft (see above).
+In existing tests we are not distinguishing such phases,
+trial measurment reports the telemetry from the whole trial
+(e.g. throughput is time averaged value).
+
+The third is TCP increasing throughput due to retransmissions triggered by
+packet loss. In CSIT we currently try to avoid this behavior
+by using small enough data to transfer, so overlap of multiple transactions
+(primary cause of packet loss) is unlikely.
+But in MRR tests packet loss is still probable.
+Once again, we rely on using telemetry from the whole trial,
+resulting in time averaged throughput values.
+
+Stateless DUT configuratons
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+These are simply configurations, which do not set any resetter value
+(even if ramp-up duration is not configured).
+Majority of existing tests are of this type, using continuous traffic profiles.
+
+In order to identify limits of Trex performance,
+we have added suites with stateless DUT configuration (VPP ip4base)
+subjected to size-limited ASTF traffic.
+The discovered throughputs serve as a basis of comparison
+for evaluating the results for stateful DUT configurations (VPP NAT44ed)
+subjected to the same traffic profiles.
+
+DUT versus TG state
+~~~~~~~~~~~~~~~~~~~
+
+Traffic Generator profiles can be stateful (ASTF) or stateless (STL).
+DUT configuration can be stateful or stateless (with respect to packet traffic).
+
+In CSIT we currently use all four possible configurations:
+
+- Regular stateless VPP tests use stateless traffic profiles.
+
+- Stateless VPP configuration with stateful profile is used as a base for
+ comparison.
+
+- Some stateful DUT configurations (NAT44DET, NAT44ED unidirectional)
+ are tested using stateless traffic profiles.
+
+- The rest of stateful DUT configurations (NAT44ED bidirectional)
+ are tested using stateful traffic profiles.
diff --git a/docs/report/introduction/methodology_nat44.rst b/docs/report/introduction/methodology_nat44.rst
index 5dc558f029..ba12f7d49b 100644
--- a/docs/report/introduction/methodology_nat44.rst
+++ b/docs/report/introduction/methodology_nat44.rst
@@ -1,3 +1,5 @@
+.. _nat44_methodology:
+
Network Address Translation IPv4 to IPv4
----------------------------------------
@@ -12,14 +14,17 @@ public range.
Following quantities are used to describe inside to outside IP address
and port bindings scenarios:
-- inside-addresses, ports-per-inside-address, number of inside source
- addresses (representing inside hosts) and number of TCP/UDP source
+- Inside-addresses, number of inside source addresses
+ (representing inside hosts).
+- Ports-per-inside-address, number of TCP/UDP source
ports per inside source address.
-- outside-addresses, number of outside (public) source addresses
- allocated to NAT44. The maximal number of ports-per-outside-address
- usable for NAT is 64 512 (in non-reserved port range 1024-65535,
- :rfc:`4787`).
-- sharing-ratio, equal to inside-addresses / outside-addresses.
+- Outside-addresses, number of outside (public) source addresses
+ allocated to NAT44.
+- Ports-per-outside-address, number of TCP/UDP source
+ ports per outside source address. The maximal number of
+ ports-per-outside-address usable for NAT is 64 512
+ (in non-reserved port range 1024-65535, :rfc:`4787`).
+- Sharing-ratio, equal to inside-addresses / outside-addresses.
CSIT NAT44 tests are designed to take into account the maximum number of
ports (sessions) required per inside host (inside-address) and at the
@@ -43,15 +48,7 @@ Initial CSIT NAT44 tests, including associated TG/TRex traffic profiles,
are based on ports-per-inside-address set to 63 and the sharing ratio of
1024. This approach is currently used for all NAT44 tests including
NAT44det (NAT44 deterministic used for Carrier Grade NAT applications)
-and NAT44ed.
-
-..
- .. TODO::
-
- Note that in the latter case, due to overloading of (ouside-address,
- outside-port) tuple for different endpoint destinations the actual
- sharing ratio is likely to different, as it will depend on the
- destination addresses used by NAT'ed flows.
+and NAT44ed (Endpoint Dependent).
Private address ranges to be used in tests:
@@ -70,13 +67,14 @@ NAT44 Session Scale
NAT44 session scale tested is govern by the following logic:
-- Number of inside addresses/hosts H[i] = (H[i-1] x 2^2) with H(0)=1 024, i = 1,2,3, ...
+- Number of inside-addresses(hosts) H[i] = (H[i-1] x 2^2) with H(0)=1 024,
+ i = 1,2,3, ...
- - H[i] = 1 024, 4 096, 16 384, 65 536, 262 144, 1 048 576, ...
+ - H[i] = 1 024, 4 096, 16 384, 65 536, 262 144, ...
-- Number of sessions S[i](ports-per-host) = H[i] * ports-per-inside-address
+- Number of sessions S[i] = H[i] * ports-per-inside-address
- - ports-per-host = 63
+ - ports-per-inside-address = 63
+---+---------+------------+
| i | hosts | sessions |
@@ -95,16 +93,21 @@ NAT44 session scale tested is govern by the following logic:
NAT44 Deterministic
^^^^^^^^^^^^^^^^^^^
-NAT44det throughput tests are using TRex STL (Stateless) API and traffic
+NAT44det performance tests are using TRex STL (Stateless) API and traffic
profiles, similar to all other stateless packet forwarding tests like
ip4, ip6 and l2, sending UDP packets in both directions
inside-to-outside and outside-to-inside. See
:ref:`data_plane_throughput` for more detail.
-NAT44det translation entries are created during the ramp-up phase
-preceding the throughput test, followed by verification that all entries
-are present, before proceeding to the throughput test. This ensures
-session setup does not impact the forwarding performance test.
+The inside-to-outside traffic uses single destination address (20.0.0.0)
+and port (1024).
+The inside-to-outside traffic covers whole inside address and port range,
+the outside-to-inside traffic covers whole outside address and port range.
+
+NAT44det translation entries are created during the ramp-up phase,
+followed by verification that all entries are present,
+before proceeding to the main measurements of the test.
+This ensures session setup does not impact the forwarding performance test.
Associated CSIT test cases use the following naming scheme to indicate
NAT44det scenario tested:
@@ -117,33 +120,58 @@ NAT44det scenario tested:
16515072.
- [mrr|ndrpdr|soak], MRR, NDRPDR or SOAK test.
+..
+ TODO: The -s{S} part is redundant,
+ we can save space by removing it.
+ TODO: Make traffic profile names resemble suite names more closely.
+
NAT44 Endpoint-Dependent
^^^^^^^^^^^^^^^^^^^^^^^^
-NAT44ed is benchmarked using following methodologies:
-
-- Uni-directional throughput using *stateless* traffic profile.
+..
+ TODO: Is it possible to test a NAT44ed scenario where the outside source
+ address and port is limited to just one value?
+ In theory, as long as every inside source address&port traffic
+ uses a different destination address&port, there will be no conflicts,
+ and we could use bidirectional stateless profiles.
+ Possibly, VPP requires some amount of outside source address&port
+ to remain unused for security reasons. But we can try to see what happens.
+
+In order to excercise NAT44ed ability to translate based on both
+source and destination address and port, the inside-to-outside traffic
+varies also destination address and port. Destination port is the same
+as source port, destination address has the same offset as the source address,
+but applied to different subnet (starting with 20.0.0.0).
+
+As the mapping is not deterministic (for security reasons),
+we cannot easily use stateless bidirectional traffic profiles.
+Outside address and port range is fully covered,
+but we do not know which outside-to-inside source address and port to use
+to hit an open session of a particular outside address and port.
+
+Therefore, NAT44ed is benchmarked using following methodologies:
+
+- Unidirectional throughput using *stateless* traffic profile.
- Connections-per-second using *stateful* traffic profile.
-- Bi-directional throughput using *stateful* traffic profile.
+- Bidirectional PPS (see below) using *stateful* traffic profile.
-Uni-directional NAT44ed throughput tests are using TRex STL (Stateless)
+Unidirectional NAT44ed throughput tests are using TRex STL (Stateless)
APIs and traffic profiles, but with packets sent only in
-inside-to-outside direction. Due to indeterministic bindings of outside
-to inside (src_addr,src_port) that are created dynamically at flow start
-bidirectional testing is not possible with stateless traffic profiles.
-See :ref:`data_plane_throughput` for more detail.
-
-Similarly to NAT44det, NAT44ed uni-directional throughput tests include
+inside-to-outside direction.
+Similarly to NAT44det, NAT44ed unidirectional throughput tests include
a ramp-up phase to establish and verify the presence of required NAT44ed
-binding entries. NAT44ed CPS (connections-per-second) and throughput /
-PPS stateful tests do not have a ramp-up phase.
+binding entries.
Stateful NAT44ed tests are using TRex ASTF (Advanced Stateful) APIs and
traffic profiles, with packets sent in both directions. Tests are run
with both UDP and TCP/IP sessions.
+As both NAT44ed CPS (connections-per-second) and PPS (packets-per-second)
+stateful tests measure (also) session opening performance,
+they use state reset instead of ramp-up trial.
+That is also the reason why PPS tests are not called throughput tests.
Associated CSIT test cases use the following naming scheme to indicate
-NAT44DET case tested:
+NAT44det case tested:
- Stateless: ethip4udp-nat44ed-h{H}-p{P}-s{S}-udir-[mrr|ndrpdr|soak]
@@ -162,5 +190,265 @@ NAT44DET case tested:
- {S}, number of sessions, S = 64512, 258048, 1032192, 4128768,
16515072.
- [cps|pps], connections-per-second session establishment rate or
- packets-per-second throughput rate.
+ packets-per-second average rate.
- [mrr|ndrpdr], bidirectional stateful tests MRR, NDRPDR.
+
+Stateful traffic profiles
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+There are several important detais which distinguish ASTF profiles
+from stateless profiles.
+
+General considerations
+~~~~~~~~~~~~~~~~~~~~~~
+
+Protocols
+_________
+
+ASTF profiles are limited to either UDP or TCP protocol.
+
+Programs
+________
+
+Each template in the profile defines two "programs", one for client side
+and one for server side. Each program specifies when that side has to wait
+until enough data is received (counted in packets for UDP and in bytes for TCP)
+and when to send additional data. Together, the two programs
+define a single transaction. Due to packet loss, transaction may take longer,
+use more packets (retransmission) or never finish in its entirety.
+
+Instances
+_________
+
+Client instance is created according to TPS parameter for the trial,
+and sends the first packet of the transaction (in some cases more packets).
+Server instance is created when first packet arrives on server side,
+each instance has different address or port.
+When a program reaches its end, the instance is deleted.
+
+This creates possible issues with server instances. If the server instance
+does not read all the data client has sent, late data packets
+can cause second copy of server instance to be created,
+which breaks assumptions on how many packet a transaction should have.
+
+The need for server instances to read all the data reduces the overall
+bandwidth TRex is able to create in ASTF mode.
+
+Note that client instances are not created on packets,
+so it is safe to end client program without reading all server data
+(unless the definition of transaction success requires that).
+
+Sequencing
+__________
+
+ASTF profiles offer two modes for choosing source and destination IP addresses
+for client programs: seqential and pseudorandom.
+In current tests we are using sequential addressing only (if destination
+address varies at all).
+
+For choosing client source UDP/TCP port, there is only one mode.
+We have not investigated whether it results in sequential or pseudorandom order.
+
+For client destination UDP/TCP port, we use a constant value,
+as typical TRex usage pattern binds the server instances (of the same program)
+to a single port. (If profile defines multiple server programs, different
+programs use different ports.)
+
+Transaction overlap
+___________________
+
+If a transaction takes longer to finish, compared to period implied by TPS,
+TRex will have multiple client or server instances active at a time.
+
+During calibration testing we have found this increases CPU utilization,
+and for high TPS it can lead to TRex's Rx or Tx buffers becoming full.
+This generally leads to duration stretching, and/or packet loss on TRex.
+
+Currently used transactions were chosen to be short, so risk of bad behavior
+is decreased. But in MRR tests, where load is computed based on NIC ability,
+not TRex ability, anomalous behavior is still possible.
+
+Delays
+______
+
+TRex supports adding constant delays to ASTF programs.
+This can be useful, for example if we want to separate connection establishment
+from data transfer.
+
+But as TRex tracks delayed instances as active, this still results
+in higher CPU utilization and reduced performance issues
+(as other overlaping transactions). So the current tests do not use any delays.
+
+Keepalives
+__________
+
+Both UDP and TCP protocol implementations in TRex programs support keepalive
+duration. That means there is a configurable period of keepalive time,
+and TRex sends keepalive packets automatically (outside the program)
+for the time the program is active (started, not ended yet)
+but not sending any packets.
+
+For TCP this is generally not a big deal, as the other side usually
+retransmits faster. But for UDP it means a packet loss may leave
+the receiving program running.
+
+In order to avoid keepalive packets, keepalive value is set to a high number.
+Here, "high number" means that even at maximum scale and minimum TPS,
+there are still no keepalive packets sent within the corresponding
+(computed) trial duration. This number is kept the same also for
+smaller scale traffic profiles, to simplify maintenance.
+
+Transaction success
+___________________
+
+The transaction is considered successful at Layer-7 (L7) level
+when both program instances close. At this point, various L7 counters
+(unofficial name) are updated on TRex.
+
+We found that proper close and L7 counter update can be CPU intensive,
+whereas lower-level counters (ipackets, opackets) called L2 counters
+can keep up with higher loads.
+
+For some tests, we do not need to confirm the whole transaction was successful.
+CPS (connections per second) tests are a typical example.
+We care only for NAT44ed creating a session (needs one packet in inside-to-outside
+direction per session) and being able to use it (needs one packet
+in outside-to-inside direction).
+
+Similarly in PPS (packets per second, combining session creation
+with data transfer) tests, we care about NAT44ed ability to forward packets,
+we do not care whether aplications (TRex) can fully process them at that rate.
+
+Therefore each type of tests has its own formula (usually just one counter
+already provided by TRex) to count "successful enough" transactions
+and attempted transactions. Currently, all tests relying on L7 counters
+use size-limited profiles, so they know what the count of attempted
+transactions should be, but due to duration stretching
+TRex might have been unable to send that many packets.
+For search purposes, unattempted transactions are treated the same
+as attemted byt failed transactions.
+
+Sometimes even the number of transactions as tracked by search algorithm
+does not match the transactions as defined by ASTF programs.
+See PPS profiles below.
+
+UDP CPS
+~~~~~~~
+
+This profile uses a minimalistic transaction to verify NAT44ed session has been
+created and it allows outside-to-inside traffic.
+
+Client instance sends one packet and ends.
+Server instance sends one packet upon creation and ends.
+
+In principle, packet size is configurable,
+but currently used tests apply only one value (64 bytes frame).
+
+Transaction counts as attempted when opackets counter increases on client side.
+Transaction counts as successful when ipackets counter increases on client side.
+
+TCP CPS
+~~~~~~~
+
+This profile uses a minimalistic transaction to verify NAT44ed session has been
+created and it allows outside-to-inside traffic.
+
+Client initiates TCP connection. Client waits until connection is confirmed
+(by reading zero data bytes). Client ends.
+Server accepts the connection. Server waits for indirect confirmation
+from client (by waiting for client to initiate close). Server ends.
+
+Without packet loss, the whole transaction takes 7 packets to finish
+(4 and 3 per direction, respectively).
+From NAT44ed point of view, only the first two are needed to verify
+the session got created.
+
+Packet size is not configurable, but currently used tests report
+frame size as 64 bytes.
+
+Transaction counts as attempted when tcps_connattempt counter increases
+on client side.
+Transaction counts as successful when tcps_connects counter increases
+on client side.
+
+UDP PPS
+~~~~~~~
+
+This profile uses a small transaction of "request-response" type,
+with several packets simulating data payload.
+
+Client sends 33 packets and closes immediately.
+Server reads all 33 packets (needed to avoid late packets creating new
+server instances), then sends 33 packets and closes.
+The value 33 was chosen ad-hoc (1 "protocol" packet and 32 "data" packets).
+It is possible other values would still be safe from avoiding overlapping
+transactions point of view.
+
+..
+ TODO: 32 was chosen as it is a batch size DPDK driver puts on the PCIe bus
+ at a time. May want to verify this with TRex ASTF devs and see if better
+ UDP transaction sizes can be found to yield higher performance out of TRex.
+
+In principle, packet size is configurable,
+but currently used tests apply only one value (64 bytes frame)
+for both "protocol" and "data" packets.
+
+As this is a PPS tests, we do not track the big 66 packet transaction.
+Similarly to stateless tests, we treat each packet as a "transaction"
+for search algorthm purposes. Therefore a "transaction" is attempted
+when opacket counter on client or server side is increased.
+Transaction is successful if ipacket counter on client or server side
+is increased.
+
+If one of 33 client packets is lost, server instance will get stuck
+in the reading phase. This probably decreases TRex performance,
+but it leads to more stable results.
+
+TCP PPS
+~~~~~~~
+
+This profile uses a small transaction of "request-response" type,
+with some data size to be transferred both ways.
+
+Client connects, sends 11111 bytes of data, receives 11111 of data and closes.
+Server accepts connection, reads 11111 bytes of data, sends 11111 bytes
+of data and closes.
+Server read is needed to avoid premature close and second server instance.
+Client read is not stricly needed, but acks help TRex to close server quickly,
+thus saving CPU and improving performance.
+
+The value of 11111 bytes was chosen ad-hoc. It leads to 22 packets
+(11 each direction) to be exchanged if no loss occurs.
+In principle, size of data packets is configurable via setting
+maximum segment size. Currently that is not applied, so the TRex default value
+(1460 bytes) is used, while the test name still (wrongly) mentions
+64 byte frame size.
+
+Exactly as in UDP_PPS, ipackets and opackets counters are used for counting
+"transactions" (in fact packets).
+
+If packet loss occurs, there is large transaction overlap, even if most
+ASTF programs finish eventually. This leads to big duration stretching
+and somehow uneven rate of packets sent. This makes it hard to interpret
+MRR results, but NDR and PDR results tend to be stable enough.
+
+Ip4base tests
+^^^^^^^^^^^^^
+
+Contrary to stateless traffic profiles, we do not have a simple limit
+that would guarantee TRex is able to send traffic at specified load.
+For that reason, we have added tests where "nat44ed" is replaced by "ip4base".
+Instead of NAT44ed processing, the tests set minimalistic IPv4 routes,
+so that packets are forwarded in both inside-to-outside and outside-to-inside
+directions.
+
+The packets arrive to server end of TRex with different source address&port
+than in NAT44ed tests (no translation to outside values is done with ip4base),
+but those are not specified in the stateful traffic profiles.
+The server end uses the received address&port as destination
+for outside-to-inside traffic. Therefore the same stateful traffic profile
+works for both NAT44ed and ip4base test (of the same scale).
+
+The NAT44ed results are displayed together with corresponding ip4base results.
+If they are similar, TRex is probably the bottleneck.
+If NAT44ed result is visibly smaller, it describes the real VPP performance.
diff --git a/docs/report/introduction/methodology_trex_traffic_generator.rst b/docs/report/introduction/methodology_trex_traffic_generator.rst
index aea4d3236d..9813b28025 100644
--- a/docs/report/introduction/methodology_trex_traffic_generator.rst
+++ b/docs/report/introduction/methodology_trex_traffic_generator.rst
@@ -5,59 +5,194 @@ Usage
~~~~~
`TRex traffic generator <https://trex-tgn.cisco.com>`_ is used for majority of
-CSIT performance tests. TRex stateless mode is used to measure NDR and PDR
-throughputs using MLRsearch and to measure maximum transfer rate in MRR tests.
-
-TRex is installed and run on the TG compute node. The typical procedure is:
-
-- TRex configuration is set in its configuration file
-
- ::
-
- $ sudo -E -S sh -c 'cat << EOF > /etc/trex_cfg.yaml
- - version: 2
- c: 8
- limit_memory: 8192
- interfaces: ["${pci1}","${pci2}"]
- port_info:
- - dest_mac: [${dest_mac1}]
- src_mac: [${src_mac1}]
- - dest_mac: [${dest_mac2}]
- src_mac: [${src_mac2}]
- platform :
- master_thread_id: 0
- latency_thread_id: 9
- dual_if:
- - socket: 0
- threads: [1, 2, 3, 4, 5, 6, 7, 8]
- EOF'
-
-- TRex is started in the interactive mode as a background service
-
- ::
-
- $ sh -c 'cd <t-rex-install-dir>/scripts/ && \
- sudo nohup ./t-rex-64 -i --prefix $(hostname) --hdrh --no-scapy-server \
- > /tmp/trex.log 2>&1 &' > /dev/null
-
-- There are traffic streams dynamically prepared for each test, based on traffic
- profiles. The traffic is sent and the statistics obtained using API
- :command:`trex.stl.api.STLClient`.
-
-Measuring Packet Loss
+CSIT performance tests. TRex is used in multiple types of performance tests,
+see :ref:`data_plane_throughput` for more detail.
+
+TRex is installed and run on the TG compute node.
+Versioning, installation and startup is documented in
+:ref:`test_environment_tg`.
+
+Traffic modes
+~~~~~~~~~~~~~
+
+TRex is primarily used in two (mutually incompatible) modes.
+
+Stateless mode
+______________
+
+Sometimes abbreviated as STL.
+A mode with high performance, which is unable to react to incoming traffic.
+We use this mode whenever it is possible.
+Typical test where this mode is not applicable is NAT44ED,
+as DUT does not assign deterministic outside address+port combinations,
+so we are unable to create traffic that does not lose packets
+in out2in direction.
+
+Measurement results are based on simple L2 counters
+(opackets, ipackets) for each traffic direction.
+
+Stateful mode
+_____________
+
+A mode capable of reacting to incoming traffic.
+Contrary to the stateless mode, only UDP and TCP is supported
+(carried over IPv4 or IPv6 packets).
+Performance is limited, as TRex needs to do more CPU processing.
+TRex suports two subtypes of stateful traffic,
+CSIT uses ASTF (Advanced STateFul mode).
+
+This mode is suitable for NAT44ED tests, as clients send packets from inside,
+and servers react to it, so they see the outside address and port to respond to.
+Also, they do not send traffic before NAT44ED has opened the sessions.
+
+When possible, L2 counters (opackets, ipackets) are used.
+Some tests need L7 counters, which track protocol state (e.g. TCP),
+but the values are less than reliable on high loads.
+
+Traffic Continuity
+~~~~~~~~~~~~~~~~~~
+
+Generated traffic is either continuous, or limited.
+Both modes support both continuities in principle.
+
+Continuous traffic
+__________________
+
+Traffic is started without any size goal.
+Traffic is ended based on time duration as hinted by search algorithm.
+This is useful when DUT behavior does not depend on the traffic duration.
+The default for stateless mode.
+
+Limited traffic
+_______________
+
+Traffic has defined size goal, duration is computed based on the goal.
+Traffic is ended when the size goal is reached,
+or when the computed duration is reached.
+This is useful when DUT behavior depends on traffic size,
+e.g. target number of session, each to be hit once.
+This is used mainly for stateful mode.
+
+Traffic synchronicity
~~~~~~~~~~~~~~~~~~~~~
-Following sequence is followed to measure packet loss:
+Traffic can be generated synchronously (test waits for duration)
+or asynchronously (test operates during traffic and stops traffic explicitly).
+
+Synchronous traffic
+___________________
+
+Trial measurement is driven by given (or precomputed) duration,
+no activity from test driver during the traffic.
+Used for most trials.
-- Create an instance of STLClient.
-- Connect to the client.
-- Add all streams.
-- Clear statistics.
-- Send the traffic for defined time.
-- Get the statistics.
+Asynchronous traffic
+____________________
-If there is a warm-up phase required, the traffic is sent also before
-test and the statistics are ignored.
+Traffic is started, but then the test driver is free to perform
+other actions, before stopping the traffic explicitly.
+This is used mainly by reconf tests, but also by some trials
+used for runtime telemetry.
+
+Trafic profiles
+~~~~~~~~~~~~~~~
+
+TRex supports several ways to define the traffic.
+CSIT uses small Python modules based on Scapy as definitions.
+Details of traffic profiles depend on modes (STL or ASTF),
+but some are common for both modes.
+
+Search algorithms are intentionally unaware of the traffic mode used,
+so CSIT defines some terms to use instead of mode-specific TRex terms.
+
+Transactions
+____________
+
+TRex traffic profile defines a small number of behaviors,
+in CSIT called transaction templates. Traffic profiles also instruct
+TRex how to create a large number of transactions based on the templates.
+
+Continuous traffic loops over the generated transactions.
+Limited traffic usually executes each transaction once.
+
+Currently, ASTF profiles define one transaction template each.
+Number of packets expected per one transaction varies based on profile details,
+as does the criterion for when a transaction is considered successful.
+
+Stateless transactions are just one packet (sent from one TG port,
+successful if received on the other TG port).
+Thus unidirectional stateless profiles define one transaction template,
+bidirectional stateless profiles define two transaction templates.
+
+TPS multiplier
+______________
+
+TRex aims to open transaction specified by the profile at a steady rate.
+While TRex allows the transaction template to define its intended "cps" value,
+CSIT does not specify it, so the default value of 1 is applied,
+meaning TRex will open one transaction per second (and transaction template)
+by default. But CSIT invocation uses "multiplier" (mult) argument
+when starting the traffic, that multiplies the cps value,
+meaning it acts as TPS (transactions per second) input.
+
+With a slight abuse of nomenclature, bidirectional stateless tests
+set "packets per transaction" value to 2, just to keep the TPS semantics
+as a unidirectional input value.
+
+Duration stretching
+___________________
+
+TRex can be IO-bound, CPU-bound, or have any other reason
+why it is not able to generate the traffic at the requested TPS.
+Some conditions are detected, leading to TRex failure,
+for example when the bandwidth does not fit into the line capacity.
+But many reasons are not detected.
+
+Unfortunately, TRex frequently reacts by not honoring the duration
+in synchronous mode, taking longer to send the traffic,
+leading to lower then requested load offered to DUT.
+This usualy breaks assumptions used in search algorithms,
+so it has to be avoided.
+
+For stateless traffic, the behavior is quite deterministic,
+so the workaround is to apply a fictional TPS limit (max_rate)
+to search algorithms, usually depending only on the NIC used.
+
+For stateful traffic the behavior is not deterministic enough,
+for example the limit for TCP traffic depends on DUT packet loss.
+In CSIT we decided to use logic similar to asynchronous traffic.
+The traffic driver sleeps for a time, then stops the traffic explicitly.
+The library that parses counters into measurement results
+than usually treats unsent packets as lost.
+
+We have added a IP4base tests for every NAT44ED test,
+so that users can compare results.
+Of the results are very similar, it is probable TRex was the bottleneck.
+
+Startup delay
+_____________
+
+By investigating TRex behavior, it was found that TRex does not start
+the traffic in ASTF mode immediately. There is a delay of zero traffic,
+after which the traffic rate ramps up to the defined TPS value.
+
+It is possible to poll for counters during the traffic
+(fist nonzero means traffic has started),
+but that was found to influence the NDR results.
+
+Thus "sleep and stop" stategy is used, which needs a correction
+to the computed duration so traffic is stopped after the intended
+duration of real traffic. Luckily, it turns out this correction
+is not dependend on traffic profile nor CPU used by TRex,
+so a fixed constant (0.1115 seconds) works well.
+
+The result computations need a precise enough duration of the real traffic,
+luckily server side of TRex has precise enough counter for that.
+
+It is unknown whether stateless traffic profiles also exhibit a startup delay.
+Unfortunately, stateless mode does not have similarly precise duration counter,
+so some results (mostly MRR) are affected by less precise duration measurement
+in Python part of CSIT code.
Measuring Latency
~~~~~~~~~~~~~~~~~
diff --git a/docs/report/introduction/physical_testbeds.rst b/docs/report/introduction/physical_testbeds.rst
index 3776c03d72..1c6bc1c267 100644
--- a/docs/report/introduction/physical_testbeds.rst
+++ b/docs/report/introduction/physical_testbeds.rst
@@ -29,7 +29,8 @@ the following processor architectures:
- Intel Xeon: Skylake Platinum 8180, Haswell-SP E5-2699v3,
Cascade Lake Platinum 8280, Cascade Lake 6252N.
- Intel Atom: Denverton C3858.
-- ARM: TaiShan 2280, hip07-d05.
+- Arm: TaiShan 2280, hip07-d05.
+- AMD EPYC: Zen2 7532.
Server SUT performance depends on server and processor type, hence
results for testbeds based on different servers must be reported
@@ -41,6 +42,47 @@ https://git.fd.io/csit/tree/docs/lab/testbed_specifications.md.
Following is the description of existing production testbeds.
+2-Node AMD EPYC Zen2 (2n-zn2)
+-----------------------------
+
+One 2n-zn2 testbed in in operation in FD.io labs. It is built based on
+two SuperMicro SuperMicro AS-1114S-WTRT servers, with SUT and TG servers
+equipped with one AMD EPYC Zen2 7532 processor each (256 MB Cache, 2.40
+GHz, 32 cores). 2n-zn2 physical topology is shown below.
+
+.. only:: latex
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_tmp/src/introduction/}}
+ \includegraphics[width=0.90\textwidth]{testbed-2n-zn2}
+ \label{fig:testbed-2n-zn2}
+ \end{figure}
+
+.. only:: html
+
+ .. figure:: testbed-2n-zn2.svg
+ :alt: testbed-2n-zn2
+ :align: center
+
+SUT server is populated with the following NIC models:
+
+#. NIC-1: x710-DA4 4p10GE Intel.
+#. NIC-2: xxv710-DA2 2p25GE Intel.
+#. NIC-3: cx556a-edat ConnectX5 2p100GE Mellanox.
+
+TG server runs TRex application and is populated with the following
+NIC models:
+
+#. NIC-1: x710-DA4 4p10GE Intel.
+#. NIC-2: xxv710-DA2 2p25GE Intel.
+#. NIC-3: cx556a-edat ConnectX5 2p100GE Mellanox.
+
+All AMD EPYC Zen2 7532 servers run with AMD SMT enabled, doubling the
+number of logical cores exposed to Linux.
+
2-Node Xeon Cascade Lake (2n-clx)
---------------------------------
diff --git a/docs/report/introduction/report_history.rst b/docs/report/introduction/report_history.rst
index cce12bd7fd..9854797881 100644
--- a/docs/report/introduction/report_history.rst
+++ b/docs/report/introduction/report_history.rst
@@ -7,6 +7,56 @@ below.
+----------------+------------------------------------------------------------+
| .[ww] Revision | Changes |
+================+============================================================+
+| .51 | 1. Added 2n-zn2 iterative data. |
+| | |
++----------------+------------------------------------------------------------+
+| .50 | 1. Added 2n-zn2 iterative data, graphs and tables. |
+| | |
++----------------+------------------------------------------------------------+
+| .49 | 1. Reorganized NAT44 graphs. |
+| | |
++----------------+------------------------------------------------------------+
+| .48 | 1. Modified the release notes. |
+| | |
++----------------+------------------------------------------------------------+
+| .47 | 1. Added data: |
+| | |
+| | - VPP Iterative |
+| | |
+| | - 3n-tsh |
+| | |
+| | 2. Added NAT44 new iterative data and graphs: |
+| | |
+| | - 2n-clx |
+| | - 2n-skx |
+| | |
+| | 3. Added NAT44 MRR data: |
+| | |
+| | - 2n-clx |
+| | - 2n-skx |
+| | |
++----------------+------------------------------------------------------------+
+| .46 | Skipped |
+| | |
++----------------+------------------------------------------------------------+
+| .45 | 1. Added data: |
+| | |
+| | - VPP Iterative |
+| | |
+| | - 3n-skx |
+| | - 3n-tsh |
+| | |
+| | 2. Added NAT44 iterative and coverage data and graphs: |
+| | |
+| | - 2n-clx |
+| | - 2n-skx |
+| | |
+| | 3. Added NAT44 MRR data: |
+| | |
+| | - 2n-clx |
+| | - 2n-skx |
+| | |
++----------------+------------------------------------------------------------+
| .44 | 1. Added data: |
| | |
| | - VPP Coverage |
@@ -24,11 +74,6 @@ below.
| | |
| | - 2n-clx |
| | |
-| | |
-| | |
-| | |
-| | |
-| | |
+----------------+------------------------------------------------------------+
| .43 | 1. Added data: |
| | |
diff --git a/docs/report/introduction/test_environment_sut_calib_zn2.rst b/docs/report/introduction/test_environment_sut_calib_zn2.rst
new file mode 100644
index 0000000000..c181b5f34c
--- /dev/null
+++ b/docs/report/introduction/test_environment_sut_calib_zn2.rst
@@ -0,0 +1,118 @@
+EPYC Zen2
+~~~~~~~~~
+
+Following sections include sample calibration data measured on
+s60-t210-sut1 server running in one of the AMD EPYC testbeds as
+specified in `FD.io CSIT testbeds - EPYC Zen2`_.
+
+
+Linux cmdline
+^^^^^^^^^^^^^
+
+::
+
+ $ cat /proc/cmdline
+ BOOT_IMAGE=/boot/vmlinuz-4.15.0-72-generic root=UUID=1672f0ef-755e-4a26-884d-02a3f4ac933c ro isolcpus=1-15,33-47,17-31,49-63 nohz_full=1-15,33-47,17-31,49-63 rcu_nocbs=1-15,33-47,17-31,49-63 numa_balancing=disable amd_iommu=on iommu=pt nmi_watchdog=0 audit=0 nosoftlockup processor.max_cstate=0 hpet=disable tsc=reliable mce=off splash quiet vt.handoff=1
+
+
+Linux uname
+^^^^^^^^^^^
+
+::
+
+ $ uname -a
+ Linux s60-t210-sut1 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
+
+
+System-level Core Jitter
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+ $ sudo taskset -c 3 /home/testuser/pma_tools/jitter/jitter -i 30
+ Linux Jitter testing program version 1.9
+ Iterations=20
+ The pragram will execute a dummy function 80000 times
+ Display is updated every 20000 displayUpdate intervals
+ Thread affinity will be set to core_id:7
+ Timings are in CPU Core cycles
+ Inst_Min: Minimum Excution time during the display update interval(default is ~1 second)
+ Inst_Max: Maximum Excution time during the display update interval(default is ~1 second)
+ Inst_jitter: Jitter in the Excution time during rhe display update interval. This is the value of interest
+ last_Exec: The Excution time of last iteration just before the display update
+ Abs_Min: Absolute Minimum Excution time since the program started or statistics were reset
+ Abs_Max: Absolute Maximum Excution time since the program started or statistics were reset
+ tmp: Cumulative value calcualted by the dummy function
+ Interval: Time interval between the display updates in Core Cycles
+ Sample No: Sample number
+
+ Inst_Min,Inst_Max,Inst_jitter,last_Exec,Abs_min,Abs_max,tmp,Interval,Sample No
+ 116376,145848,29472,116376,116376,145848,3399090176,2350958712,1
+ 116376,145848,29472,116400,116376,145848,4158259200,2355136968,2
+ 116376,145848,29472,116376,116376,145848,622460928,2343355128,3
+ 116376,145848,29472,116376,116376,145848,1381629952,2362905912,4
+ 116376,145848,29472,116400,116376,145848,2140798976,2344101768,5
+ 116376,145848,29472,116376,116376,145848,2899968000,2341791912,6
+ 116376,145848,29472,116400,116376,145848,3659137024,2340794664,7
+ 116376,145848,29472,116400,116376,145848,123338752,2336863896,8
+ 116376,145752,29376,116400,116376,145848,882507776,2335339584,9
+ 116376,145512,29136,116376,116376,145848,1641676800,2335619160,10
+ 116376,145512,29136,116400,116376,145848,2400845824,2335646280,11
+ 116376,145848,29472,116400,116376,145848,3160014848,2350534872,12
+ 116376,145848,29472,116400,116376,145848,3919183872,2348972352,13
+ 116376,145848,29472,116400,116376,145848,383385600,2363157840,14
+ 116376,145848,29472,116400,116376,145848,1142554624,2349686904,15
+ 116376,145848,29472,116400,116376,145848,1901723648,2356550976,16
+ 116376,145848,29472,119304,116376,145848,2660892672,2365225944,17
+ 116376,145848,29472,116400,116376,145848,3420061696,2365215576,18
+ 116376,145848,29472,116400,116376,145848,4179230720,2349971088,19
+ 116376,145848,29472,116400,116376,145848,643432448,2339421384,20"
+
+
+Memory Bandwidth
+^^^^^^^^^^^^^^^^
+
+::
+
+ $ sudo /home/testuser/mlc --bandwidth_matrix
+ TBC
+
+::
+
+ $ sudo /home/testuser/mlc --peak_injection_bandwidth
+ TBC
+
+::
+
+ $ sudo /home/testuser/mlc --max_bandwidth
+ TBC
+
+
+Memory Latency
+^^^^^^^^^^^^^^
+
+::
+
+ $ sudo /home/testuser/mlc --latency_matrix
+ TBC
+
+::
+
+ $ sudo /home/testuser/mlc --idle_latency
+ TBC
+
+::
+
+ $ sudo /home/testuser/mlc --loaded_latency
+ TBC
+
+
+L1/L2/LLC Latency
+^^^^^^^^^^^^^^^^^
+
+::
+
+ $ sudo /home/testuser/mlc --c2c_latency
+ TBC
+
+.. include:: ../introduction/test_environment_sut_meltspec_zn2.rst
diff --git a/docs/report/introduction/test_environment_sut_meltspec_zn2.rst b/docs/report/introduction/test_environment_sut_meltspec_zn2.rst
new file mode 100644
index 0000000000..24169331a7
--- /dev/null
+++ b/docs/report/introduction/test_environment_sut_meltspec_zn2.rst
@@ -0,0 +1,331 @@
+Spectre and Meltdown Checks
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Following section displays the output of a running shell script to tell if
+system is vulnerable against the several speculative execution CVEs that were
+made public in 2018. Script is available on `Spectre & Meltdown Checker Github
+<https://github.com/speed47/spectre-meltdown-checker>`_.
+
+::
+
+ Spectre and Meltdown mitigation detection tool v0.43
+
+ Checking for vulnerabilities on current system
+ Kernel is Linux 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64
+ CPU is AMD EPYC 7532 32-Core Processor
+
+ Hardware check
+ * Hardware support (CPU microcode) for mitigation techniques
+ * Indirect Branch Restricted Speculation (IBRS)
+ * SPEC_CTRL MSR is available: YES
+ * CPU indicates IBRS capability: YES (IBRS_SUPPORT feature bit)
+ * CPU indicates preferring IBRS always-on: NO
+ * CPU indicates preferring IBRS over retpoline: YES
+ * Indirect Branch Prediction Barrier (IBPB)
+ * PRED_CMD MSR is available: YES
+ * CPU indicates IBPB capability: YES (IBPB_SUPPORT feature bit)
+ * Single Thread Indirect Branch Predictors (STIBP)
+ * SPEC_CTRL MSR is available: YES
+ * CPU indicates STIBP capability: YES (AMD STIBP feature bit)
+ * CPU indicates preferring STIBP always-on: NO
+ * Speculative Store Bypass Disable (SSBD)
+ * CPU indicates SSBD capability: YES (AMD SSBD in SPEC_CTRL)
+ * L1 data cache invalidation
+ * FLUSH_CMD MSR is available: NO
+ * CPU indicates L1D flush capability: NO
+ * CPU supports Transactional Synchronization Extensions (TSX): NO
+ * CPU supports Software Guard Extensions (SGX): NO
+ * CPU supports Special Register Buffer Data Sampling (SRBDS): NO
+ * CPU microcode is known to cause stability problems: NO (family 0x17 model 0x31 stepping 0x0 ucode 0x8301034 cpuid 0x830f10)
+ * CPU microcode is the latest known available version: NO (latest version is 0x8301039 dated 2020/02/07 according to builtin firmwares DB v160.20200912+i20200722)
+ * CPU vulnerability to the speculative execution attack variants
+ * Vulnerable to CVE-2017-5753 (Spectre Variant 1, bounds check bypass): YES
+ * Vulnerable to CVE-2017-5715 (Spectre Variant 2, branch target injection): YES
+ * Vulnerable to CVE-2017-5754 (Variant 3, Meltdown, rogue data cache load): NO
+ * Vulnerable to CVE-2018-3640 (Variant 3a, rogue system register read): NO
+ * Vulnerable to CVE-2018-3639 (Variant 4, speculative store bypass): YES
+ * Vulnerable to CVE-2018-3615 (Foreshadow (SGX), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-3620 (Foreshadow-NG (OS), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-3646 (Foreshadow-NG (VMM), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-12126 (Fallout, microarchitectural store buffer data sampling (MSBDS)): NO
+ * Vulnerable to CVE-2018-12130 (ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)): NO
+ * Vulnerable to CVE-2018-12127 (RIDL, microarchitectural load port data sampling (MLPDS)): NO
+ * Vulnerable to CVE-2019-11091 (RIDL, microarchitectural data sampling uncacheable memory (MDSUM)): NO
+ * Vulnerable to CVE-2019-11135 (ZombieLoad V2, TSX Asynchronous Abort (TAA)): NO
+ * Vulnerable to CVE-2018-12207 (No eXcuses, iTLB Multihit, machine check exception on page size changes (MCEPSC)): NO
+ * Vulnerable to CVE-2020-0543 (Special Register Buffer Data Sampling (SRBDS)): NO
+
+ CVE-2017-5753 aka 'Spectre Variant 1, bounds check bypass'
+ * Mitigated according to the /sys interface: YES (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)
+ * Kernel has array_index_mask_nospec: YES (1 occurrence(s) found of x86 64 bits array_index_mask_nospec())
+ * Kernel has the Red Hat/Ubuntu patch: NO
+ * Kernel has mask_nospec64 (arm64): NO
+ * Kernel has array_index_nospec (arm64): NO
+ > STATUS: NOT VULNERABLE (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)
+
+ CVE-2017-5715 aka 'Spectre Variant 2, branch target injection'
+ * Mitigated according to the /sys interface: YES (Mitigation: Full AMD retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling)
+ * Mitigation 1
+ * Kernel is compiled with IBRS support: YES
+ * IBRS enabled and active: YES (for firmware code only)
+ * Kernel is compiled with IBPB support: YES
+ * IBPB enabled and active: YES
+ * Mitigation 2
+ * Kernel has branch predictor hardening (arm): NO
+ * Kernel compiled with retpoline option: YES
+ * Kernel compiled with a retpoline-aware compiler: YES (kernel reports full retpoline compilation)
+ > STATUS: NOT VULNERABLE (Full retpoline + IBPB are mitigating the vulnerability)
+
+ CVE-2017-5754 aka 'Variant 3, Meltdown, rogue data cache load'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports Page Table Isolation (PTI): YES
+ * PTI enabled and active: NO
+ * Reduced performance impact of PTI: NO (PCID/INVPCID not supported, performance impact of PTI will be significant)
+ * Running as a Xen PV DomU: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3640 aka 'Variant 3a, rogue system register read'
+ * CPU microcode mitigates the vulnerability: YES
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3639 aka 'Variant 4, speculative store bypass'
+ * Mitigated according to the /sys interface: YES (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
+ * Kernel supports disabling speculative store bypass (SSB): YES (found in /proc/self/status)
+ * SSB mitigation is enabled and active: YES (per-thread through prctl)
+ * SSB mitigation currently active for selected processes: YES (systemd-journald systemd-logind systemd-networkd systemd-resolved systemd-timesyncd systemd-udevd)
+ > STATUS: NOT VULNERABLE (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
+
+ CVE-2018-3615 aka 'Foreshadow (SGX), L1 terminal fault'
+ * CPU microcode mitigates the vulnerability: N/A
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3620 aka 'Foreshadow-NG (OS), L1 terminal fault'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports PTE inversion: YES (found in kernel image)
+ * PTE inversion enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault'
+ * Information from the /sys interface: Not affected
+ * This system is a host running a hypervisor: NO
+ * Mitigation 1 (KVM)
+ * EPT is disabled: N/A (the kvm_intel module is not loaded)
+ * Mitigation 2
+ * L1D flush is supported by kernel: YES (found flush_l1d in kernel image)
+ * L1D flush enabled: NO
+ * Hardware-backed L1D flush supported: NO (flush will be done in software, this is slower)
+ * Hyper-Threading (SMT) is enabled: YES
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12126 aka 'Fallout, microarchitectural store buffer data sampling (MSBDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12130 aka 'ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12127 aka 'RIDL, microarchitectural load port data sampling (MLPDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2019-11091 aka 'RIDL, microarchitectural data sampling uncacheable memory (MDSUM)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2019-11135 aka 'ZombieLoad V2, TSX Asynchronous Abort (TAA)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * TAA mitigation is supported by kernel: YES (found tsx_async_abort in kernel image)
+ * TAA mitigation enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12207 aka 'No eXcuses, iTLB Multihit, machine check exception on page size changes (MCEPSC)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * This system is a host running a hypervisor: NO
+ * iTLB Multihit mitigation is supported by kernel: YES (found itlb_multihit in kernel image)
+ * iTLB Multihit mitigation enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2020-0543 aka 'Special Register Buffer Data Sampling (SRBDS)'
+ * SRBDS mitigation control is supported by the kernel: NO
+ * SRBDS mitigation control is enabled and active: NO (SRBDS not found in sysfs hierarchy)
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ > SUMMARY: CVE-2017-5753:OK CVE-2017-5715:OK CVE-2017-5754:OK CVE-2018-3640:OK CVE-2018-3639:OK CVE-2018-3615:OK CVE-2018-3620:OK CVE-2018-3646:OK CVE-2018-12126:OK CVE-2018-12130:OK CVE-2018-12127:OK CVE-2019-11091:OK CVE-2019-11135:OK CVE-2018-12207:OK CVE-2020-0543:OK
+
+ Need more detailed information about mitigation options? Use --explain
+ A false sense of security is worse than no security at all, see --disclaimer
+
+::
+
+ Spectre and Meltdown mitigation detection tool v0.43
+
+ Checking for vulnerabilities on current system
+ Kernel is Linux 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64
+ CPU is AMD EPYC 7532 32-Core Processor
+
+ Hardware check
+ * Hardware support (CPU microcode) for mitigation techniques
+ * Indirect Branch Restricted Speculation (IBRS)
+ * SPEC_CTRL MSR is available: YES
+ * CPU indicates IBRS capability: YES (IBRS_SUPPORT feature bit)
+ * CPU indicates preferring IBRS always-on: NO
+ * CPU indicates preferring IBRS over retpoline: YES
+ * Indirect Branch Prediction Barrier (IBPB)
+ * PRED_CMD MSR is available: YES
+ * CPU indicates IBPB capability: YES (IBPB_SUPPORT feature bit)
+ * Single Thread Indirect Branch Predictors (STIBP)
+ * SPEC_CTRL MSR is available: YES
+ * CPU indicates STIBP capability: YES (AMD STIBP feature bit)
+ * CPU indicates preferring STIBP always-on: NO
+ * Speculative Store Bypass Disable (SSBD)
+ * CPU indicates SSBD capability: YES (AMD SSBD in SPEC_CTRL)
+ * L1 data cache invalidation
+ * FLUSH_CMD MSR is available: NO
+ * CPU indicates L1D flush capability: NO
+ * CPU supports Transactional Synchronization Extensions (TSX): NO
+ * CPU supports Software Guard Extensions (SGX): NO
+ * CPU supports Special Register Buffer Data Sampling (SRBDS): NO
+ * CPU microcode is known to cause stability problems: NO (family 0x17 model 0x31 stepping 0x0 ucode 0x8301034 cpuid 0x830f10)
+ * CPU microcode is the latest known available version: NO (latest version is 0x8301039 dated 2020/02/07 according to builtin firmwares DB v160.20200912+i20200722)
+ * CPU vulnerability to the speculative execution attack variants
+ * Vulnerable to CVE-2017-5753 (Spectre Variant 1, bounds check bypass): YES
+ * Vulnerable to CVE-2017-5715 (Spectre Variant 2, branch target injection): YES
+ * Vulnerable to CVE-2017-5754 (Variant 3, Meltdown, rogue data cache load): NO
+ * Vulnerable to CVE-2018-3640 (Variant 3a, rogue system register read): NO
+ * Vulnerable to CVE-2018-3639 (Variant 4, speculative store bypass): YES
+ * Vulnerable to CVE-2018-3615 (Foreshadow (SGX), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-3620 (Foreshadow-NG (OS), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-3646 (Foreshadow-NG (VMM), L1 terminal fault): NO
+ * Vulnerable to CVE-2018-12126 (Fallout, microarchitectural store buffer data sampling (MSBDS)): NO
+ * Vulnerable to CVE-2018-12130 (ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)): NO
+ * Vulnerable to CVE-2018-12127 (RIDL, microarchitectural load port data sampling (MLPDS)): NO
+ * Vulnerable to CVE-2019-11091 (RIDL, microarchitectural data sampling uncacheable memory (MDSUM)): NO
+ * Vulnerable to CVE-2019-11135 (ZombieLoad V2, TSX Asynchronous Abort (TAA)): NO
+ * Vulnerable to CVE-2018-12207 (No eXcuses, iTLB Multihit, machine check exception on page size changes (MCEPSC)): NO
+ * Vulnerable to CVE-2020-0543 (Special Register Buffer Data Sampling (SRBDS)): NO
+
+ CVE-2017-5753 aka 'Spectre Variant 1, bounds check bypass'
+ * Mitigated according to the /sys interface: YES (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)
+ * Kernel has array_index_mask_nospec: YES (1 occurrence(s) found of x86 64 bits array_index_mask_nospec())
+ * Kernel has the Red Hat/Ubuntu patch: NO
+ * Kernel has mask_nospec64 (arm64): NO
+ * Kernel has array_index_nospec (arm64): NO
+ > STATUS: NOT VULNERABLE (Mitigation: usercopy/swapgs barriers and __user pointer sanitization)
+
+ CVE-2017-5715 aka 'Spectre Variant 2, branch target injection'
+ * Mitigated according to the /sys interface: YES (Mitigation: Full AMD retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling)
+ * Mitigation 1
+ * Kernel is compiled with IBRS support: YES
+ * IBRS enabled and active: YES (for firmware code only)
+ * Kernel is compiled with IBPB support: YES
+ * IBPB enabled and active: YES
+ * Mitigation 2
+ * Kernel has branch predictor hardening (arm): NO
+ * Kernel compiled with retpoline option: YES
+ * Kernel compiled with a retpoline-aware compiler: YES (kernel reports full retpoline compilation)
+ > STATUS: NOT VULNERABLE (Full retpoline + IBPB are mitigating the vulnerability)
+
+ CVE-2017-5754 aka 'Variant 3, Meltdown, rogue data cache load'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports Page Table Isolation (PTI): YES
+ * PTI enabled and active: NO
+ * Reduced performance impact of PTI: NO (PCID/INVPCID not supported, performance impact of PTI will be significant)
+ * Running as a Xen PV DomU: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3640 aka 'Variant 3a, rogue system register read'
+ * CPU microcode mitigates the vulnerability: YES
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3639 aka 'Variant 4, speculative store bypass'
+ * Mitigated according to the /sys interface: YES (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
+ * Kernel supports disabling speculative store bypass (SSB): YES (found in /proc/self/status)
+ * SSB mitigation is enabled and active: YES (per-thread through prctl)
+ * SSB mitigation currently active for selected processes: YES (systemd-journald systemd-logind systemd-networkd systemd-resolved systemd-timesyncd systemd-udevd)
+ > STATUS: NOT VULNERABLE (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
+
+ CVE-2018-3615 aka 'Foreshadow (SGX), L1 terminal fault'
+ * CPU microcode mitigates the vulnerability: N/A
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3620 aka 'Foreshadow-NG (OS), L1 terminal fault'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports PTE inversion: YES (found in kernel image)
+ * PTE inversion enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault'
+ * Information from the /sys interface: Not affected
+ * This system is a host running a hypervisor: NO
+ * Mitigation 1 (KVM)
+ * EPT is disabled: N/A (the kvm_intel module is not loaded)
+ * Mitigation 2
+ * L1D flush is supported by kernel: YES (found flush_l1d in kernel image)
+ * L1D flush enabled: NO
+ * Hardware-backed L1D flush supported: NO (flush will be done in software, this is slower)
+ * Hyper-Threading (SMT) is enabled: YES
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12126 aka 'Fallout, microarchitectural store buffer data sampling (MSBDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12130 aka 'ZombieLoad, microarchitectural fill buffer data sampling (MFBDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12127 aka 'RIDL, microarchitectural load port data sampling (MLPDS)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2019-11091 aka 'RIDL, microarchitectural data sampling uncacheable memory (MDSUM)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * Kernel supports using MD_CLEAR mitigation: YES (found md_clear implementation evidence in kernel image)
+ * Kernel mitigation is enabled and active: NO
+ * SMT is either mitigated or disabled: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2019-11135 aka 'ZombieLoad V2, TSX Asynchronous Abort (TAA)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * TAA mitigation is supported by kernel: YES (found tsx_async_abort in kernel image)
+ * TAA mitigation enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2018-12207 aka 'No eXcuses, iTLB Multihit, machine check exception on page size changes (MCEPSC)'
+ * Mitigated according to the /sys interface: YES (Not affected)
+ * This system is a host running a hypervisor: NO
+ * iTLB Multihit mitigation is supported by kernel: YES (found itlb_multihit in kernel image)
+ * iTLB Multihit mitigation enabled and active: NO
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ CVE-2020-0543 aka 'Special Register Buffer Data Sampling (SRBDS)'
+ * SRBDS mitigation control is supported by the kernel: NO
+ * SRBDS mitigation control is enabled and active: NO (SRBDS not found in sysfs hierarchy)
+ > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable)
+
+ > SUMMARY: CVE-2017-5753:OK CVE-2017-5715:OK CVE-2017-5754:OK CVE-2018-3640:OK CVE-2018-3639:OK CVE-2018-3615:OK CVE-2018-3620:OK CVE-2018-3646:OK CVE-2018-12126:OK CVE-2018-12130:OK CVE-2018-12127:OK CVE-2019-11091:OK CVE-2019-11135:OK CVE-2018-12207:OK CVE-2020-0543:OK
+
+ Need more detailed information about mitigation options? Use --explain
+ A false sense of security is worse than no security at all, see --disclaimer \ No newline at end of file
diff --git a/docs/report/introduction/test_environment_tg.rst b/docs/report/introduction/test_environment_tg.rst
index 28b233a574..24df4deb63 100644
--- a/docs/report/introduction/test_environment_tg.rst
+++ b/docs/report/introduction/test_environment_tg.rst
@@ -1,3 +1,5 @@
+.. _test_environment_tg:
+
TG Settings - TRex
------------------
@@ -54,6 +56,16 @@ Also, Python client is now starting traffic with:
core_mask=STLClient.CORE_MASK_PIN
+TG Startup Command (Stateful Mode)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+::
+
+ $ sudo -E -S sh -c "cd '${trex_install_dir}/scripts/' && \
+ nohup ./t-rex-64 -i --prefix $(hostname) --astf --hdrh --no-scapy-server \
+ --mbuf-factor 32 > /tmp/trex.log 2>&1 &" > /dev/null
+
+
TG API Driver
~~~~~~~~~~~~~
diff --git a/docs/report/introduction/testbed-2n-zn2.svg b/docs/report/introduction/testbed-2n-zn2.svg
new file mode 100644
index 0000000000..54b785b122
--- /dev/null
+++ b/docs/report/introduction/testbed-2n-zn2.svg
@@ -0,0 +1,1093 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.2" width="90.84mm" height="128.96mm" viewBox="501 625 9084 12896" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
+ <defs class="ClipPathGroup">
+ <clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
+ <rect x="501" y="625" width="9084" height="12896"/>
+ </clipPath>
+ <clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
+ <rect x="510" y="637" width="9066" height="12871"/>
+ </clipPath>
+ </defs>
+ <defs>
+ <font id="EmbeddedFont_1" horiz-adv-x="2048">
+ <font-face font-family="Arial embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1866" descent="432"/>
+ <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/>
+ <glyph unicode="x" horiz-adv-x="1020" d="M 15,0 L 403,552 44,1062 269,1062 432,813 C 463,766 487,726 506,694 535,738 562,777 587,811 L 766,1062 981,1062 614,562 1009,0 788,0 570,330 512,419 233,0 Z"/>
+ <glyph unicode="6" horiz-adv-x="986" d="M 1019,1107 L 840,1093 C 824,1164 801,1215 772,1247 723,1298 663,1324 592,1324 535,1324 484,1308 441,1276 384,1235 340,1174 307,1095 274,1016 257,903 256,756 299,822 352,871 415,903 478,935 543,951 612,951 732,951 834,907 919,819 1003,730 1045,616 1045,476 1045,384 1025,299 986,220 946,141 891,80 822,38 753,-4 674,-25 586,-25 436,-25 314,30 219,141 124,251 77,433 77,686 77,969 129,1175 234,1304 325,1416 448,1472 603,1472 718,1472 813,1440 887,1375 960,1310 1004,1221 1019,1107 Z M 284,475 C 284,413 297,354 324,297 350,240 387,197 434,168 481,138 531,123 583,123 659,123 724,154 779,215 834,276 861,360 861,465 861,566 834,646 780,705 726,763 658,792 576,792 495,792 426,763 369,705 312,646 284,570 284,475 Z"/>
+ <glyph unicode="1" horiz-adv-x="572" d="M 763,0 L 583,0 583,1147 C 540,1106 483,1064 413,1023 342,982 279,951 223,930 L 223,1104 C 324,1151 412,1209 487,1276 562,1343 616,1409 647,1472 L 763,1472 Z"/>
+ </font>
+ </defs>
+ <defs>
+ <font id="EmbeddedFont_2" horiz-adv-x="2048">
+ <font-face font-family="Calibri embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1953" descent="553"/>
+ <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/>
+ <glyph unicode="z" horiz-adv-x="658" d="M 727,70 C 727,57 726,47 724,38 722,29 720,21 717,16 714,10 711,6 706,4 701,1 696,0 691,0 L 137,0 C 123,0 112,5 103,14 94,23 89,39 89,61 L 89,95 C 89,104 90,113 91,120 92,127 94,135 97,142 100,149 103,157 108,166 113,174 118,183 125,194 L 522,812 137,812 C 126,812 118,818 112,829 105,840 102,857 102,882 102,894 103,905 104,914 105,923 108,930 111,936 114,941 117,945 122,948 126,950 131,951 137,951 L 653,951 C 660,951 667,950 673,948 678,946 683,943 687,938 691,933 694,927 697,920 699,913 700,903 700,892 L 700,860 C 700,851 699,842 698,834 697,826 695,818 692,811 689,803 686,795 681,786 676,777 671,768 664,757 L 269,139 691,139 C 696,139 701,138 706,136 710,133 714,129 717,124 720,119 722,112 724,103 726,94 727,83 727,70 Z"/>
+ <glyph unicode="y" horiz-adv-x="883" d="M 563,0 L 443,-331 C 439,-342 429,-350 413,-356 396,-361 371,-364 338,-364 321,-364 307,-363 296,-362 285,-360 277,-357 272,-353 266,-349 263,-344 262,-337 261,-330 263,-322 267,-313 L 391,0 C 385,3 379,7 374,13 369,19 365,25 363,32 L 42,892 C 37,906 34,917 34,925 34,933 37,939 42,944 47,949 56,952 68,954 80,955 96,956 116,956 136,956 152,956 163,955 174,954 183,952 190,949 197,946 202,943 205,938 208,933 211,926 214,917 L 471,195 474,195 722,921 C 726,934 731,942 737,946 742,949 751,952 762,954 773,955 790,956 811,956 830,956 845,955 857,954 869,952 878,949 884,944 889,939 892,933 892,925 892,917 890,907 886,895 Z"/>
+ <glyph unicode="x" horiz-adv-x="813" d="M 835,44 C 840,35 843,27 843,21 843,14 840,9 834,5 827,1 818,-2 805,-4 792,-5 775,-6 754,-6 734,-6 718,-6 707,-5 695,-4 686,-2 679,1 672,3 666,6 663,10 659,13 656,17 653,22 L 437,379 222,22 C 219,17 216,13 213,10 209,6 204,3 197,1 190,-2 180,-4 169,-5 158,-6 143,-6 124,-6 105,-6 89,-5 77,-4 64,-2 55,1 50,5 44,9 41,14 42,21 42,27 45,35 51,44 L 331,483 66,906 C 61,915 58,923 58,930 57,936 60,941 67,946 73,950 83,953 96,954 109,955 126,956 147,956 166,956 182,956 194,955 205,954 214,952 221,950 228,948 233,945 236,942 239,939 242,935 245,930 L 450,595 658,930 C 661,934 664,938 667,941 670,944 675,947 681,950 686,952 694,954 705,955 715,956 729,956 747,956 766,956 782,955 795,954 807,953 816,950 822,947 828,943 831,938 830,931 829,924 826,916 820,906 L 557,488 Z"/>
+ <glyph unicode="v" horiz-adv-x="883" d="M 891,927 C 891,924 891,922 891,919 890,916 890,912 889,909 888,906 888,902 887,898 886,894 884,890 883,885 L 576,30 C 573,23 570,17 566,12 561,7 555,4 546,1 537,-2 526,-4 513,-5 500,-6 483,-6 463,-6 443,-6 426,-5 413,-4 400,-3 389,-1 381,2 372,5 366,8 361,13 356,18 353,23 350,30 L 44,885 C 41,893 39,900 38,906 36,912 35,917 35,920 34,923 34,925 34,927 34,932 35,937 38,941 41,945 45,948 52,951 58,953 66,954 77,955 87,956 100,956 115,956 134,956 150,956 162,955 173,954 182,952 189,949 195,946 200,943 203,939 206,935 208,930 211,924 L 465,182 469,170 472,182 723,924 C 724,930 727,935 730,939 733,943 738,946 745,949 751,952 760,954 771,955 782,956 796,956 814,956 829,956 842,956 852,955 862,954 870,953 876,950 881,947 885,944 888,941 890,937 891,932 891,927 Z"/>
+ <glyph unicode="t" horiz-adv-x="606" d="M 621,91 C 621,72 620,56 617,45 614,34 610,25 605,20 600,15 592,10 581,5 570,0 558,-4 545,-7 531,-10 516,-12 501,-14 486,-16 470,-17 455,-17 408,-17 368,-11 335,2 302,14 274,33 253,58 232,83 216,114 207,153 197,191 192,236 192,288 L 192,814 66,814 C 56,814 48,819 42,830 36,841 33,858 33,882 33,895 34,905 36,914 37,923 39,930 42,936 45,941 48,945 53,948 57,950 62,951 67,951 L 192,951 192,1165 C 192,1170 193,1174 196,1178 198,1182 202,1186 209,1189 215,1192 223,1194 234,1195 245,1196 258,1197 274,1197 291,1197 304,1196 315,1195 326,1194 334,1192 340,1189 346,1186 350,1182 353,1178 356,1174 357,1170 357,1165 L 357,951 588,951 C 593,951 598,950 602,948 606,945 610,941 613,936 616,930 618,923 619,914 620,905 621,895 621,882 621,858 618,841 612,830 606,819 598,814 588,814 L 357,814 357,312 C 357,250 366,203 385,172 403,140 436,124 483,124 498,124 512,126 524,129 536,132 547,135 556,138 565,141 573,145 580,148 587,151 593,152 598,152 601,152 605,151 608,150 611,148 613,145 615,140 616,135 618,129 619,121 620,113 621,103 621,91 Z"/>
+ <glyph unicode="s" horiz-adv-x="658" d="M 718,270 C 718,224 710,183 693,147 676,111 651,81 620,56 589,31 551,13 508,0 465,-13 417,-19 365,-19 333,-19 303,-17 274,-12 245,-7 219,0 196,8 173,15 153,23 137,32 121,40 109,47 102,54 95,61 89,70 86,82 83,94 81,110 81,131 81,144 82,154 83,163 84,172 86,179 88,184 90,189 93,193 97,196 100,198 104,199 109,199 116,199 127,195 142,186 156,177 174,167 195,156 216,145 240,136 269,127 298,118 331,113 368,113 396,113 421,116 444,122 467,128 486,137 503,149 520,160 533,175 542,193 551,211 555,232 555,257 555,282 549,304 536,321 523,338 505,354 484,367 463,380 439,392 412,403 385,413 358,424 330,435 301,446 274,459 247,474 220,488 195,505 174,526 153,547 136,571 123,600 110,629 103,663 103,703 103,738 110,772 124,805 137,837 158,865 185,890 212,914 247,933 288,948 329,963 376,970 431,970 455,970 479,968 503,964 527,960 549,955 568,949 587,943 604,937 618,930 631,923 642,916 649,911 656,906 660,901 663,897 665,893 667,889 668,884 669,879 670,872 671,865 672,858 672,849 672,838 672,827 672,817 671,809 670,800 668,793 666,788 663,783 660,779 657,777 654,774 650,773 646,773 640,773 631,777 620,784 609,791 594,799 576,808 558,816 537,824 513,831 488,838 460,842 429,842 401,842 376,839 355,833 334,826 316,817 303,806 289,794 279,780 272,764 265,748 261,731 261,712 261,686 268,664 281,647 294,629 312,613 333,600 354,587 379,575 406,564 433,553 461,542 490,531 518,520 546,507 574,493 601,479 626,462 647,442 668,422 686,398 699,370 712,342 718,309 718,270 Z"/>
+ <glyph unicode="r" horiz-adv-x="554" d="M 679,866 C 679,851 679,839 678,829 677,819 676,811 674,806 672,800 670,796 667,793 664,790 659,788 654,788 649,788 642,790 635,793 627,796 618,799 609,802 599,805 588,807 576,810 564,813 551,814 537,814 520,814 504,811 488,804 472,797 455,786 438,771 420,756 401,735 382,710 363,685 341,654 318,617 L 318,25 C 318,20 317,15 314,12 311,8 307,5 301,2 295,-1 287,-3 276,-4 265,-5 252,-6 235,-6 219,-6 206,-5 195,-4 184,-3 176,-1 170,2 163,5 159,8 157,12 154,15 153,20 153,25 L 153,925 C 153,930 154,935 156,939 158,942 162,946 168,949 174,952 182,954 191,955 200,956 213,956 228,956 243,956 255,956 265,955 274,954 282,952 287,949 292,946 296,942 299,939 301,935 302,930 302,925 L 302,794 C 327,830 350,859 372,882 393,905 414,923 433,936 452,949 472,958 491,963 510,968 529,970 548,970 557,970 567,970 578,969 589,968 600,966 612,963 624,960 635,957 645,954 654,951 661,947 665,944 669,941 672,938 673,935 674,932 676,928 677,923 678,918 678,912 679,903 679,894 679,881 679,866 Z"/>
+ <glyph unicode="o" horiz-adv-x="917" d="M 990,485 C 990,412 980,344 961,283 942,221 913,168 875,123 836,78 788,44 731,19 673,-7 606,-19 530,-19 456,-19 392,-8 337,14 282,36 236,68 199,110 162,152 135,203 117,263 99,323 90,391 90,467 90,540 100,608 119,670 138,731 166,784 205,829 243,874 291,908 348,933 405,958 472,970 549,970 623,970 688,959 743,937 798,915 843,883 880,841 917,799 944,748 963,688 981,628 990,560 990,485 Z M 816,474 C 816,523 812,569 803,612 794,655 779,693 758,726 737,759 709,785 674,804 639,823 595,832 542,832 493,832 452,823 417,806 382,789 353,764 330,733 307,701 291,663 280,620 269,577 263,529 263,478 263,429 268,382 277,339 286,296 301,258 322,226 343,193 371,168 406,149 441,130 485,120 538,120 586,120 628,129 663,146 698,163 727,188 750,219 773,250 789,288 800,331 811,374 816,422 816,474 Z"/>
+ <glyph unicode="n" horiz-adv-x="796" d="M 928,25 C 928,20 927,15 924,12 921,8 917,5 911,2 905,-1 897,-3 886,-4 875,-5 862,-6 846,-6 829,-6 816,-5 805,-4 794,-3 786,-1 780,2 774,5 770,8 767,12 764,15 763,20 763,25 L 763,552 C 763,603 759,645 751,676 743,707 731,734 716,757 701,780 681,797 657,809 632,821 604,827 572,827 531,827 489,812 448,783 407,754 363,711 318,654 L 318,25 C 318,20 317,15 314,12 311,8 307,5 301,2 295,-1 287,-3 276,-4 265,-5 252,-6 235,-6 219,-6 206,-5 195,-4 184,-3 176,-1 170,2 163,5 159,8 157,12 154,15 153,20 153,25 L 153,925 C 153,930 154,935 156,939 158,942 162,946 168,949 174,952 182,954 191,955 200,956 213,956 228,956 243,956 255,956 265,955 274,954 282,952 287,949 292,946 296,942 299,939 301,935 302,930 302,925 L 302,806 C 353,863 403,904 454,931 504,957 555,970 606,970 666,970 717,960 758,940 799,919 832,892 857,858 882,824 901,784 912,739 923,693 928,638 928,574 Z"/>
+ <glyph unicode="m" horiz-adv-x="1366" d="M 1488,25 C 1488,20 1487,15 1484,12 1481,8 1477,5 1471,2 1465,-1 1457,-3 1446,-4 1435,-5 1422,-6 1406,-6 1389,-6 1376,-5 1365,-4 1354,-3 1346,-1 1340,2 1333,5 1329,8 1326,12 1323,15 1322,20 1322,25 L 1322,572 C 1322,610 1319,645 1312,676 1305,707 1295,734 1280,757 1265,780 1247,797 1224,809 1201,821 1175,827 1144,827 1106,827 1068,812 1030,783 991,754 949,711 903,654 L 903,25 C 903,20 902,15 899,12 896,8 892,5 886,2 879,-1 871,-3 860,-4 849,-5 836,-6 820,-6 805,-6 792,-5 781,-4 770,-3 761,-1 755,2 748,5 744,8 742,12 739,15 738,20 738,25 L 738,572 C 738,610 734,645 727,676 720,707 709,734 694,757 679,780 661,797 639,809 616,821 590,827 559,827 521,827 483,812 444,783 405,754 363,711 318,654 L 318,25 C 318,20 317,15 314,12 311,8 307,5 301,2 295,-1 287,-3 276,-4 265,-5 252,-6 235,-6 219,-6 206,-5 195,-4 184,-3 176,-1 170,2 163,5 159,8 157,12 154,15 153,20 153,25 L 153,925 C 153,930 154,935 156,939 158,942 162,946 168,949 174,952 182,954 191,955 200,956 213,956 228,956 243,956 255,956 265,955 274,954 282,952 287,949 292,946 296,942 299,939 301,935 302,930 302,925 L 302,806 C 353,863 402,904 450,931 497,957 545,970 594,970 631,970 665,966 695,957 724,948 750,936 773,921 796,905 815,886 831,865 847,843 860,819 871,792 901,825 930,852 957,875 984,898 1010,916 1035,930 1060,944 1084,954 1108,961 1131,967 1155,970 1179,970 1237,970 1286,960 1325,940 1364,919 1396,892 1421,858 1445,824 1462,784 1473,739 1483,693 1488,645 1488,594 Z"/>
+ <glyph unicode="k" horiz-adv-x="762" d="M 892,26 C 892,21 891,16 888,12 885,8 881,5 875,2 868,-1 859,-3 848,-4 837,-5 822,-6 805,-6 787,-6 772,-6 761,-5 749,-4 739,-2 731,1 723,3 717,6 712,11 707,15 702,20 698,26 L 318,524 318,25 C 318,20 317,15 314,12 311,8 307,5 301,2 295,-1 287,-3 276,-4 265,-5 252,-6 235,-6 219,-6 206,-5 195,-4 184,-3 176,-1 170,2 163,5 159,8 157,12 154,15 153,20 153,25 L 153,1361 C 153,1366 154,1371 157,1375 159,1379 163,1382 170,1385 176,1388 184,1390 195,1391 206,1392 219,1393 235,1393 252,1393 265,1392 276,1391 287,1390 295,1388 301,1385 307,1382 311,1379 314,1375 317,1371 318,1366 318,1361 L 318,547 658,921 C 663,928 669,933 675,938 681,942 688,946 697,949 705,952 715,954 726,955 737,956 751,956 767,956 784,956 798,956 809,955 820,954 830,952 837,950 844,947 849,944 852,941 855,937 856,932 856,926 856,918 854,910 850,902 845,894 838,885 828,874 L 502,548 868,73 C 877,62 883,53 887,46 890,39 892,32 892,26 Z"/>
+ <glyph unicode="i" horiz-adv-x="226" d="M 318,25 C 318,20 317,15 314,12 311,8 307,5 301,2 295,-1 287,-3 276,-4 265,-5 252,-6 235,-6 219,-6 206,-5 195,-4 184,-3 176,-1 170,2 163,5 159,8 157,12 154,15 153,20 153,25 L 153,925 C 153,930 154,934 157,938 159,942 163,945 170,948 176,951 184,953 195,954 206,955 219,956 235,956 252,956 265,955 276,954 287,953 295,951 301,948 307,945 311,942 314,938 317,934 318,930 318,925 Z M 337,1229 C 337,1190 330,1164 315,1150 300,1136 273,1129 234,1129 195,1129 169,1136 155,1150 140,1163 133,1189 133,1227 133,1266 140,1292 155,1306 170,1320 197,1327 236,1327 275,1327 301,1320 316,1307 330,1293 337,1267 337,1229 Z"/>
+ <glyph unicode="f" horiz-adv-x="623" d="M 646,1295 C 646,1282 645,1272 644,1265 643,1257 641,1251 640,1246 638,1241 636,1238 633,1237 630,1235 627,1234 623,1234 618,1234 613,1236 606,1239 599,1242 590,1245 580,1249 570,1252 558,1256 545,1259 531,1262 515,1263 497,1263 472,1263 451,1259 434,1251 417,1243 403,1231 392,1214 381,1197 374,1175 369,1148 364,1121 362,1088 362,1049 L 362,951 563,951 C 568,951 573,950 577,948 580,945 584,941 587,936 590,930 592,923 594,914 595,905 596,895 596,882 596,858 593,841 587,830 581,819 573,814 563,814 L 362,814 362,25 C 362,20 361,15 358,12 355,8 351,5 345,2 338,-1 330,-3 319,-4 308,-5 295,-6 279,-6 263,-6 250,-5 239,-4 228,-3 220,-1 214,2 207,5 203,8 200,12 197,15 196,20 196,25 L 196,814 69,814 C 58,814 50,819 45,830 40,841 37,858 37,882 37,895 38,905 39,914 40,923 42,930 45,936 48,941 51,945 55,948 59,950 64,951 69,951 L 196,951 196,1044 C 196,1107 202,1161 214,1206 225,1251 243,1287 267,1316 291,1345 321,1366 358,1380 394,1393 437,1400 486,1400 509,1400 532,1398 554,1394 576,1389 593,1385 605,1380 617,1375 625,1370 629,1366 633,1362 636,1357 639,1351 642,1344 644,1337 645,1328 646,1319 646,1308 646,1295 Z"/>
+ <glyph unicode="e" horiz-adv-x="848" d="M 921,514 C 921,488 915,470 902,459 889,448 874,442 857,442 L 267,442 C 267,392 272,347 282,307 292,267 309,233 332,204 355,175 386,153 423,138 460,123 506,115 560,115 603,115 641,119 674,126 707,133 736,140 761,149 785,158 805,166 821,173 836,180 848,183 856,183 861,183 865,182 869,180 872,177 875,174 877,169 879,164 881,158 882,150 883,141 883,131 883,119 883,110 883,103 882,97 881,90 881,85 880,80 879,75 877,70 875,66 872,62 869,58 866,55 862,51 851,45 833,37 815,28 792,20 763,12 734,4 701,-3 664,-10 626,-16 586,-19 543,-19 469,-19 404,-9 349,12 293,33 246,63 208,104 170,145 141,196 122,257 103,318 93,390 93,471 93,548 103,618 123,680 143,741 172,794 210,837 247,880 293,913 346,936 399,959 459,970 525,970 596,970 656,959 706,936 755,913 796,883 828,845 860,806 884,761 899,710 914,658 921,603 921,544 Z M 755,563 C 757,650 738,718 698,767 657,816 597,841 518,841 477,841 442,833 411,818 380,803 355,782 334,757 313,732 297,702 286,669 275,635 268,600 267,563 Z"/>
+ <glyph unicode="d" horiz-adv-x="848" d="M 924,25 C 924,20 923,15 921,11 918,7 914,4 909,2 903,-1 895,-3 886,-4 877,-5 865,-6 852,-6 838,-6 826,-5 817,-4 808,-3 800,-1 794,2 788,4 784,7 781,11 778,15 777,20 777,25 L 777,144 C 730,93 681,53 630,24 579,-5 523,-19 462,-19 396,-19 340,-6 293,20 246,45 209,80 180,124 151,167 129,219 116,278 103,337 96,399 96,464 96,541 104,611 121,674 138,736 162,789 195,833 228,877 268,911 317,935 365,958 421,970 484,970 537,970 585,959 629,936 672,913 715,879 758,834 L 758,1357 C 758,1362 759,1366 762,1371 764,1375 768,1378 775,1381 782,1383 790,1385 801,1387 811,1388 824,1389 840,1389 857,1389 870,1388 881,1387 892,1385 900,1383 906,1381 912,1378 917,1375 920,1371 923,1366 924,1362 924,1357 Z M 758,658 C 713,713 670,756 629,785 587,814 543,828 498,828 456,828 420,818 391,798 362,778 338,752 320,719 301,686 288,649 280,608 271,567 267,525 267,482 267,437 271,392 278,349 285,306 297,267 314,234 331,200 354,173 383,153 412,132 448,122 491,122 513,122 534,125 555,131 575,137 596,147 617,161 638,175 661,193 684,216 707,238 732,265 758,298 Z"/>
+ <glyph unicode="c" horiz-adv-x="727" d="M 800,162 C 800,151 800,141 799,133 798,124 797,117 796,112 794,106 792,101 790,97 787,92 782,86 774,78 765,69 751,59 731,47 711,34 689,23 664,14 639,4 611,-4 582,-10 553,-16 522,-19 491,-19 426,-19 369,-8 319,13 269,34 227,66 194,107 160,148 134,198 117,258 99,317 90,386 90,464 90,553 101,629 123,693 144,756 174,808 212,849 249,890 294,920 345,940 396,959 451,969 510,969 539,969 567,966 594,961 621,956 645,949 668,940 691,931 711,921 729,910 746,899 759,889 767,881 775,873 781,867 784,862 787,857 789,852 791,846 793,839 794,832 795,824 796,816 796,806 796,794 796,768 793,750 787,740 781,729 774,724 765,724 755,724 744,730 731,741 718,752 701,764 681,777 661,790 637,803 609,814 580,825 547,830 508,830 429,830 368,800 326,739 283,678 262,589 262,473 262,415 268,364 279,321 290,277 306,240 327,211 348,182 375,160 406,146 437,131 472,124 512,124 550,124 583,130 612,142 641,154 666,167 687,182 708,196 725,209 740,221 754,232 765,238 773,238 778,238 782,237 785,234 788,231 791,227 794,221 796,214 798,206 799,197 800,187 800,175 800,162 Z"/>
+ <glyph unicode="a" horiz-adv-x="762" d="M 831,24 C 831,16 828,10 823,6 818,2 810,-1 801,-3 792,-5 778,-6 760,-6 743,-6 729,-5 719,-3 708,-1 701,2 696,6 691,10 689,16 689,24 L 689,114 C 650,72 606,39 558,16 509,-7 458,-19 404,-19 357,-19 314,-13 276,-1 237,12 205,30 178,53 151,76 130,105 115,139 100,173 92,212 92,255 92,306 102,350 123,387 144,424 173,455 212,480 251,505 298,523 354,536 410,548 473,554 543,554 L 667,554 667,624 C 667,659 663,689 656,716 649,743 637,765 621,783 604,800 583,814 557,823 531,832 499,836 461,836 420,836 384,831 352,822 319,812 291,801 267,790 242,778 222,767 206,758 189,748 177,743 169,743 164,743 159,744 155,747 151,750 148,754 145,759 142,764 139,771 138,780 137,788 136,797 136,807 136,824 137,837 140,847 142,856 148,865 157,874 166,883 181,893 203,905 225,916 250,927 279,937 308,946 339,954 373,961 407,967 441,970 476,970 541,970 596,963 641,948 686,933 723,912 751,884 779,855 799,820 812,778 825,736 831,687 831,631 Z M 667,435 L 526,435 C 481,435 441,431 408,424 375,416 347,405 325,390 303,375 287,357 277,336 266,315 261,290 261,263 261,216 276,179 306,152 335,124 377,110 430,110 473,110 514,121 551,143 588,165 626,199 667,244 Z"/>
+ <glyph unicode="Z" horiz-adv-x="882" d="M 916,72 C 916,59 915,49 914,40 913,31 911,23 908,17 905,11 901,7 897,4 892,1 887,0 881,0 L 117,0 C 100,0 86,5 75,16 64,27 59,44 59,67 L 59,104 C 59,113 60,121 61,128 62,135 64,143 67,152 70,160 75,169 81,180 87,190 94,202 103,216 L 700,1150 110,1150 C 103,1150 98,1151 93,1154 88,1157 85,1161 82,1167 79,1172 76,1180 75,1189 74,1198 73,1208 73,1220 73,1233 74,1245 75,1254 76,1263 79,1271 82,1277 85,1283 88,1287 93,1290 98,1293 103,1294 110,1294 L 830,1294 C 848,1294 862,1289 873,1279 883,1268 888,1252 888,1231 L 888,1192 C 888,1181 887,1172 886,1164 885,1155 882,1147 879,1138 876,1129 871,1120 866,1110 860,1100 852,1088 843,1075 L 249,145 881,145 C 892,145 901,139 907,128 913,117 916,98 916,72 Z"/>
+ <glyph unicode="Y" horiz-adv-x="952" d="M 585,503 L 585,26 C 585,21 584,16 581,12 578,8 574,5 567,3 560,0 551,-2 540,-4 529,-5 515,-6 499,-6 482,-6 469,-5 458,-4 447,-2 438,0 431,3 424,5 419,8 416,12 413,16 412,21 412,26 L 412,503 46,1233 C 39,1248 34,1260 33,1269 31,1278 33,1284 38,1289 43,1294 52,1297 65,1298 78,1299 95,1300 117,1300 137,1300 153,1299 166,1298 178,1297 188,1295 195,1293 202,1290 208,1287 212,1283 215,1278 219,1273 222,1266 L 401,894 C 418,859 434,822 451,783 468,744 485,705 502,666 L 504,666 C 519,704 535,742 552,780 568,817 584,854 601,891 L 781,1265 C 783,1272 786,1277 790,1282 793,1287 798,1290 805,1293 811,1295 820,1297 831,1298 842,1299 857,1300 874,1300 898,1300 917,1299 931,1298 944,1296 954,1293 959,1288 964,1283 966,1277 965,1268 963,1259 958,1248 951,1233 Z"/>
+ <glyph unicode="U" horiz-adv-x="1003" d="M 1145,478 C 1145,399 1134,329 1111,268 1088,206 1055,154 1012,111 969,68 917,36 856,14 795,-8 725,-19 647,-19 576,-19 511,-9 452,12 393,33 343,63 301,104 259,144 227,194 204,255 181,316 170,386 170,465 L 170,1268 C 170,1273 171,1278 174,1282 177,1286 181,1289 188,1292 195,1294 203,1296 214,1298 225,1299 239,1300 256,1300 272,1300 286,1299 297,1298 308,1296 317,1294 324,1292 330,1289 334,1286 337,1282 340,1278 341,1273 341,1268 L 341,486 C 341,426 348,374 363,329 378,284 399,247 427,218 454,188 488,166 527,151 566,136 609,128 658,128 708,128 753,135 792,150 831,165 864,187 891,216 918,245 938,282 953,325 967,368 974,419 974,477 L 974,1268 C 974,1273 975,1278 978,1282 981,1286 985,1289 992,1292 999,1294 1008,1296 1019,1298 1030,1299 1043,1300 1060,1300 1076,1300 1090,1299 1101,1298 1112,1296 1120,1294 1127,1292 1133,1289 1138,1286 1141,1282 1144,1278 1145,1273 1145,1268 Z"/>
+ <glyph unicode="T" horiz-adv-x="986" d="M 983,1220 C 983,1207 982,1196 981,1187 980,1178 978,1170 975,1165 972,1159 968,1155 964,1152 959,1149 954,1148 949,1148 L 585,1148 585,26 C 585,21 584,16 581,12 578,8 574,5 567,3 560,0 552,-2 541,-4 530,-5 516,-6 499,-6 483,-6 469,-5 458,-4 447,-2 438,0 431,3 424,5 420,8 417,12 414,16 413,21 413,26 L 413,1148 49,1148 C 44,1148 39,1149 35,1152 30,1155 27,1159 24,1165 21,1170 19,1178 18,1187 16,1196 15,1207 15,1220 15,1233 16,1244 18,1254 19,1263 21,1271 24,1277 27,1283 30,1287 35,1290 39,1293 44,1294 49,1294 L 949,1294 C 954,1294 959,1293 964,1290 968,1287 972,1283 975,1277 978,1271 980,1263 981,1254 982,1244 983,1233 983,1220 Z"/>
+ <glyph unicode="S" horiz-adv-x="813" d="M 867,363 C 867,302 856,248 834,201 811,154 780,114 741,81 701,48 654,23 601,6 547,-11 489,-19 427,-19 384,-19 344,-15 307,-8 270,-1 237,8 208,19 179,30 154,41 135,52 115,63 101,73 94,81 86,89 80,99 77,112 73,124 71,140 71,161 71,176 72,188 73,198 74,207 76,215 79,221 82,227 85,231 89,234 93,236 98,237 103,237 112,237 126,231 143,220 160,209 181,196 208,183 235,170 267,157 305,146 342,134 386,128 435,128 472,128 507,133 538,143 569,153 595,167 618,186 640,204 657,226 669,253 681,280 687,310 687,344 687,381 679,412 662,438 645,464 623,487 596,507 569,526 538,544 503,561 468,577 432,594 395,611 358,628 323,646 288,667 253,688 222,712 195,740 168,768 146,801 129,839 112,876 103,921 103,974 103,1028 113,1076 133,1119 152,1161 180,1196 215,1225 250,1254 291,1276 340,1291 388,1306 440,1313 496,1313 525,1313 554,1311 583,1306 612,1301 639,1294 665,1286 690,1277 713,1268 733,1258 753,1247 766,1239 773,1233 779,1226 783,1221 785,1218 787,1214 789,1209 790,1204 791,1198 792,1191 793,1183 794,1175 794,1165 794,1152 794,1140 794,1129 793,1120 792,1111 790,1103 788,1097 786,1090 783,1086 780,1083 776,1080 772,1078 767,1078 760,1078 748,1083 733,1092 717,1101 698,1112 675,1124 652,1135 626,1146 595,1156 564,1165 529,1170 490,1170 454,1170 423,1165 396,1156 369,1146 347,1133 330,1117 313,1101 300,1082 291,1060 282,1038 278,1015 278,990 278,954 286,923 303,897 320,871 342,848 370,828 397,808 429,790 464,773 499,756 535,740 572,723 609,706 645,687 680,667 715,646 747,622 775,595 802,567 825,534 842,497 859,459 867,414 867,363 Z"/>
+ <glyph unicode="R" horiz-adv-x="882" d="M 1035,26 C 1035,21 1034,16 1032,12 1030,8 1026,5 1019,2 1012,-1 1003,-3 991,-4 979,-5 963,-6 943,-6 926,-6 912,-5 901,-4 890,-3 881,-1 874,3 867,6 862,10 859,15 855,20 852,27 849,35 L 730,340 C 716,375 702,407 687,436 672,465 654,490 633,511 612,532 588,548 560,560 532,571 498,577 459,577 L 344,577 344,26 C 344,21 343,16 340,12 337,8 332,5 326,3 319,0 311,-2 300,-4 289,-5 275,-6 258,-6 241,-6 228,-5 217,-4 206,-2 197,0 190,3 183,5 179,8 176,12 173,16 172,21 172,26 L 172,1224 C 172,1250 179,1268 193,1279 206,1289 221,1294 236,1294 L 511,1294 C 544,1294 571,1293 593,1292 614,1290 634,1288 651,1286 701,1277 745,1264 784,1245 822,1226 854,1203 880,1174 906,1145 926,1113 939,1076 952,1039 958,998 958,953 958,910 952,871 941,837 929,802 912,772 890,746 868,719 842,696 811,677 780,658 746,641 708,628 729,619 749,607 766,593 783,578 800,561 815,541 830,521 844,498 857,472 870,446 884,417 897,384 L 1013,99 C 1022,75 1028,58 1031,49 1034,39 1035,31 1035,26 Z M 776,935 C 776,986 765,1029 742,1064 719,1099 681,1124 628,1139 611,1144 593,1147 572,1149 551,1151 523,1152 489,1152 L 344,1152 344,716 512,716 C 557,716 597,722 630,733 663,744 690,759 712,779 734,798 750,821 761,848 771,875 776,904 776,935 Z"/>
+ <glyph unicode="P" horiz-adv-x="813" d="M 967,915 C 967,850 956,792 935,740 914,688 883,644 844,607 804,570 755,542 698,522 640,502 571,492 491,492 L 344,492 344,26 C 344,21 343,16 340,12 337,8 332,5 326,3 319,0 311,-2 300,-4 289,-5 275,-6 258,-6 241,-6 228,-5 217,-4 206,-2 197,0 190,3 183,5 179,8 176,12 173,16 172,21 172,26 L 172,1220 C 172,1247 179,1266 193,1277 207,1288 223,1294 240,1294 L 517,1294 C 545,1294 572,1293 598,1291 623,1288 654,1283 689,1276 724,1268 759,1254 796,1233 832,1212 863,1186 888,1155 913,1124 933,1089 947,1049 960,1008 967,964 967,915 Z M 786,901 C 786,954 776,998 757,1033 737,1068 713,1095 684,1112 655,1129 625,1140 594,1145 563,1150 532,1152 503,1152 L 344,1152 344,633 499,633 C 551,633 594,640 629,653 663,666 692,685 715,709 738,732 756,761 768,794 780,827 786,862 786,901 Z"/>
+ <glyph unicode="N" horiz-adv-x="1003" d="M 1150,71 C 1150,58 1148,46 1144,37 1139,28 1134,20 1127,14 1120,8 1112,4 1103,1 1094,-2 1086,-3 1077,-3 L 1022,-3 C 1005,-3 990,-1 977,3 964,6 951,13 940,23 928,32 916,45 905,62 893,79 880,100 866,126 L 458,862 C 437,900 415,940 394,982 372,1023 352,1064 333,1103 L 331,1103 C 332,1055 333,1006 334,956 335,906 335,856 335,807 L 335,26 C 335,21 334,17 331,13 328,8 324,5 318,3 311,0 303,-2 293,-4 282,-5 269,-6 253,-6 237,-6 224,-5 214,-4 203,-2 195,0 189,3 183,5 179,8 176,13 173,17 172,21 172,26 L 172,1220 C 172,1247 179,1266 194,1277 209,1288 225,1294 242,1294 L 324,1294 C 343,1294 360,1292 373,1289 386,1286 397,1280 408,1273 418,1265 428,1254 438,1241 447,1227 458,1210 469,1189 L 783,621 C 802,586 821,553 839,520 857,487 874,454 891,422 908,390 924,359 941,328 957,297 973,265 989,234 L 990,234 C 989,287 988,342 988,399 987,456 987,510 987,563 L 987,1265 C 987,1270 988,1274 991,1278 994,1282 998,1286 1005,1289 1011,1292 1019,1294 1030,1295 1040,1296 1053,1297 1070,1297 1085,1297 1097,1296 1108,1295 1119,1294 1127,1292 1133,1289 1139,1286 1143,1282 1146,1278 1149,1274 1150,1270 1150,1265 Z"/>
+ <glyph unicode="M" horiz-adv-x="1435" d="M 1579,26 C 1579,21 1578,16 1575,12 1572,8 1568,5 1561,3 1554,0 1546,-2 1536,-4 1525,-5 1512,-6 1495,-6 1480,-6 1467,-5 1456,-4 1445,-2 1436,0 1430,3 1423,5 1419,8 1416,12 1413,16 1412,21 1412,26 L 1412,1153 1410,1153 949,21 C 947,16 944,12 941,9 937,6 932,3 925,1 918,-2 909,-4 900,-5 890,-6 878,-6 865,-6 851,-6 839,-5 829,-4 819,-3 811,-1 804,2 797,4 792,7 789,10 785,13 782,17 781,21 L 340,1153 339,1153 339,26 C 339,21 338,16 335,12 332,8 328,5 321,3 314,0 306,-2 295,-4 284,-5 271,-6 254,-6 238,-6 225,-5 214,-4 203,-2 195,0 189,3 182,5 178,8 176,12 173,16 172,21 172,26 L 172,1216 C 172,1244 179,1264 194,1276 209,1288 225,1294 243,1294 L 347,1294 C 368,1294 387,1292 403,1288 419,1284 433,1278 445,1269 457,1260 467,1249 475,1236 483,1223 490,1207 496,1189 L 871,252 876,252 1266,1186 C 1273,1206 1281,1223 1290,1237 1299,1251 1308,1262 1319,1271 1329,1279 1340,1285 1353,1289 1366,1292 1380,1294 1397,1294 L 1506,1294 C 1516,1294 1526,1293 1535,1290 1544,1287 1551,1282 1558,1276 1564,1269 1569,1261 1573,1252 1577,1242 1579,1230 1579,1216 Z"/>
+ <glyph unicode="I" horiz-adv-x="191" d="M 344,26 C 344,21 343,16 340,12 337,8 333,5 326,3 319,0 311,-2 300,-4 289,-5 275,-6 258,-6 242,-6 228,-5 217,-4 206,-2 197,0 190,3 183,5 179,8 176,12 173,16 172,21 172,26 L 172,1268 C 172,1273 174,1278 177,1282 180,1286 185,1289 192,1292 199,1294 208,1296 219,1298 230,1299 243,1300 258,1300 275,1300 289,1299 300,1298 311,1296 319,1294 326,1292 333,1289 337,1286 340,1282 343,1278 344,1273 344,1268 Z"/>
+ <glyph unicode="G" horiz-adv-x="1073" d="M 1144,1118 C 1144,1105 1143,1094 1142,1085 1141,1075 1139,1067 1136,1061 1133,1054 1130,1050 1126,1047 1122,1044 1118,1043 1113,1043 1105,1043 1092,1049 1073,1062 1054,1075 1029,1089 998,1104 967,1119 929,1133 886,1146 842,1159 790,1165 730,1165 659,1165 595,1152 538,1126 481,1100 433,1064 394,1018 355,972 325,917 304,854 283,791 272,722 272,648 272,565 284,492 307,428 330,364 361,310 402,266 443,222 491,189 548,166 604,143 666,132 733,132 773,132 814,137 855,147 896,156 934,171 969,190 L 969,567 669,567 C 658,567 649,573 644,584 638,595 635,613 635,637 635,650 636,661 637,670 638,679 641,686 644,692 647,697 650,701 654,704 658,707 663,708 669,708 L 1080,708 C 1087,708 1095,707 1102,704 1109,701 1116,697 1122,692 1128,687 1133,679 1136,670 1139,661 1141,650 1141,638 L 1141,145 C 1141,128 1138,113 1132,100 1126,87 1113,76 1094,67 1075,57 1050,46 1019,35 988,24 957,14 924,6 891,-2 858,-8 825,-12 792,-16 759,-18 726,-18 626,-18 537,-3 458,29 379,60 313,104 259,161 204,218 163,287 134,367 105,447 91,536 91,635 91,738 107,831 138,914 169,997 212,1068 269,1127 325,1186 393,1231 472,1264 551,1296 638,1312 734,1312 783,1312 830,1308 873,1299 916,1290 955,1280 989,1269 1022,1257 1051,1244 1074,1231 1097,1217 1112,1206 1121,1197 1130,1188 1136,1178 1139,1167 1142,1156 1144,1139 1144,1118 Z"/>
+ <glyph unicode="E" horiz-adv-x="744" d="M 892,71 C 892,59 891,49 890,40 889,31 886,23 883,17 880,11 876,7 872,4 867,1 862,0 857,0 L 236,0 C 221,0 206,5 193,16 179,26 172,44 172,70 L 172,1224 C 172,1250 179,1268 193,1279 206,1289 221,1294 236,1294 L 850,1294 C 855,1294 860,1293 865,1290 869,1287 872,1283 875,1277 878,1271 880,1264 882,1255 883,1246 884,1234 884,1221 884,1209 883,1199 882,1190 880,1181 878,1173 875,1168 872,1162 869,1158 865,1155 860,1152 855,1151 850,1151 L 344,1151 344,745 778,745 C 783,745 788,744 793,741 797,738 801,733 804,728 807,723 809,715 810,706 811,697 812,686 812,673 812,661 811,651 810,642 809,633 807,626 804,621 801,616 797,612 793,610 788,607 783,606 778,606 L 344,606 344,143 857,143 C 862,143 867,142 872,139 876,136 880,132 883,127 886,121 889,114 890,105 891,96 892,84 892,71 Z"/>
+ <glyph unicode="D" horiz-adv-x="1020" d="M 1167,666 C 1167,554 1153,456 1124,373 1095,289 1054,220 999,165 944,110 876,68 796,41 716,14 621,0 510,0 L 236,0 C 221,0 206,5 193,16 179,26 172,44 172,70 L 172,1224 C 172,1250 179,1268 193,1279 206,1289 221,1294 236,1294 L 529,1294 C 641,1294 736,1280 813,1251 890,1222 955,1180 1008,1126 1060,1071 1100,1005 1127,928 1154,851 1167,763 1167,666 Z M 986,659 C 986,729 977,794 960,855 943,915 916,967 879,1011 842,1055 795,1089 738,1114 681,1139 608,1151 519,1151 L 344,1151 344,144 521,144 C 604,144 673,154 730,175 787,196 834,227 872,270 910,313 939,366 958,431 977,495 986,571 986,659 Z"/>
+ <glyph unicode="C" horiz-adv-x="952" d="M 1036,183 C 1036,172 1036,163 1035,155 1034,147 1033,140 1032,134 1030,128 1028,123 1025,118 1022,113 1018,108 1011,101 1004,94 990,84 969,71 948,57 921,44 890,31 858,18 822,7 781,-3 740,-12 695,-16 646,-16 562,-16 486,-2 419,26 351,54 293,95 246,150 198,205 161,272 136,353 110,433 97,525 97,630 97,737 111,833 139,917 166,1001 205,1072 255,1131 305,1189 365,1233 435,1264 504,1295 581,1310 666,1310 703,1310 740,1307 775,1300 810,1293 843,1284 873,1273 903,1262 930,1250 953,1236 976,1222 993,1211 1002,1202 1011,1193 1016,1186 1019,1181 1022,1176 1024,1171 1026,1165 1027,1158 1029,1151 1030,1142 1031,1133 1031,1123 1031,1111 1031,1098 1030,1086 1029,1077 1028,1068 1026,1060 1023,1054 1020,1047 1017,1043 1014,1040 1010,1037 1005,1035 1000,1035 991,1035 978,1042 961,1055 944,1068 923,1082 897,1098 870,1113 838,1128 801,1141 763,1154 718,1160 665,1160 608,1160 556,1149 509,1126 462,1103 421,1069 388,1024 355,979 329,925 311,861 292,796 283,723 283,640 283,558 292,486 310,423 327,360 353,307 386,265 419,222 459,190 507,169 555,147 609,136 670,136 721,136 766,142 805,155 843,168 876,182 903,198 930,213 952,227 969,240 986,253 1000,259 1010,259 1015,259 1019,258 1022,256 1025,254 1028,250 1030,245 1032,239 1034,231 1035,221 1036,211 1036,198 1036,183 Z"/>
+ <glyph unicode="A" horiz-adv-x="1124" d="M 1141,61 C 1146,46 1149,35 1150,26 1150,17 1147,10 1142,5 1137,0 1128,-3 1116,-4 1103,-5 1087,-6 1066,-6 1045,-6 1029,-6 1017,-5 1004,-4 995,-2 989,1 982,3 978,6 975,10 972,14 969,19 966,25 L 855,340 317,340 211,29 C 209,23 206,18 203,14 200,9 195,6 189,3 182,-1 173,-3 162,-4 150,-5 135,-6 116,-6 97,-6 81,-5 69,-4 56,-2 48,1 43,6 38,11 35,18 36,27 36,36 39,47 44,62 L 478,1264 C 481,1271 484,1277 489,1282 493,1287 499,1290 508,1293 516,1296 527,1298 540,1299 553,1300 569,1300 589,1300 610,1300 628,1300 642,1299 656,1298 667,1296 676,1293 685,1290 691,1287 696,1282 701,1277 704,1270 707,1263 Z M 584,1122 L 583,1122 360,477 810,477 Z"/>
+ <glyph unicode="8" horiz-adv-x="900" d="M 954,332 C 954,276 944,226 924,183 904,139 875,102 838,72 800,42 753,19 698,4 643,-11 579,-19 508,-19 441,-19 382,-12 329,2 276,16 232,37 195,64 158,91 130,125 111,165 92,205 82,251 82,302 82,343 89,380 102,414 115,448 135,479 160,508 185,537 215,564 252,589 289,614 330,637 376,660 336,681 301,703 270,726 239,749 213,774 192,801 171,828 155,856 144,887 133,918 127,951 127,987 127,1032 135,1075 152,1115 168,1154 193,1189 226,1218 259,1247 301,1271 352,1288 403,1305 462,1313 530,1313 595,1313 652,1305 700,1290 747,1274 787,1253 818,1226 849,1199 871,1167 886,1130 901,1093 908,1054 908,1012 908,978 903,945 892,914 881,883 864,853 843,825 822,797 796,771 765,747 734,722 698,699 658,678 705,655 748,631 785,606 822,581 853,555 878,527 903,498 922,468 935,437 948,405 954,370 954,332 Z M 738,996 C 738,1024 733,1049 724,1072 714,1095 700,1114 681,1130 662,1146 639,1158 612,1167 584,1175 552,1179 517,1179 445,1179 391,1163 354,1130 317,1097 298,1053 298,996 298,970 303,946 312,924 321,901 335,880 354,860 373,840 397,821 426,802 455,783 489,763 529,742 596,777 648,815 684,857 720,899 738,945 738,996 Z M 780,314 C 780,345 774,373 763,398 752,423 735,446 712,468 689,489 660,510 626,531 591,551 551,572 506,594 464,573 427,553 396,532 364,511 338,490 318,468 297,446 282,423 272,399 261,374 256,347 256,318 256,253 278,203 323,168 367,133 433,115 521,115 606,115 671,133 715,169 758,204 780,253 780,314 Z"/>
+ <glyph unicode="7" horiz-adv-x="865" d="M 943,1220 C 943,1208 943,1197 942,1188 941,1178 939,1169 938,1160 936,1151 934,1142 931,1134 928,1125 924,1116 920,1107 L 454,33 C 451,25 447,19 442,14 437,9 430,5 423,2 415,-2 405,-4 393,-5 381,-6 366,-6 349,-6 326,-6 309,-5 296,-3 283,-1 274,2 269,7 263,11 260,16 261,23 262,29 264,36 268,45 L 758,1143 137,1143 C 124,1143 115,1150 109,1163 102,1176 99,1195 99,1219 99,1232 100,1243 102,1252 103,1261 106,1269 109,1276 112,1282 116,1287 121,1290 126,1293 131,1294 137,1294 L 891,1294 C 900,1294 909,1293 916,1291 923,1289 928,1285 932,1279 935,1273 938,1265 940,1256 942,1247 943,1235 943,1220 Z"/>
+ <glyph unicode="6" horiz-adv-x="865" d="M 957,419 C 957,362 948,308 931,255 914,202 887,155 851,115 815,74 769,42 714,18 659,-7 593,-19 518,-19 464,-19 416,-12 375,1 334,14 298,33 267,58 236,83 211,113 191,149 170,185 154,226 142,272 129,318 120,368 115,423 110,478 107,536 107,599 107,654 110,710 116,767 122,824 133,878 148,931 163,984 184,1033 211,1080 237,1126 270,1166 310,1201 349,1235 397,1262 452,1282 507,1302 572,1312 645,1312 670,1312 695,1311 720,1308 745,1305 769,1301 790,1296 811,1291 829,1285 844,1279 859,1273 868,1268 873,1265 878,1261 881,1257 884,1253 886,1248 888,1244 889,1239 890,1234 891,1228 892,1222 893,1215 893,1207 893,1198 893,1186 893,1176 893,1167 892,1158 891,1151 889,1146 886,1141 883,1137 880,1134 876,1131 871,1130 865,1130 858,1130 848,1132 835,1137 822,1142 807,1147 789,1153 771,1158 749,1163 724,1168 698,1173 668,1175 634,1175 572,1175 519,1162 474,1137 429,1112 393,1078 365,1035 336,992 315,943 302,887 288,830 280,771 278,710 295,720 315,730 337,740 358,750 382,759 408,767 433,775 460,782 489,787 518,792 548,794 581,794 651,794 710,785 758,766 806,747 845,720 875,687 904,653 925,613 938,568 951,522 957,472 957,419 Z M 783,403 C 783,442 779,477 772,509 764,540 751,567 733,589 715,611 691,628 661,640 631,652 594,658 550,658 525,658 501,656 476,652 451,647 428,641 405,634 382,626 360,617 339,607 318,596 298,585 281,573 281,487 287,415 298,357 309,299 325,253 346,218 367,183 393,158 424,143 455,128 492,120 534,120 577,120 614,128 645,144 676,160 702,182 723,209 744,236 759,266 769,300 778,333 783,368 783,403 Z"/>
+ <glyph unicode="5" horiz-adv-x="848" d="M 918,416 C 918,347 906,285 883,231 860,177 827,132 784,95 741,58 691,29 632,10 573,-9 507,-19 435,-19 395,-19 357,-16 321,-11 285,-5 253,2 225,11 197,19 174,27 156,35 138,43 127,49 122,54 117,59 113,63 111,67 109,71 107,76 106,82 104,87 103,94 102,103 101,112 101,122 101,134 101,145 102,156 103,165 104,174 105,181 108,187 111,192 114,196 118,199 121,202 125,203 130,203 137,203 147,199 161,191 175,182 194,173 218,164 241,154 271,145 306,136 341,127 382,123 430,123 475,123 516,128 553,139 590,150 623,166 650,189 677,212 698,240 713,275 728,309 736,351 736,400 736,441 730,478 717,510 704,541 684,568 657,589 630,610 595,625 554,636 513,646 463,651 406,651 365,651 330,649 301,645 272,641 244,639 219,639 200,639 187,643 179,652 171,661 167,677 167,702 L 167,1229 C 167,1251 172,1267 183,1278 193,1289 208,1294 227,1294 L 800,1294 C 805,1294 811,1293 816,1290 821,1287 825,1282 828,1276 831,1270 834,1262 836,1253 837,1244 838,1233 838,1220 838,1196 835,1177 828,1164 821,1151 812,1144 800,1144 L 317,1144 317,781 C 340,784 364,786 389,787 413,788 441,788 473,788 547,788 612,779 667,762 722,744 769,719 806,687 843,654 871,615 890,569 909,523 918,472 918,416 Z"/>
+ <glyph unicode="4" horiz-adv-x="951" d="M 979,368 C 979,346 976,329 969,316 962,303 953,297 941,297 L 795,297 795,25 C 795,20 794,15 791,12 788,8 784,5 777,2 770,-1 762,-3 751,-4 740,-5 727,-6 710,-6 694,-6 681,-5 670,-4 659,-3 651,-1 645,2 638,5 634,8 632,12 629,15 628,20 628,25 L 628,297 94,297 C 86,297 79,298 74,300 69,302 64,306 60,311 55,316 52,324 51,334 49,344 48,357 48,373 48,386 48,397 49,407 50,417 51,426 53,435 55,443 58,451 61,459 64,466 68,474 73,483 L 539,1269 C 542,1274 547,1279 554,1283 560,1287 568,1290 578,1293 588,1296 600,1298 615,1299 630,1300 647,1300 667,1300 689,1300 708,1299 725,1298 741,1296 754,1294 764,1291 774,1288 782,1285 787,1281 792,1276 795,1271 795,1265 L 795,439 941,439 C 952,439 962,433 969,422 976,410 979,392 979,368 Z M 628,1149 L 626,1149 205,439 628,439 Z"/>
+ <glyph unicode="3" horiz-adv-x="831" d="M 914,370 C 914,311 904,257 883,210 862,162 833,121 794,87 755,53 708,27 651,9 594,-10 530,-19 459,-19 416,-19 375,-16 338,-9 300,-2 266,7 237,17 208,26 183,36 164,47 145,57 133,64 128,69 123,74 119,78 116,83 113,88 111,93 109,100 107,107 106,115 105,125 104,134 103,146 103,160 103,184 105,201 110,210 115,219 121,224 130,224 136,224 148,219 166,208 183,197 206,186 234,174 261,161 294,150 331,139 368,128 409,123 454,123 498,123 537,129 570,140 603,151 631,167 654,188 677,209 694,233 705,262 716,290 722,321 722,354 722,391 715,424 701,453 686,482 665,508 638,529 610,550 576,567 536,578 495,589 449,595 398,595 L 275,595 C 270,595 265,596 260,599 255,601 250,605 247,610 243,615 240,622 238,631 235,640 234,651 234,665 234,678 235,688 237,697 239,705 242,712 246,717 249,722 253,725 258,728 263,730 268,731 274,731 L 387,731 C 431,731 471,737 506,748 541,759 570,776 595,797 619,818 638,844 651,874 664,903 670,936 670,973 670,1000 666,1025 657,1050 648,1074 635,1095 618,1113 601,1131 579,1145 552,1156 525,1166 493,1171 458,1171 419,1171 384,1165 352,1154 319,1142 290,1129 265,1116 240,1103 219,1090 202,1079 185,1067 174,1061 167,1061 162,1061 158,1062 155,1064 151,1065 148,1069 146,1074 143,1079 142,1086 141,1095 140,1104 139,1115 139,1130 139,1140 139,1149 140,1157 141,1164 142,1171 144,1177 146,1182 148,1187 151,1192 154,1197 158,1202 165,1209 171,1215 184,1224 203,1236 222,1248 246,1260 275,1272 303,1283 336,1293 373,1301 410,1309 449,1313 492,1313 552,1313 605,1305 650,1290 695,1275 733,1253 764,1225 794,1197 817,1164 832,1125 847,1086 854,1042 854,995 854,954 849,917 838,882 827,847 812,816 791,789 770,762 745,739 715,720 685,701 650,687 611,680 L 611,678 C 656,673 697,662 734,645 771,627 802,605 829,578 856,551 877,520 892,485 907,449 914,411 914,370 Z"/>
+ <glyph unicode="2" horiz-adv-x="830" d="M 924,74 C 924,62 923,51 922,42 920,33 918,25 915,19 912,12 908,8 903,5 898,2 892,0 886,0 L 171,0 C 162,0 154,1 147,4 140,6 134,10 129,15 124,20 120,28 118,38 115,48 114,60 114,75 114,88 115,100 116,110 117,120 119,129 122,137 125,144 130,152 135,160 140,167 146,175 154,184 L 405,450 C 463,511 510,566 545,615 580,664 607,708 626,748 645,788 657,824 663,857 669,890 672,920 672,949 672,978 667,1005 658,1031 649,1056 635,1079 618,1098 600,1117 578,1133 551,1144 524,1155 494,1161 459,1161 418,1161 382,1155 350,1144 317,1133 289,1120 265,1107 240,1094 220,1081 204,1070 187,1059 175,1053 167,1053 162,1053 158,1054 155,1057 151,1060 148,1064 146,1070 143,1076 141,1084 140,1094 139,1104 138,1116 138,1130 138,1140 138,1149 139,1156 140,1163 141,1170 143,1175 144,1180 146,1185 149,1190 152,1195 157,1201 165,1208 173,1215 187,1224 207,1236 226,1248 251,1260 281,1272 310,1283 343,1293 379,1301 414,1309 452,1313 491,1313 554,1313 609,1304 656,1287 703,1269 742,1245 773,1214 804,1183 827,1148 842,1107 857,1066 865,1023 865,977 865,936 861,895 854,854 847,813 831,768 808,721 784,673 750,620 705,562 660,503 601,436 527,360 L 322,146 885,146 C 890,146 896,145 901,142 906,139 910,134 914,128 917,122 920,115 922,106 923,97 924,86 924,74 Z"/>
+ <glyph unicode="1" horiz-adv-x="761" d="M 927,68 C 927,55 926,45 924,36 922,27 919,20 916,15 913,10 909,6 905,4 900,1 896,0 891,0 L 215,0 C 210,0 206,1 202,4 198,6 194,10 191,15 187,20 184,27 182,36 180,45 179,55 179,68 179,80 180,90 182,99 184,108 187,115 190,121 193,126 196,131 201,134 205,137 210,138 215,138 L 485,138 485,1122 235,973 C 222,966 212,962 205,961 197,960 191,961 186,966 181,970 178,977 177,987 175,997 174,1010 174,1025 174,1036 175,1046 176,1054 177,1062 178,1069 180,1074 182,1079 185,1084 189,1088 192,1092 197,1096 203,1100 L 501,1291 C 504,1293 507,1295 511,1296 515,1297 520,1299 526,1300 532,1301 539,1302 547,1303 555,1303 565,1303 577,1303 593,1303 606,1302 617,1301 628,1300 636,1298 642,1296 648,1293 652,1290 654,1287 656,1283 657,1279 657,1275 L 657,138 891,138 C 896,138 901,137 906,134 911,131 915,126 918,121 921,115 923,108 925,99 926,90 927,80 927,68 Z"/>
+ <glyph unicode="0" horiz-adv-x="900" d="M 967,650 C 967,551 959,460 944,378 928,296 902,226 866,167 829,108 782,62 723,30 664,-3 592,-19 506,-19 425,-19 356,-5 301,25 245,54 200,96 166,153 132,209 108,278 94,361 79,443 72,537 72,644 72,743 80,833 96,916 112,998 138,1069 174,1128 210,1187 257,1232 316,1265 375,1297 447,1313 532,1313 614,1313 683,1299 739,1270 794,1241 839,1198 873,1142 907,1085 931,1016 946,934 960,851 967,757 967,650 Z M 791,638 C 791,703 789,761 784,812 779,863 773,909 764,948 755,987 743,1021 729,1050 714,1078 697,1101 677,1120 657,1138 634,1151 609,1160 583,1168 554,1172 522,1172 465,1172 419,1159 384,1132 349,1105 321,1069 301,1022 280,975 266,921 259,858 252,795 248,728 248,656 248,559 253,477 263,410 273,342 289,287 311,244 332,201 360,170 394,151 427,132 468,122 516,122 553,122 586,128 615,140 643,152 667,169 688,192 708,214 725,241 738,272 751,303 762,338 770,376 778,414 784,455 787,500 790,544 791,590 791,638 Z"/>
+ <glyph unicode="-" horiz-adv-x="519" d="M 558,505 C 558,479 555,461 549,451 543,441 534,436 523,436 L 105,436 C 93,436 84,441 78,452 72,462 69,480 69,505 69,530 72,548 78,558 84,568 93,573 105,573 L 523,573 C 528,573 533,572 538,570 542,568 546,564 549,559 552,553 554,546 556,537 557,528 558,518 558,505 Z"/>
+ <glyph unicode=")" horiz-adv-x="381" d="M 487,537 C 487,462 482,387 473,314 464,240 450,167 431,95 412,23 390,-48 363,-118 336,-187 304,-256 268,-324 266,-327 263,-330 259,-333 255,-336 250,-338 244,-340 237,-342 230,-343 221,-344 212,-345 202,-345 190,-345 173,-345 159,-344 150,-343 140,-341 133,-338 129,-335 124,-331 122,-326 123,-321 123,-315 125,-308 128,-300 189,-165 236,-28 267,114 298,255 314,397 314,540 314,683 298,825 267,966 236,1107 189,1244 126,1378 123,1384 122,1390 123,1395 124,1400 127,1405 132,1408 137,1411 145,1414 154,1416 163,1418 176,1419 191,1419 205,1419 217,1419 226,1418 235,1417 243,1415 249,1413 254,1411 258,1409 261,1407 264,1405 266,1403 267,1400 336,1263 390,1123 429,979 468,834 487,687 487,537 Z"/>
+ <glyph unicode="(" horiz-adv-x="381" d="M 495,1378 C 432,1244 385,1107 354,966 323,825 307,683 307,540 307,397 323,255 355,114 386,-27 432,-165 493,-300 496,-308 498,-315 499,-321 499,-326 497,-331 492,-335 487,-338 480,-341 471,-343 461,-344 448,-345 431,-345 419,-345 409,-345 400,-344 391,-343 384,-342 378,-340 371,-338 366,-336 362,-333 358,-330 355,-327 353,-324 317,-256 285,-187 258,-118 231,-48 208,23 189,95 170,167 156,240 147,314 138,387 133,462 133,537 133,612 138,687 149,760 159,833 174,906 193,979 212,1051 235,1122 262,1192 289,1262 320,1331 354,1400 355,1403 357,1405 360,1407 363,1409 367,1411 372,1413 377,1415 385,1417 394,1418 403,1419 415,1419 430,1419 445,1419 458,1418 467,1416 476,1414 484,1411 489,1408 494,1405 497,1400 498,1395 499,1390 498,1384 495,1378 Z"/>
+ <glyph unicode=" " horiz-adv-x="467"/>
+ </font>
+ </defs>
+ <defs class="TextShapeIndex">
+ <g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29 id30 id31 id32 id33 id34 id35 id36 id37 id38 id39 id40 id41 id42 id43 id44 id45 id46 id47 id48 id49 id50 id51 id52 id53 id54 id55 id56 id57 id58 id59 id60 id61 id62 id63 id64 id65 id66 id67 id68 id69 id70 id71 id72 id73 id74 id75 id76 id77 id78 id79 id80 id81 id82 id83 id84 id85 id86 id87 id88 id89 id90 id91 id92 id93 id94 id95 id96 id97 id98 id99 id100 id101 id102 id103 id104 id105 id106 id107 id108 id109 id110 id111 id112 id113 id114 id115 id116 id117 id118 id119 id120 id121 id122 id123 id124 id125 id126 id127 id128 id129 id130 id131 id132 id133"/>
+ </defs>
+ <defs class="EmbeddedBulletChars">
+ <g id="bullet-char-template-57356" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
+ </g>
+ <g id="bullet-char-template-57354" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
+ </g>
+ <g id="bullet-char-template-10146" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
+ </g>
+ <g id="bullet-char-template-10132" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
+ </g>
+ <g id="bullet-char-template-10007" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
+ </g>
+ <g id="bullet-char-template-10004" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
+ </g>
+ <g id="bullet-char-template-9679" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
+ </g>
+ <g id="bullet-char-template-8226" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
+ </g>
+ <g id="bullet-char-template-8211" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
+ </g>
+ <g id="bullet-char-template-61548" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
+ </g>
+ </defs>
+ <defs class="TextEmbeddedBitmaps"/>
+ <g class="SlideGroup">
+ <g>
+ <g id="container-id1">
+ <g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
+ <g class="Page">
+ <g class="Group">
+ <g class="com.sun.star.drawing.LineShape">
+ <g id="id3">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4714" y="6586" width="108" height="1971"/>
+ <path fill="none" stroke="rgb(238,131,59)" stroke-width="106" stroke-linejoin="miter" d="M 4767,6587 L 4768,8555"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.LineShape">
+ <g id="id4">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5319" y="6584" width="108" height="1972"/>
+ <path fill="none" stroke="rgb(238,131,59)" stroke-width="106" stroke-linejoin="miter" d="M 5372,6585 L 5373,8554"/>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id5">
+ <rect class="BoundingBox" stroke="none" fill="none" x="500" y="929" width="9086" height="12584"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="9" stroke-linejoin="miter" d="M 5043,13507 L 505,13507 505,934 9580,934 9580,13507 5043,13507 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id6">
+ <rect class="BoundingBox" stroke="none" fill="none" x="1372" y="9585" width="7241" height="3215"/>
+ <path fill="rgb(255,255,255)" stroke="none" d="M 4992,9603 L 8594,9603 8594,12781 1390,12781 1390,9603 4992,9603 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4992,9603 L 8594,9603 8594,12781 1390,12781 1390,9603 4992,9603 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id7">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3662" y="10566" width="2837" height="1203"/>
+ <path fill="rgb(68,114,196)" stroke="none" d="M 5080,11750 L 3680,11750 3680,10584 6480,10584 6480,11750 5080,11750 Z"/>
+ <path fill="none" stroke="rgb(50,84,144)" stroke-width="35" stroke-linejoin="miter" d="M 5080,11750 L 3680,11750 3680,10584 6480,10584 6480,11750 5080,11750 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4541" y="10888"><tspan fill="rgb(255,255,255)" stroke="none">Socket 0</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4406" y="11241"><tspan fill="rgb(255,255,255)" stroke="none">AMD EPYC</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4410" y="11594"><tspan fill="rgb(255,255,255)" stroke="none">Zen2 7532</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id8">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5588" y="9375" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 6041,9818 L 5597,9818 5597,9384 6484,9384 6484,9818 6041,9818 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 6041,9818 L 5597,9818 5597,9384 6484,9384 6484,9818 6041,9818 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="5766" y="9747"><tspan fill="rgb(0,0,0)" stroke="none">NIC3</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id9">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6342" y="8605" width="42" height="737"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6365,9323 L 6360,8623"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6365,9323 L 6365,9323 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6360,8623 L 6360,8623 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id10">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6262" y="9315" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 6346,9324 L 6420,9324 6420,9423 6271,9423 6271,9324 6346,9324 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 6346,9324 L 6420,9324 6420,9423 6271,9423 6271,9324 6346,9324 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id11">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5618" y="9317" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5702,9326 L 5776,9326 5776,9425 5627,9425 5627,9326 5702,9326 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5702,9326 L 5776,9326 5776,9425 5627,9425 5627,9326 5702,9326 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id12">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5683" y="8559" width="39" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5701,9325 L 5703,8577"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5701,9325 L 5701,9325 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5703,8577 L 5703,8577 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id13">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6107" y="8557" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6125,9321 L 6127,8575"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6125,9321 L 6125,9321 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6127,8575 L 6127,8575 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id14">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6041" y="9313" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 6125,9322 L 6199,9322 6199,9421 6050,9421 6050,9322 6125,9322 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 6125,9322 L 6199,9322 6199,9421 6050,9421 6050,9322 6125,9322 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id15">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5830" y="9315" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5914,9324 L 5988,9324 5988,9423 5839,9423 5839,9324 5914,9324 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5914,9324 L 5988,9324 5988,9423 5839,9423 5839,9324 5914,9324 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id16">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5909" y="8557" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5933,9323 L 5927,8575"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5933,9323 L 5933,9323 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5927,8575 L 5927,8575 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id17">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4624" y="9377" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 5077,9820 L 4633,9820 4633,9386 5520,9386 5520,9820 5077,9820 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 5077,9820 L 4633,9820 4633,9386 5520,9386 5520,9820 5077,9820 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="4802" y="9749"><tspan fill="rgb(0,0,0)" stroke="none">NIC2</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id18">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5377" y="8561" width="42" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5400,9325 L 5395,8579"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5400,9325 L 5400,9325 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5395,8579 L 5395,8579 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id19">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5297" y="9317" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5381,9326 L 5455,9326 5455,9425 5306,9425 5306,9326 5381,9326 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5381,9326 L 5455,9326 5455,9425 5306,9425 5306,9326 5381,9326 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id20">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4653" y="9319" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4737,9328 L 4811,9328 4811,9427 4662,9427 4662,9328 4737,9328 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4737,9328 L 4811,9328 4811,9427 4662,9427 4662,9328 4737,9328 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id21">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4718" y="8561" width="39" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4736,9327 L 4738,8579"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4736,9327 L 4736,9327 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4738,8579 L 4738,8579 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id22">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5142" y="8559" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5160,9323 L 5162,8577"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5160,9323 L 5160,9323 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5162,8577 L 5162,8577 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id23">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5077" y="9315" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5161,9324 L 5235,9324 5235,9423 5086,9423 5086,9324 5161,9324 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5161,9324 L 5235,9324 5235,9423 5086,9423 5086,9324 5161,9324 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id24">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4866" y="9317" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4950,9326 L 5024,9326 5024,9425 4875,9425 4875,9326 4950,9326 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4950,9326 L 5024,9326 5024,9425 4875,9425 4875,9326 4950,9326 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id25">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4945" y="8559" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4969,9325 L 4963,8577"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4969,9325 L 4969,9325 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4963,8577 L 4963,8577 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id26">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3675" y="9379" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 4128,9822 L 3684,9822 3684,9388 4571,9388 4571,9822 4128,9822 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 4128,9822 L 3684,9822 3684,9388 4571,9388 4571,9822 4128,9822 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3853" y="9751"><tspan fill="rgb(0,0,0)" stroke="none">NIC1</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id27">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4428" y="8563" width="42" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4451,9327 L 4446,8581"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4451,9327 L 4451,9327 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4446,8581 L 4446,8581 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id28">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4348" y="9319" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4432,9328 L 4506,9328 4506,9427 4357,9427 4357,9328 4432,9328 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4432,9328 L 4506,9328 4506,9427 4357,9427 4357,9328 4432,9328 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id29">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3705" y="9321" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 3789,9330 L 3863,9330 3863,9429 3714,9429 3714,9330 3789,9330 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 3789,9330 L 3863,9330 3863,9429 3714,9429 3714,9330 3789,9330 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id30">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3770" y="8611" width="39" height="737"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3788,9329 L 3790,8629"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3788,9329 L 3788,9329 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3790,8629 L 3790,8629 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id31">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4193" y="8561" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4211,9325 L 4213,8579"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4211,9325 L 4211,9325 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4213,8579 L 4213,8579 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id32">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4128" y="9317" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4212,9326 L 4286,9326 4286,9425 4137,9425 4137,9326 4212,9326 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4212,9326 L 4286,9326 4286,9425 4137,9425 4137,9326 4212,9326 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id33">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3917" y="9319" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4001,9328 L 4075,9328 4075,9427 3926,9427 3926,9328 4001,9328 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4001,9328 L 4075,9328 4075,9427 3926,9427 3926,9328 4001,9328 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id34">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3996" y="8561" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4020,9327 L 4014,8579"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4020,9327 L 4020,9327 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4014,8579 L 4014,8579 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id35">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5734" y="9824" width="557" height="734"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 6013,9824 L 6290,9985 6152,9985 6152,10395 6290,10395 6013,10557 5735,10395 5874,10395 5874,9985 5735,9985 6013,9824 Z M 6290,9824 L 6290,9824 Z M 5735,10557 L 5735,10557 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id36">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5773" y="10021" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 6011,10364 L 5773,10364 5773,10021 6248,10021 6248,10364 6011,10364 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="5782" y="10306"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id37">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4756" y="9829" width="557" height="734"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 5035,9829 L 5312,9990 5174,9990 5174,10400 5312,10400 5035,10562 4757,10400 4896,10400 4896,9990 4757,9990 5035,9829 Z M 5312,9829 L 5312,9829 Z M 4757,10562 L 4757,10562 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id38">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4796" y="10026" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 5034,10369 L 4796,10369 4796,10026 5271,10026 5271,10369 5034,10369 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="4805" y="10311"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id39">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3805" y="9837" width="556" height="734"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 4083,9837 L 4360,9998 4222,9998 4222,10408 4360,10408 4083,10570 3805,10408 3944,10408 3944,9998 3805,9998 4083,9837 Z M 4360,9837 L 4360,9837 Z M 3805,10570 L 3805,10570 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id40">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3843" y="10035" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 4081,10378 L 3843,10378 3843,10035 4318,10035 4318,10378 4081,10378 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3852" y="10320"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id41">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3748" y="8471" width="2666" height="234"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 3801,8651 L 3801,8651 3801,8644 3801,8638 3802,8631 3802,8625 3803,8619 3804,8612 3804,8606 3806,8600 3807,8594 3808,8588 3809,8583 3811,8577 3813,8572 3814,8567 3816,8563 3818,8558 3820,8554 3822,8550 3824,8546 3827,8543 3829,8540 3831,8537 3834,8534 3836,8532 3839,8530 3841,8529 3844,8528 3847,8527 3849,8526 3852,8526 6308,8524 6308,8524 6311,8524 6313,8525 6316,8526 6319,8527 6321,8528 6324,8530 6326,8532 6329,8535 6331,8538 6333,8541 6336,8544 6338,8548 6340,8552 6342,8556 6344,8561 6346,8566 6347,8571 6349,8576 6351,8581 6352,8587 6353,8593 6354,8599 6356,8605 6356,8611 6357,8617 6358,8624 6358,8630 6359,8637 6359,8643 6359,8650"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 3801,8651 L 3801,8651 Z"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 6360,8524 L 6360,8524 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id42">
+ <rect class="BoundingBox" stroke="none" fill="none" x="1540" y="11762" width="1219" height="890"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="370px" font-weight="400"><tspan class="TextPosition" x="1540" y="12132"><tspan fill="rgb(0,0,0)" stroke="none">x86</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="370px" font-weight="400"><tspan class="TextPosition" x="1540" y="12576"><tspan fill="rgb(0,0,0)" stroke="none">Server</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id43">
+ <rect class="BoundingBox" stroke="none" fill="none" x="1872" y="625" width="6140" height="670"/>
+ <g>
+ <defs>
+ <linearGradient id="gradient1" x1="4941" y1="634" x2="4941" y2="1285" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:rgb(209,209,209)"/>
+ <stop offset="1" style="stop-color:rgb(199,199,199)"/>
+ </linearGradient>
+ </defs>
+ <path style="fill:url(#gradient1)" d="M 4942,1285 L 1881,1285 1881,634 8002,634 8002,1285 4942,1285 Z"/>
+ </g>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 4942,1285 L 1881,1285 1881,634 8002,634 8002,1285 4942,1285 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="2131" y="1075"><tspan fill="rgb(0,0,0)" stroke="none">2-Node AMD EPYC zen2 (2n-zn2)</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id44">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3061" y="12763" width="4221" height="759"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="3313" y="13311"><tspan fill="rgb(32,56,100)" stroke="none">Traffic Generator (TG)</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id45">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6426" y="11910" width="1147" height="590"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="6676" y="12317"><tspan fill="rgb(66,131,139)" stroke="none">DDR4</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id46">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5766" y="11960" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6059,12030 L 6059,12030 6059,12034 6059,12037 6058,12041 6057,12044 6057,12048 6056,12051 6054,12055 6053,12058 6051,12061 6050,12065 6048,12068 6046,12071 6044,12073 6041,12076 6039,12079 6036,12081 6033,12084 6031,12086 6028,12088 6024,12090 6021,12091 6018,12093 6015,12094 6011,12096 6008,12097 6004,12097 6001,12098 5997,12099 5994,12099 5990,12099 5836,12099 5836,12099 5832,12099 5829,12099 5825,12098 5822,12097 5818,12097 5815,12096 5811,12094 5808,12093 5805,12091 5801,12090 5798,12088 5795,12086 5793,12084 5790,12081 5787,12079 5785,12076 5782,12073 5780,12071 5778,12068 5776,12064 5775,12061 5773,12058 5772,12055 5770,12051 5769,12048 5769,12044 5768,12041 5767,12037 5767,12034 5767,12030 5766,12030 5767,12030 5767,12026 5767,12023 5768,12019 5768,12016 5769,12012 5770,12009 5771,12005 5773,12002 5774,11999 5776,11996 5778,11993 5780,11990 5782,11987 5784,11984 5787,11982 5789,11979 5792,11977 5795,11975 5798,11972 5801,11971 5804,11969 5807,11967 5811,11966 5814,11965 5817,11964 5821,11963 5824,11962 5828,11961 5831,11961 5835,11961 5990,11960 5990,11961 5994,11961 5997,11961 6001,11962 6004,11962 6008,11963 6011,11964 6015,11965 6018,11967 6021,11968 6024,11970 6027,11972 6030,11974 6033,11976 6036,11978 6038,11981 6041,11983 6043,11986 6045,11989 6048,11992 6049,11995 6051,11998 6053,12001 6054,12005 6055,12008 6056,12011 6057,12015 6058,12018 6059,12022 6059,12025 6059,12029 6059,12030 Z M 6059,12099 L 6059,12099 Z M 5766,11960 L 5766,11960 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id47">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5766" y="12160" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6059,12230 L 6059,12230 6059,12234 6059,12237 6058,12241 6057,12244 6057,12248 6056,12251 6054,12255 6053,12258 6051,12261 6050,12265 6048,12268 6046,12271 6044,12273 6041,12276 6039,12279 6036,12281 6033,12284 6031,12286 6028,12288 6024,12290 6021,12291 6018,12293 6015,12294 6011,12296 6008,12297 6004,12297 6001,12298 5997,12299 5994,12299 5990,12299 5836,12299 5836,12299 5832,12299 5829,12299 5825,12298 5822,12297 5818,12297 5815,12296 5811,12294 5808,12293 5805,12291 5801,12290 5798,12288 5795,12286 5793,12284 5790,12281 5787,12279 5785,12276 5782,12273 5780,12271 5778,12268 5776,12264 5775,12261 5773,12258 5772,12255 5770,12251 5769,12248 5769,12244 5768,12241 5767,12237 5767,12234 5767,12230 5766,12230 5767,12230 5767,12226 5767,12223 5768,12219 5768,12216 5769,12212 5770,12209 5771,12205 5773,12202 5774,12199 5776,12196 5778,12193 5780,12190 5782,12187 5784,12184 5787,12182 5789,12179 5792,12177 5795,12175 5798,12172 5801,12171 5804,12169 5807,12167 5811,12166 5814,12165 5817,12164 5821,12163 5824,12162 5828,12161 5831,12161 5835,12161 5990,12160 5990,12161 5994,12161 5997,12161 6001,12162 6004,12162 6008,12163 6011,12164 6015,12165 6018,12167 6021,12168 6024,12170 6027,12172 6030,12174 6033,12176 6036,12178 6038,12181 6041,12183 6043,12186 6045,12189 6048,12192 6049,12195 6051,12198 6053,12201 6054,12205 6055,12208 6056,12211 6057,12215 6058,12218 6059,12222 6059,12225 6059,12229 6059,12230 Z M 6059,12299 L 6059,12299 Z M 5766,12160 L 5766,12160 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id48">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5766" y="12359" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6059,12429 L 6059,12429 6059,12433 6059,12436 6058,12440 6057,12443 6057,12447 6056,12450 6054,12454 6053,12457 6051,12460 6050,12464 6048,12467 6046,12470 6044,12472 6041,12475 6039,12478 6036,12480 6033,12483 6031,12485 6028,12487 6024,12489 6021,12490 6018,12492 6015,12493 6011,12495 6008,12496 6004,12496 6001,12497 5997,12498 5994,12498 5990,12498 5836,12498 5836,12498 5832,12498 5829,12498 5825,12497 5822,12496 5818,12496 5815,12495 5811,12493 5808,12492 5805,12490 5801,12489 5798,12487 5795,12485 5793,12483 5790,12480 5787,12478 5785,12475 5782,12472 5780,12470 5778,12467 5776,12463 5775,12460 5773,12457 5772,12454 5770,12450 5769,12447 5769,12443 5768,12440 5767,12436 5767,12433 5767,12429 5766,12429 5767,12429 5767,12425 5767,12422 5768,12418 5768,12415 5769,12411 5770,12408 5771,12404 5773,12401 5774,12398 5776,12395 5778,12392 5780,12389 5782,12386 5784,12383 5787,12381 5789,12378 5792,12376 5795,12374 5798,12371 5801,12370 5804,12368 5807,12366 5811,12365 5814,12364 5817,12363 5821,12362 5824,12361 5828,12360 5831,12360 5835,12360 5990,12359 5990,12360 5994,12360 5997,12360 6001,12361 6004,12361 6008,12362 6011,12363 6015,12364 6018,12366 6021,12367 6024,12369 6027,12371 6030,12373 6033,12375 6036,12377 6038,12380 6041,12382 6043,12385 6045,12388 6048,12391 6049,12394 6051,12397 6053,12400 6054,12404 6055,12407 6056,12410 6057,12414 6058,12417 6059,12421 6059,12424 6059,12428 6059,12429 Z M 6059,12498 L 6059,12498 Z M 5766,12359 L 5766,12359 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id49">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5417" y="11960" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5710,12030 L 5710,12030 5710,12034 5710,12037 5709,12041 5708,12044 5708,12048 5707,12051 5705,12055 5704,12058 5702,12061 5701,12065 5699,12068 5697,12071 5695,12073 5692,12076 5690,12079 5687,12081 5684,12084 5682,12086 5679,12088 5675,12090 5672,12091 5669,12093 5666,12094 5662,12096 5659,12097 5655,12097 5652,12098 5648,12099 5645,12099 5641,12099 5487,12099 5487,12099 5483,12099 5480,12099 5476,12098 5473,12097 5469,12097 5466,12096 5462,12094 5459,12093 5456,12091 5452,12090 5449,12088 5446,12086 5444,12084 5441,12081 5438,12079 5436,12076 5433,12073 5431,12071 5429,12068 5427,12064 5426,12061 5424,12058 5423,12055 5421,12051 5420,12048 5420,12044 5419,12041 5418,12037 5418,12034 5418,12030 5417,12030 5418,12030 5418,12026 5418,12023 5419,12019 5419,12016 5420,12012 5421,12009 5422,12005 5424,12002 5425,11999 5427,11996 5429,11993 5431,11990 5433,11987 5435,11984 5438,11982 5440,11979 5443,11977 5446,11975 5449,11972 5452,11971 5455,11969 5458,11967 5462,11966 5465,11965 5468,11964 5472,11963 5475,11962 5479,11961 5482,11961 5486,11961 5641,11960 5641,11961 5645,11961 5648,11961 5652,11962 5655,11962 5659,11963 5662,11964 5666,11965 5669,11967 5672,11968 5675,11970 5678,11972 5681,11974 5684,11976 5687,11978 5689,11981 5692,11983 5694,11986 5696,11989 5699,11992 5700,11995 5702,11998 5704,12001 5705,12005 5706,12008 5707,12011 5708,12015 5709,12018 5710,12022 5710,12025 5710,12029 5710,12030 Z M 5710,12099 L 5710,12099 Z M 5417,11960 L 5417,11960 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id50">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5417" y="12160" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5710,12230 L 5710,12230 5710,12234 5710,12237 5709,12241 5708,12244 5708,12248 5707,12251 5705,12255 5704,12258 5702,12261 5701,12265 5699,12268 5697,12271 5695,12273 5692,12276 5690,12279 5687,12281 5684,12284 5682,12286 5679,12288 5675,12290 5672,12291 5669,12293 5666,12294 5662,12296 5659,12297 5655,12297 5652,12298 5648,12299 5645,12299 5641,12299 5487,12299 5487,12299 5483,12299 5480,12299 5476,12298 5473,12297 5469,12297 5466,12296 5462,12294 5459,12293 5456,12291 5452,12290 5449,12288 5446,12286 5444,12284 5441,12281 5438,12279 5436,12276 5433,12273 5431,12271 5429,12268 5427,12264 5426,12261 5424,12258 5423,12255 5421,12251 5420,12248 5420,12244 5419,12241 5418,12237 5418,12234 5418,12230 5417,12230 5418,12230 5418,12226 5418,12223 5419,12219 5419,12216 5420,12212 5421,12209 5422,12205 5424,12202 5425,12199 5427,12196 5429,12193 5431,12190 5433,12187 5435,12184 5438,12182 5440,12179 5443,12177 5446,12175 5449,12172 5452,12171 5455,12169 5458,12167 5462,12166 5465,12165 5468,12164 5472,12163 5475,12162 5479,12161 5482,12161 5486,12161 5641,12160 5641,12161 5645,12161 5648,12161 5652,12162 5655,12162 5659,12163 5662,12164 5666,12165 5669,12167 5672,12168 5675,12170 5678,12172 5681,12174 5684,12176 5687,12178 5689,12181 5692,12183 5694,12186 5696,12189 5699,12192 5700,12195 5702,12198 5704,12201 5705,12205 5706,12208 5707,12211 5708,12215 5709,12218 5710,12222 5710,12225 5710,12229 5710,12230 Z M 5710,12299 L 5710,12299 Z M 5417,12160 L 5417,12160 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id51">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5416" y="12359" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5710,12429 L 5710,12429 5710,12433 5710,12436 5709,12440 5708,12443 5708,12447 5707,12450 5705,12454 5704,12457 5702,12460 5701,12464 5699,12467 5697,12470 5695,12472 5692,12475 5690,12478 5687,12480 5684,12483 5682,12485 5679,12487 5675,12489 5672,12490 5669,12492 5666,12493 5662,12495 5659,12496 5655,12496 5652,12497 5648,12498 5645,12498 5641,12498 5487,12498 5487,12498 5483,12498 5480,12498 5476,12497 5473,12496 5469,12496 5466,12495 5462,12493 5459,12492 5456,12490 5452,12489 5449,12487 5446,12485 5444,12483 5441,12480 5438,12478 5436,12475 5433,12472 5431,12470 5429,12467 5427,12463 5426,12460 5424,12457 5423,12454 5421,12450 5420,12447 5420,12443 5419,12440 5418,12436 5418,12433 5418,12429 5417,12429 5418,12429 5418,12425 5418,12422 5419,12418 5419,12415 5420,12411 5421,12408 5422,12404 5424,12401 5425,12398 5427,12395 5429,12392 5431,12389 5433,12386 5435,12383 5438,12381 5440,12378 5443,12376 5446,12374 5449,12371 5452,12370 5455,12368 5458,12366 5462,12365 5465,12364 5468,12363 5472,12362 5475,12361 5479,12360 5482,12360 5486,12360 5641,12359 5641,12360 5645,12360 5648,12360 5652,12361 5655,12361 5659,12362 5662,12363 5666,12364 5669,12366 5672,12367 5675,12369 5678,12371 5681,12373 5684,12375 5687,12377 5689,12380 5692,12382 5694,12385 5696,12388 5699,12391 5700,12394 5702,12397 5704,12400 5705,12404 5706,12407 5707,12410 5708,12414 5709,12417 5710,12421 5710,12424 5710,12428 5710,12429 Z M 5710,12498 L 5710,12498 Z M 5417,12359 L 5417,12359 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id52">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6095" y="11963" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6389,12033 L 6389,12033 6389,12037 6389,12040 6388,12044 6387,12047 6387,12051 6386,12054 6384,12058 6383,12061 6381,12064 6380,12068 6378,12071 6376,12074 6374,12076 6371,12079 6369,12082 6366,12084 6363,12087 6361,12089 6358,12091 6354,12093 6351,12094 6348,12096 6345,12097 6341,12099 6338,12100 6334,12100 6331,12101 6327,12102 6324,12102 6320,12102 6166,12102 6166,12102 6162,12102 6159,12102 6155,12101 6152,12100 6148,12100 6145,12099 6141,12097 6138,12096 6135,12094 6131,12093 6128,12091 6125,12089 6123,12087 6120,12084 6117,12082 6115,12079 6112,12076 6110,12074 6108,12071 6106,12067 6105,12064 6103,12061 6102,12058 6100,12054 6099,12051 6099,12047 6098,12044 6097,12040 6097,12037 6097,12033 6096,12033 6097,12033 6097,12029 6097,12026 6098,12022 6098,12019 6099,12015 6100,12012 6101,12008 6103,12005 6104,12002 6106,11999 6108,11996 6110,11993 6112,11990 6114,11987 6117,11985 6119,11982 6122,11980 6125,11978 6128,11975 6131,11974 6134,11972 6137,11970 6141,11969 6144,11968 6147,11967 6151,11966 6154,11965 6158,11964 6161,11964 6165,11964 6320,11963 6320,11964 6324,11964 6327,11964 6331,11965 6334,11965 6338,11966 6341,11967 6345,11968 6348,11970 6351,11971 6354,11973 6357,11975 6360,11977 6363,11979 6366,11981 6368,11984 6371,11986 6373,11989 6375,11992 6378,11995 6379,11998 6381,12001 6383,12004 6384,12008 6385,12011 6386,12014 6387,12018 6388,12021 6389,12025 6389,12028 6389,12032 6389,12033 Z M 6389,12102 L 6389,12102 Z M 6096,11963 L 6096,11963 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id53">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6096" y="12163" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6389,12233 L 6389,12233 6389,12237 6389,12240 6388,12244 6387,12247 6387,12251 6386,12254 6384,12258 6383,12261 6381,12264 6380,12268 6378,12271 6376,12274 6374,12276 6371,12279 6369,12282 6366,12284 6363,12287 6361,12289 6358,12291 6354,12293 6351,12294 6348,12296 6345,12297 6341,12299 6338,12300 6334,12300 6331,12301 6327,12302 6324,12302 6320,12302 6166,12302 6166,12302 6162,12302 6159,12302 6155,12301 6152,12300 6148,12300 6145,12299 6141,12297 6138,12296 6135,12294 6131,12293 6128,12291 6125,12289 6123,12287 6120,12284 6117,12282 6115,12279 6112,12276 6110,12274 6108,12271 6106,12267 6105,12264 6103,12261 6102,12258 6100,12254 6099,12251 6099,12247 6098,12244 6097,12240 6097,12237 6097,12233 6096,12233 6097,12233 6097,12229 6097,12226 6098,12222 6098,12219 6099,12215 6100,12212 6101,12208 6103,12205 6104,12202 6106,12199 6108,12196 6110,12193 6112,12190 6114,12187 6117,12185 6119,12182 6122,12180 6125,12178 6128,12175 6131,12174 6134,12172 6137,12170 6141,12169 6144,12168 6147,12167 6151,12166 6154,12165 6158,12164 6161,12164 6165,12164 6320,12163 6320,12164 6324,12164 6327,12164 6331,12165 6334,12165 6338,12166 6341,12167 6345,12168 6348,12170 6351,12171 6354,12173 6357,12175 6360,12177 6363,12179 6366,12181 6368,12184 6371,12186 6373,12189 6375,12192 6378,12195 6379,12198 6381,12201 6383,12204 6384,12208 6385,12211 6386,12214 6387,12218 6388,12221 6389,12225 6389,12228 6389,12232 6389,12233 Z M 6389,12302 L 6389,12302 Z M 6096,12163 L 6096,12163 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id54">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6096" y="12362" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6389,12432 L 6389,12432 6389,12436 6389,12439 6388,12443 6387,12446 6387,12450 6386,12453 6384,12457 6383,12460 6381,12463 6380,12467 6378,12470 6376,12473 6374,12475 6371,12478 6369,12481 6366,12483 6363,12486 6361,12488 6358,12490 6354,12492 6351,12493 6348,12495 6345,12496 6341,12498 6338,12499 6334,12499 6331,12500 6327,12501 6324,12501 6320,12501 6166,12501 6166,12501 6162,12501 6159,12501 6155,12500 6152,12499 6148,12499 6145,12498 6141,12496 6138,12495 6135,12493 6131,12492 6128,12490 6125,12488 6123,12486 6120,12483 6117,12481 6115,12478 6112,12475 6110,12473 6108,12470 6106,12466 6105,12463 6103,12460 6102,12457 6100,12453 6099,12450 6099,12446 6098,12443 6097,12439 6097,12436 6097,12432 6096,12432 6097,12432 6097,12428 6097,12425 6098,12421 6098,12418 6099,12414 6100,12411 6101,12407 6103,12404 6104,12401 6106,12398 6108,12395 6110,12392 6112,12389 6114,12386 6117,12384 6119,12381 6122,12379 6125,12377 6128,12374 6131,12373 6134,12371 6137,12369 6141,12368 6144,12367 6147,12366 6151,12365 6154,12364 6158,12363 6161,12363 6165,12363 6320,12362 6320,12363 6324,12363 6327,12363 6331,12364 6334,12364 6338,12365 6341,12366 6345,12367 6348,12369 6351,12370 6354,12372 6357,12374 6360,12376 6363,12378 6366,12380 6368,12383 6371,12385 6373,12388 6375,12391 6378,12394 6379,12397 6381,12400 6383,12403 6384,12407 6385,12410 6386,12413 6387,12417 6388,12420 6389,12424 6389,12427 6389,12431 6389,12432 Z M 6389,12501 L 6389,12501 Z M 6096,12362 L 6096,12362 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id55">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4746" y="11960" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5039,12030 L 5039,12030 5039,12034 5039,12037 5038,12041 5037,12044 5037,12048 5036,12051 5034,12055 5033,12058 5031,12061 5030,12065 5028,12068 5026,12071 5024,12073 5021,12076 5019,12079 5016,12081 5013,12084 5011,12086 5008,12088 5004,12090 5001,12091 4998,12093 4995,12094 4991,12096 4988,12097 4984,12097 4981,12098 4977,12099 4974,12099 4970,12099 4816,12099 4816,12099 4812,12099 4809,12099 4805,12098 4802,12097 4798,12097 4795,12096 4791,12094 4788,12093 4785,12091 4781,12090 4778,12088 4775,12086 4773,12084 4770,12081 4767,12079 4765,12076 4762,12073 4760,12071 4758,12068 4756,12064 4755,12061 4753,12058 4752,12055 4750,12051 4749,12048 4749,12044 4748,12041 4747,12037 4747,12034 4747,12030 4746,12030 4747,12030 4747,12026 4747,12023 4748,12019 4748,12016 4749,12012 4750,12009 4751,12005 4753,12002 4754,11999 4756,11996 4758,11993 4760,11990 4762,11987 4764,11984 4767,11982 4769,11979 4772,11977 4775,11975 4778,11972 4781,11971 4784,11969 4787,11967 4791,11966 4794,11965 4797,11964 4801,11963 4804,11962 4808,11961 4811,11961 4815,11961 4970,11960 4970,11961 4974,11961 4977,11961 4981,11962 4984,11962 4988,11963 4991,11964 4995,11965 4998,11967 5001,11968 5004,11970 5007,11972 5010,11974 5013,11976 5016,11978 5018,11981 5021,11983 5023,11986 5025,11989 5028,11992 5029,11995 5031,11998 5033,12001 5034,12005 5035,12008 5036,12011 5037,12015 5038,12018 5039,12022 5039,12025 5039,12029 5039,12030 Z M 5039,12099 L 5039,12099 Z M 4746,11960 L 4746,11960 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id56">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4746" y="12160" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5039,12230 L 5039,12230 5039,12234 5039,12237 5038,12241 5037,12244 5037,12248 5036,12251 5034,12255 5033,12258 5031,12261 5030,12265 5028,12268 5026,12271 5024,12273 5021,12276 5019,12279 5016,12281 5013,12284 5011,12286 5008,12288 5004,12290 5001,12291 4998,12293 4995,12294 4991,12296 4988,12297 4984,12297 4981,12298 4977,12299 4974,12299 4970,12299 4816,12299 4816,12299 4812,12299 4809,12299 4805,12298 4802,12297 4798,12297 4795,12296 4791,12294 4788,12293 4785,12291 4781,12290 4778,12288 4775,12286 4773,12284 4770,12281 4767,12279 4765,12276 4762,12273 4760,12271 4758,12268 4756,12264 4755,12261 4753,12258 4752,12255 4750,12251 4749,12248 4749,12244 4748,12241 4747,12237 4747,12234 4747,12230 4746,12230 4747,12230 4747,12226 4747,12223 4748,12219 4748,12216 4749,12212 4750,12209 4751,12205 4753,12202 4754,12199 4756,12196 4758,12193 4760,12190 4762,12187 4764,12184 4767,12182 4769,12179 4772,12177 4775,12175 4778,12172 4781,12171 4784,12169 4787,12167 4791,12166 4794,12165 4797,12164 4801,12163 4804,12162 4808,12161 4811,12161 4815,12161 4970,12160 4970,12161 4974,12161 4977,12161 4981,12162 4984,12162 4988,12163 4991,12164 4995,12165 4998,12167 5001,12168 5004,12170 5007,12172 5010,12174 5013,12176 5016,12178 5018,12181 5021,12183 5023,12186 5025,12189 5028,12192 5029,12195 5031,12198 5033,12201 5034,12205 5035,12208 5036,12211 5037,12215 5038,12218 5039,12222 5039,12225 5039,12229 5039,12230 Z M 5039,12299 L 5039,12299 Z M 4746,12160 L 4746,12160 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id57">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4745" y="12360" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5039,12430 L 5039,12430 5039,12434 5039,12437 5038,12441 5037,12444 5037,12448 5036,12451 5034,12455 5033,12458 5031,12461 5030,12465 5028,12468 5026,12471 5024,12473 5021,12476 5019,12479 5016,12481 5013,12484 5011,12486 5008,12488 5004,12490 5001,12491 4998,12493 4995,12494 4991,12496 4988,12497 4984,12497 4981,12498 4977,12499 4974,12499 4970,12499 4816,12499 4816,12499 4812,12499 4809,12499 4805,12498 4802,12497 4798,12497 4795,12496 4791,12494 4788,12493 4785,12491 4781,12490 4778,12488 4775,12486 4773,12484 4770,12481 4767,12479 4765,12476 4762,12473 4760,12471 4758,12468 4756,12464 4755,12461 4753,12458 4752,12455 4750,12451 4749,12448 4749,12444 4748,12441 4747,12437 4747,12434 4747,12430 4746,12430 4747,12430 4747,12426 4747,12423 4748,12419 4748,12416 4749,12412 4750,12409 4751,12405 4753,12402 4754,12399 4756,12396 4758,12393 4760,12390 4762,12387 4764,12384 4767,12382 4769,12379 4772,12377 4775,12375 4778,12372 4781,12371 4784,12369 4787,12367 4791,12366 4794,12365 4797,12364 4801,12363 4804,12362 4808,12361 4811,12361 4815,12361 4970,12360 4970,12361 4974,12361 4977,12361 4981,12362 4984,12362 4988,12363 4991,12364 4995,12365 4998,12367 5001,12368 5004,12370 5007,12372 5010,12374 5013,12376 5016,12378 5018,12381 5021,12383 5023,12386 5025,12389 5028,12392 5029,12395 5031,12398 5033,12401 5034,12405 5035,12408 5036,12411 5037,12415 5038,12418 5039,12422 5039,12425 5039,12429 5039,12430 Z M 5039,12499 L 5039,12499 Z M 4746,12360 L 4746,12360 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id58">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4397" y="11960" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4690,12030 L 4690,12030 4690,12034 4690,12037 4689,12041 4688,12044 4688,12048 4687,12051 4685,12055 4684,12058 4682,12061 4681,12065 4679,12068 4677,12071 4675,12073 4672,12076 4670,12079 4667,12081 4664,12084 4662,12086 4659,12088 4655,12090 4652,12091 4649,12093 4646,12094 4642,12096 4639,12097 4635,12097 4632,12098 4628,12099 4625,12099 4621,12099 4467,12099 4467,12099 4463,12099 4460,12099 4456,12098 4453,12097 4449,12097 4446,12096 4442,12094 4439,12093 4436,12091 4432,12090 4429,12088 4426,12086 4424,12084 4421,12081 4418,12079 4416,12076 4413,12073 4411,12071 4409,12068 4407,12064 4406,12061 4404,12058 4403,12055 4401,12051 4400,12048 4400,12044 4399,12041 4398,12037 4398,12034 4398,12030 4397,12030 4398,12030 4398,12026 4398,12023 4399,12019 4399,12016 4400,12012 4401,12009 4402,12005 4404,12002 4405,11999 4407,11996 4409,11993 4411,11990 4413,11987 4415,11984 4418,11982 4420,11979 4423,11977 4426,11975 4429,11972 4432,11971 4435,11969 4438,11967 4442,11966 4445,11965 4448,11964 4452,11963 4455,11962 4459,11961 4462,11961 4466,11961 4621,11960 4621,11961 4625,11961 4628,11961 4632,11962 4635,11962 4639,11963 4642,11964 4646,11965 4649,11967 4652,11968 4655,11970 4658,11972 4661,11974 4664,11976 4667,11978 4669,11981 4672,11983 4674,11986 4676,11989 4679,11992 4680,11995 4682,11998 4684,12001 4685,12005 4686,12008 4687,12011 4688,12015 4689,12018 4690,12022 4690,12025 4690,12029 4690,12030 Z M 4690,12099 L 4690,12099 Z M 4397,11960 L 4397,11960 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id59">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4397" y="12160" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4690,12230 L 4690,12230 4690,12234 4690,12237 4689,12241 4688,12244 4688,12248 4687,12251 4685,12255 4684,12258 4682,12261 4681,12265 4679,12268 4677,12271 4675,12273 4672,12276 4670,12279 4667,12281 4664,12284 4662,12286 4659,12288 4655,12290 4652,12291 4649,12293 4646,12294 4642,12296 4639,12297 4635,12297 4632,12298 4628,12299 4625,12299 4621,12299 4467,12299 4467,12299 4463,12299 4460,12299 4456,12298 4453,12297 4449,12297 4446,12296 4442,12294 4439,12293 4436,12291 4432,12290 4429,12288 4426,12286 4424,12284 4421,12281 4418,12279 4416,12276 4413,12273 4411,12271 4409,12268 4407,12264 4406,12261 4404,12258 4403,12255 4401,12251 4400,12248 4400,12244 4399,12241 4398,12237 4398,12234 4398,12230 4397,12230 4398,12230 4398,12226 4398,12223 4399,12219 4399,12216 4400,12212 4401,12209 4402,12205 4404,12202 4405,12199 4407,12196 4409,12193 4411,12190 4413,12187 4415,12184 4418,12182 4420,12179 4423,12177 4426,12175 4429,12172 4432,12171 4435,12169 4438,12167 4442,12166 4445,12165 4448,12164 4452,12163 4455,12162 4459,12161 4462,12161 4466,12161 4621,12160 4621,12161 4625,12161 4628,12161 4632,12162 4635,12162 4639,12163 4642,12164 4646,12165 4649,12167 4652,12168 4655,12170 4658,12172 4661,12174 4664,12176 4667,12178 4669,12181 4672,12183 4674,12186 4676,12189 4679,12192 4680,12195 4682,12198 4684,12201 4685,12205 4686,12208 4687,12211 4688,12215 4689,12218 4690,12222 4690,12225 4690,12229 4690,12230 Z M 4690,12299 L 4690,12299 Z M 4397,12160 L 4397,12160 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id60">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4396" y="12360" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4690,12430 L 4690,12430 4690,12434 4690,12437 4689,12441 4688,12444 4688,12448 4687,12451 4685,12455 4684,12458 4682,12461 4681,12465 4679,12468 4677,12471 4675,12473 4672,12476 4670,12479 4667,12481 4664,12484 4662,12486 4659,12488 4655,12490 4652,12491 4649,12493 4646,12494 4642,12496 4639,12497 4635,12497 4632,12498 4628,12499 4625,12499 4621,12499 4467,12499 4467,12499 4463,12499 4460,12499 4456,12498 4453,12497 4449,12497 4446,12496 4442,12494 4439,12493 4436,12491 4432,12490 4429,12488 4426,12486 4424,12484 4421,12481 4418,12479 4416,12476 4413,12473 4411,12471 4409,12468 4407,12464 4406,12461 4404,12458 4403,12455 4401,12451 4400,12448 4400,12444 4399,12441 4398,12437 4398,12434 4398,12430 4397,12430 4398,12430 4398,12426 4398,12423 4399,12419 4399,12416 4400,12412 4401,12409 4402,12405 4404,12402 4405,12399 4407,12396 4409,12393 4411,12390 4413,12387 4415,12384 4418,12382 4420,12379 4423,12377 4426,12375 4429,12372 4432,12371 4435,12369 4438,12367 4442,12366 4445,12365 4448,12364 4452,12363 4455,12362 4459,12361 4462,12361 4466,12361 4621,12360 4621,12361 4625,12361 4628,12361 4632,12362 4635,12362 4639,12363 4642,12364 4646,12365 4649,12367 4652,12368 4655,12370 4658,12372 4661,12374 4664,12376 4667,12378 4669,12381 4672,12383 4674,12386 4676,12389 4679,12392 4680,12395 4682,12398 4684,12401 4685,12405 4686,12408 4687,12411 4688,12415 4689,12418 4690,12422 4690,12425 4690,12429 4690,12430 Z M 4690,12499 L 4690,12499 Z M 4397,12360 L 4397,12360 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id61">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5077" y="11963" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5370,12033 L 5370,12033 5370,12037 5370,12040 5369,12044 5368,12047 5368,12051 5367,12054 5365,12058 5364,12061 5362,12064 5361,12068 5359,12071 5357,12074 5355,12076 5352,12079 5350,12082 5347,12084 5344,12087 5342,12089 5339,12091 5335,12093 5332,12094 5329,12096 5326,12097 5322,12099 5319,12100 5315,12100 5312,12101 5308,12102 5305,12102 5301,12102 5147,12102 5147,12102 5143,12102 5140,12102 5136,12101 5133,12100 5129,12100 5126,12099 5122,12097 5119,12096 5116,12094 5112,12093 5109,12091 5106,12089 5104,12087 5101,12084 5098,12082 5096,12079 5093,12076 5091,12074 5089,12071 5087,12067 5086,12064 5084,12061 5083,12058 5081,12054 5080,12051 5080,12047 5079,12044 5078,12040 5078,12037 5078,12033 5077,12033 5078,12033 5078,12029 5078,12026 5079,12022 5079,12019 5080,12015 5081,12012 5082,12008 5084,12005 5085,12002 5087,11999 5089,11996 5091,11993 5093,11990 5095,11987 5098,11985 5100,11982 5103,11980 5106,11978 5109,11975 5112,11974 5115,11972 5118,11970 5122,11969 5125,11968 5128,11967 5132,11966 5135,11965 5139,11964 5142,11964 5146,11964 5301,11963 5301,11964 5305,11964 5308,11964 5312,11965 5315,11965 5319,11966 5322,11967 5326,11968 5329,11970 5332,11971 5335,11973 5338,11975 5341,11977 5344,11979 5347,11981 5349,11984 5352,11986 5354,11989 5356,11992 5359,11995 5360,11998 5362,12001 5364,12004 5365,12008 5366,12011 5367,12014 5368,12018 5369,12021 5370,12025 5370,12028 5370,12032 5370,12033 Z M 5370,12102 L 5370,12102 Z M 5077,11963 L 5077,11963 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id62">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5077" y="12163" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5370,12233 L 5370,12233 5370,12237 5370,12240 5369,12244 5368,12247 5368,12251 5367,12254 5365,12258 5364,12261 5362,12264 5361,12268 5359,12271 5357,12274 5355,12276 5352,12279 5350,12282 5347,12284 5344,12287 5342,12289 5339,12291 5335,12293 5332,12294 5329,12296 5326,12297 5322,12299 5319,12300 5315,12300 5312,12301 5308,12302 5305,12302 5301,12302 5147,12302 5147,12302 5143,12302 5140,12302 5136,12301 5133,12300 5129,12300 5126,12299 5122,12297 5119,12296 5116,12294 5112,12293 5109,12291 5106,12289 5104,12287 5101,12284 5098,12282 5096,12279 5093,12276 5091,12274 5089,12271 5087,12267 5086,12264 5084,12261 5083,12258 5081,12254 5080,12251 5080,12247 5079,12244 5078,12240 5078,12237 5078,12233 5077,12233 5078,12233 5078,12229 5078,12226 5079,12222 5079,12219 5080,12215 5081,12212 5082,12208 5084,12205 5085,12202 5087,12199 5089,12196 5091,12193 5093,12190 5095,12187 5098,12185 5100,12182 5103,12180 5106,12178 5109,12175 5112,12174 5115,12172 5118,12170 5122,12169 5125,12168 5128,12167 5132,12166 5135,12165 5139,12164 5142,12164 5146,12164 5301,12163 5301,12164 5305,12164 5308,12164 5312,12165 5315,12165 5319,12166 5322,12167 5326,12168 5329,12170 5332,12171 5335,12173 5338,12175 5341,12177 5344,12179 5347,12181 5349,12184 5352,12186 5354,12189 5356,12192 5359,12195 5360,12198 5362,12201 5364,12204 5365,12208 5366,12211 5367,12214 5368,12218 5369,12221 5370,12225 5370,12228 5370,12232 5370,12233 Z M 5370,12302 L 5370,12302 Z M 5077,12163 L 5077,12163 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id63">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5076" y="12363" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5370,12433 L 5370,12433 5370,12437 5370,12440 5369,12444 5368,12447 5368,12451 5367,12454 5365,12458 5364,12461 5362,12464 5361,12468 5359,12471 5357,12474 5355,12476 5352,12479 5350,12482 5347,12484 5344,12487 5342,12489 5339,12491 5335,12493 5332,12494 5329,12496 5326,12497 5322,12499 5319,12500 5315,12500 5312,12501 5308,12502 5305,12502 5301,12502 5147,12502 5147,12502 5143,12502 5140,12502 5136,12501 5133,12500 5129,12500 5126,12499 5122,12497 5119,12496 5116,12494 5112,12493 5109,12491 5106,12489 5104,12487 5101,12484 5098,12482 5096,12479 5093,12476 5091,12474 5089,12471 5087,12467 5086,12464 5084,12461 5083,12458 5081,12454 5080,12451 5080,12447 5079,12444 5078,12440 5078,12437 5078,12433 5077,12433 5078,12433 5078,12429 5078,12426 5079,12422 5079,12419 5080,12415 5081,12412 5082,12408 5084,12405 5085,12402 5087,12399 5089,12396 5091,12393 5093,12390 5095,12387 5098,12385 5100,12382 5103,12380 5106,12378 5109,12375 5112,12374 5115,12372 5118,12370 5122,12369 5125,12368 5128,12367 5132,12366 5135,12365 5139,12364 5142,12364 5146,12364 5301,12363 5301,12364 5305,12364 5308,12364 5312,12365 5315,12365 5319,12366 5322,12367 5326,12368 5329,12370 5332,12371 5335,12373 5338,12375 5341,12377 5344,12379 5347,12381 5349,12384 5352,12386 5354,12389 5356,12392 5359,12395 5360,12398 5362,12401 5364,12404 5365,12408 5366,12411 5367,12414 5368,12418 5369,12421 5370,12425 5370,12428 5370,12432 5370,12433 Z M 5370,12502 L 5370,12502 Z M 5077,12363 L 5077,12363 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.TextShape">
+ <g id="id64">
+ <rect class="BoundingBox" stroke="none" fill="none" x="2916" y="9669" width="1625" height="1285"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3166" y="10065"><tspan fill="rgb(0,0,0)" stroke="none">PCIe</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3166" y="10412"><tspan fill="rgb(0,0,0)" stroke="none">Gen3</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id65">
+ <rect class="BoundingBox" stroke="none" fill="none" x="1236" y="2187" width="7241" height="3215"/>
+ <path fill="rgb(255,255,255)" stroke="none" d="M 4856,5383 L 1254,5383 1254,2205 8458,2205 8458,5383 4856,5383 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4856,5383 L 1254,5383 1254,2205 8458,2205 8458,5383 4856,5383 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="370px" font-weight="400"><tspan class="TextPosition" x="1354" y="2575"><tspan fill="rgb(0,0,0)" stroke="none">x86</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="370px" font-weight="400"><tspan class="TextPosition" x="1354" y="3019"><tspan fill="rgb(0,0,0)" stroke="none">Server</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id66">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3646" y="5287" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 4099,5730 L 3655,5730 3655,5296 4542,5296 4542,5730 4099,5730 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 4099,5730 L 3655,5730 3655,5296 4542,5296 4542,5730 4099,5730 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3824" y="5594"><tspan fill="rgb(0,0,0)" stroke="none">NIC1</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id67">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3759" y="5773" width="42" height="737"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3777,5791 L 3782,6491"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3777,5791 L 3777,5791 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3782,6491 L 3782,6491 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id68">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3674" y="5682" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 3758,5790 L 3683,5790 3683,5691 3832,5691 3832,5790 3758,5790 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 3758,5790 L 3683,5790 3683,5691 3832,5691 3832,5790 3758,5790 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id69">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4318" y="5680" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4402,5788 L 4327,5788 4327,5689 4476,5689 4476,5788 4402,5788 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4402,5788 L 4327,5788 4327,5689 4476,5689 4476,5788 4402,5788 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id70">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4382" y="5771" width="39" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4402,5789 L 4400,6537"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4402,5789 L 4402,5789 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4400,6537 L 4400,6537 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id71">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3958" y="5775" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3978,5793 L 3976,6539"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3978,5793 L 3978,5793 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 3976,6539 L 3976,6539 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id72">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3894" y="5684" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 3978,5792 L 3903,5792 3903,5693 4052,5693 4052,5792 3978,5792 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 3978,5792 L 3903,5792 3903,5693 4052,5693 4052,5792 3978,5792 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id73">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4105" y="5682" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4189,5790 L 4114,5790 4114,5691 4263,5691 4263,5790 4189,5790 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4189,5790 L 4114,5790 4114,5691 4263,5691 4263,5790 4189,5790 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id74">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4189" y="5773" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4207,5791 L 4213,6539"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4207,5791 L 4207,5791 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4213,6539 L 4213,6539 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id75">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3638" y="3355" width="2837" height="1203"/>
+ <path fill="rgb(68,114,196)" stroke="none" d="M 5056,4539 L 3656,4539 3656,3373 6456,3373 6456,4539 5056,4539 Z"/>
+ <path fill="none" stroke="rgb(50,84,144)" stroke-width="35" stroke-linejoin="miter" d="M 5056,4539 L 3656,4539 3656,3373 6456,3373 6456,4539 5056,4539 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4517" y="3677"><tspan fill="rgb(255,255,255)" stroke="none">Socket 0</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4346" y="4030"><tspan fill="rgb(255,255,255)" stroke="none">AMD EPYC </tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="318px" font-weight="400"><tspan class="TextPosition" x="4386" y="4383"><tspan fill="rgb(255,255,255)" stroke="none">Zen2 7532</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id76">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4610" y="5285" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 5063,5728 L 4619,5728 4619,5294 5506,5294 5506,5728 5063,5728 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 5063,5728 L 4619,5728 4619,5294 5506,5294 5506,5728 5063,5728 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="4788" y="5592"><tspan fill="rgb(0,0,0)" stroke="none">NIC2</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id77">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4723" y="5771" width="42" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4741,5789 L 4746,6535"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4741,5789 L 4741,5789 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4746,6535 L 4746,6535 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id78">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4638" y="5680" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4722,5788 L 4647,5788 4647,5689 4796,5689 4796,5788 4722,5788 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4722,5788 L 4647,5788 4647,5689 4796,5689 4796,5788 4722,5788 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id79">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5282" y="5678" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5366,5786 L 5291,5786 5291,5687 5440,5687 5440,5786 5366,5786 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5366,5786 L 5291,5786 5291,5687 5440,5687 5440,5786 5366,5786 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id80">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5346" y="5769" width="39" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5366,5787 L 5364,6535"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5366,5787 L 5366,5787 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5364,6535 L 5364,6535 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id81">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4922" y="5773" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4942,5791 L 4940,6537"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4942,5791 L 4942,5791 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 4940,6537 L 4940,6537 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id82">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4859" y="5682" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 4943,5790 L 4868,5790 4868,5691 5017,5691 5017,5790 4943,5790 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 4943,5790 L 4868,5790 4868,5691 5017,5691 5017,5790 4943,5790 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id83">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5070" y="5680" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5154,5788 L 5079,5788 5079,5689 5228,5689 5228,5788 5154,5788 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5154,5788 L 5079,5788 5079,5689 5228,5689 5228,5788 5154,5788 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id84">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5154" y="5771" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5172,5789 L 5178,6537"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5172,5789 L 5172,5789 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5178,6537 L 5178,6537 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id85">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5559" y="5283" width="906" height="453"/>
+ <path fill="rgb(237,237,237)" stroke="none" d="M 6012,5726 L 5568,5726 5568,5292 6455,5292 6455,5726 6012,5726 Z"/>
+ <path fill="none" stroke="rgb(165,165,165)" stroke-width="18" stroke-linejoin="miter" d="M 6012,5726 L 5568,5726 5568,5292 6455,5292 6455,5726 6012,5726 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="5737" y="5590"><tspan fill="rgb(0,0,0)" stroke="none">NIC3</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id86">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5672" y="5769" width="42" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5690,5787 L 5695,6533"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5690,5787 L 5690,5787 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5695,6533 L 5695,6533 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id87">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5587" y="5678" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5671,5786 L 5596,5786 5596,5687 5745,5687 5745,5786 5671,5786 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5671,5786 L 5596,5786 5596,5687 5745,5687 5745,5786 5671,5786 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id88">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6231" y="5675" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 6315,5783 L 6240,5783 6240,5684 6389,5684 6389,5783 6315,5783 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 6315,5783 L 6240,5783 6240,5684 6389,5684 6389,5783 6315,5783 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id89">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6295" y="5766" width="39" height="737"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6315,5784 L 6313,6484"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6315,5784 L 6315,5784 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6313,6484 L 6313,6484 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id90">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5871" y="5770" width="39" height="783"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5891,5788 L 5889,6534"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5891,5788 L 5891,5788 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 5889,6534 L 5889,6534 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id91">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5808" y="5679" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 5892,5787 L 5817,5787 5817,5688 5966,5688 5966,5787 5892,5787 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 5892,5787 L 5817,5787 5817,5688 5966,5688 5966,5787 5892,5787 Z"/>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id92">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6019" y="5678" width="168" height="118"/>
+ <path fill="rgb(208,206,206)" stroke="none" d="M 6103,5786 L 6028,5786 6028,5687 6177,5687 6177,5786 6103,5786 Z"/>
+ <path fill="none" stroke="rgb(175,171,171)" stroke-width="18" stroke-linejoin="miter" d="M 6103,5786 L 6028,5786 6028,5687 6177,5687 6177,5786 6103,5786 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id93">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6103" y="5769" width="43" height="785"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6121,5787 L 6127,6535"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6121,5787 L 6121,5787 Z"/>
+ <path fill="none" stroke="rgb(0,0,0)" stroke-width="35" stroke-linejoin="miter" d="M 6127,6535 L 6127,6535 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id94">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3852" y="4558" width="556" height="734"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 4129,5291 L 3852,5130 3990,5130 3990,4720 3852,4720 4129,4558 4407,4720 4268,4720 4268,5130 4407,5130 4129,5291 Z M 3852,5291 L 3852,5291 Z M 4407,4558 L 4407,4558 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id95">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3890" y="4748" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 4128,5091 L 3890,5091 3890,4748 4365,4748 4365,5091 4128,5091 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3899" y="5033"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id96">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4829" y="4553" width="556" height="734"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 5106,5286 L 4829,5125 4967,5125 4967,4715 4829,4715 5106,4553 5384,4715 5245,4715 5245,5125 5384,5125 5106,5286 Z M 4829,5286 L 4829,5286 Z M 5384,4553 L 5384,4553 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id97">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4868" y="4743" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 5106,5086 L 4868,5086 4868,4743 5343,4743 5343,5086 5106,5086 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="4877" y="5028"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id98">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5782" y="4544" width="556" height="735"/>
+ <path fill="rgb(132,151,176)" stroke="none" d="M 6059,5277 L 5782,5116 5920,5116 5920,4706 5782,4706 6059,4544 6337,4706 6198,4706 6198,5116 6337,5116 6059,5277 Z M 5782,5277 L 5782,5277 Z M 6337,4544 L 6337,4544 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id99">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5820" y="4734" width="476" height="344"/>
+ <path fill="rgb(95,100,104)" stroke="none" d="M 6058,5077 L 5820,5077 5820,4734 6295,4734 6295,5077 6058,5077 Z"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Arial, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="5829" y="5019"><tspan fill="rgb(255,255,255)" stroke="none">x16</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id100">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6489" y="2556" width="1147" height="590"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="6739" y="2963"><tspan fill="rgb(66,131,139)" stroke="none">DDR4</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id101">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3724" y="6414" width="2666" height="235"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 6336,6467 L 6336,6467 6336,6474 6336,6480 6335,6487 6335,6493 6334,6499 6333,6506 6333,6512 6331,6518 6330,6524 6329,6530 6328,6535 6326,6541 6324,6546 6323,6551 6321,6555 6319,6560 6317,6564 6315,6568 6313,6572 6310,6575 6308,6578 6306,6581 6303,6584 6301,6586 6298,6588 6296,6589 6293,6590 6290,6591 6288,6592 6285,6592 3829,6594 3829,6594 3826,6594 3824,6593 3821,6592 3818,6591 3816,6590 3813,6588 3811,6586 3808,6583 3806,6580 3804,6577 3801,6574 3799,6570 3797,6566 3795,6562 3793,6557 3791,6552 3790,6547 3788,6542 3786,6537 3785,6531 3784,6525 3783,6519 3781,6513 3781,6507 3780,6501 3779,6494 3779,6488 3778,6481 3778,6475 3778,6468"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 6336,6467 L 6336,6467 Z"/>
+ <path fill="none" stroke="rgb(89,89,89)" stroke-width="106" stroke-linejoin="round" d="M 3777,6594 L 3777,6594 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id102">
+ <rect class="BoundingBox" stroke="none" fill="none" x="2512" y="1521" width="4708" height="759"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="2764" y="2069"><tspan fill="rgb(32,56,100)" stroke="none">System Under Test (SUT)</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id103">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4762" y="2603" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5055,2673 L 5055,2673 5055,2677 5055,2680 5054,2684 5053,2687 5053,2691 5052,2694 5050,2698 5049,2701 5047,2704 5046,2708 5044,2711 5042,2714 5040,2716 5037,2719 5035,2722 5032,2724 5029,2727 5027,2729 5024,2731 5020,2733 5017,2734 5014,2736 5011,2737 5007,2739 5004,2740 5000,2740 4997,2741 4993,2742 4990,2742 4986,2742 4832,2742 4832,2742 4828,2742 4825,2742 4821,2741 4818,2740 4814,2740 4811,2739 4807,2737 4804,2736 4801,2734 4797,2733 4794,2731 4791,2729 4789,2727 4786,2724 4783,2722 4781,2719 4778,2716 4776,2714 4774,2711 4772,2707 4771,2704 4769,2701 4768,2698 4766,2694 4765,2691 4765,2687 4764,2684 4763,2680 4763,2677 4763,2673 4762,2673 4763,2673 4763,2669 4763,2666 4764,2662 4764,2659 4765,2655 4766,2652 4767,2648 4769,2645 4770,2642 4772,2639 4774,2636 4776,2633 4778,2630 4780,2627 4783,2625 4785,2622 4788,2620 4791,2618 4794,2615 4797,2614 4800,2612 4803,2610 4807,2609 4810,2608 4813,2607 4817,2606 4820,2605 4824,2604 4827,2604 4831,2604 4986,2603 4986,2604 4990,2604 4993,2604 4997,2605 5000,2605 5004,2606 5007,2607 5011,2608 5014,2610 5017,2611 5020,2613 5023,2615 5026,2617 5029,2619 5032,2621 5034,2624 5037,2626 5039,2629 5041,2632 5044,2635 5045,2638 5047,2641 5049,2644 5050,2648 5051,2651 5052,2654 5053,2658 5054,2661 5055,2665 5055,2668 5055,2672 5055,2673 Z M 5055,2742 L 5055,2742 Z M 4762,2603 L 4762,2603 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id104">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4762" y="2803" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5055,2873 L 5055,2873 5055,2877 5055,2880 5054,2884 5053,2887 5053,2891 5052,2894 5050,2898 5049,2901 5047,2904 5046,2908 5044,2911 5042,2914 5040,2916 5037,2919 5035,2922 5032,2924 5029,2927 5027,2929 5024,2931 5020,2933 5017,2934 5014,2936 5011,2937 5007,2939 5004,2940 5000,2940 4997,2941 4993,2942 4990,2942 4986,2942 4832,2942 4832,2942 4828,2942 4825,2942 4821,2941 4818,2940 4814,2940 4811,2939 4807,2937 4804,2936 4801,2934 4797,2933 4794,2931 4791,2929 4789,2927 4786,2924 4783,2922 4781,2919 4778,2916 4776,2914 4774,2911 4772,2907 4771,2904 4769,2901 4768,2898 4766,2894 4765,2891 4765,2887 4764,2884 4763,2880 4763,2877 4763,2873 4762,2873 4763,2873 4763,2869 4763,2866 4764,2862 4764,2859 4765,2855 4766,2852 4767,2848 4769,2845 4770,2842 4772,2839 4774,2836 4776,2833 4778,2830 4780,2827 4783,2825 4785,2822 4788,2820 4791,2818 4794,2815 4797,2814 4800,2812 4803,2810 4807,2809 4810,2808 4813,2807 4817,2806 4820,2805 4824,2804 4827,2804 4831,2804 4986,2803 4986,2804 4990,2804 4993,2804 4997,2805 5000,2805 5004,2806 5007,2807 5011,2808 5014,2810 5017,2811 5020,2813 5023,2815 5026,2817 5029,2819 5032,2821 5034,2824 5037,2826 5039,2829 5041,2832 5044,2835 5045,2838 5047,2841 5049,2844 5050,2848 5051,2851 5052,2854 5053,2858 5054,2861 5055,2865 5055,2868 5055,2872 5055,2873 Z M 5055,2942 L 5055,2942 Z M 4762,2803 L 4762,2803 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id105">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4762" y="3003" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5055,3073 L 5055,3073 5055,3077 5055,3080 5054,3084 5053,3087 5053,3091 5052,3094 5050,3098 5049,3101 5047,3104 5046,3108 5044,3111 5042,3114 5040,3116 5037,3119 5035,3122 5032,3124 5029,3127 5027,3129 5024,3131 5020,3133 5017,3134 5014,3136 5011,3137 5007,3139 5004,3140 5000,3140 4997,3141 4993,3142 4990,3142 4986,3142 4832,3142 4832,3142 4828,3142 4825,3142 4821,3141 4818,3140 4814,3140 4811,3139 4807,3137 4804,3136 4801,3134 4797,3133 4794,3131 4791,3129 4789,3127 4786,3124 4783,3122 4781,3119 4778,3116 4776,3114 4774,3111 4772,3107 4771,3104 4769,3101 4768,3098 4766,3094 4765,3091 4765,3087 4764,3084 4763,3080 4763,3077 4763,3073 4762,3073 4763,3073 4763,3069 4763,3066 4764,3062 4764,3059 4765,3055 4766,3052 4767,3048 4769,3045 4770,3042 4772,3039 4774,3036 4776,3033 4778,3030 4780,3027 4783,3025 4785,3022 4788,3020 4791,3018 4794,3015 4797,3014 4800,3012 4803,3010 4807,3009 4810,3008 4813,3007 4817,3006 4820,3005 4824,3004 4827,3004 4831,3004 4986,3003 4986,3004 4990,3004 4993,3004 4997,3005 5000,3005 5004,3006 5007,3007 5011,3008 5014,3010 5017,3011 5020,3013 5023,3015 5026,3017 5029,3019 5032,3021 5034,3024 5037,3026 5039,3029 5041,3032 5044,3035 5045,3038 5047,3041 5049,3044 5050,3048 5051,3051 5052,3054 5053,3058 5054,3061 5055,3065 5055,3068 5055,3072 5055,3073 Z M 5055,3142 L 5055,3142 Z M 4762,3003 L 4762,3003 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id106">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4412" y="2603" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4706,2673 L 4706,2673 4706,2677 4706,2680 4705,2684 4704,2687 4704,2691 4703,2694 4701,2698 4700,2701 4698,2704 4697,2708 4695,2711 4693,2714 4691,2716 4688,2719 4686,2722 4683,2724 4680,2727 4678,2729 4675,2731 4671,2733 4668,2734 4665,2736 4662,2737 4658,2739 4655,2740 4651,2740 4648,2741 4644,2742 4641,2742 4637,2742 4483,2742 4483,2742 4479,2742 4476,2742 4472,2741 4469,2740 4465,2740 4462,2739 4458,2737 4455,2736 4452,2734 4448,2733 4445,2731 4442,2729 4440,2727 4437,2724 4434,2722 4432,2719 4429,2716 4427,2714 4425,2711 4423,2707 4422,2704 4420,2701 4419,2698 4417,2694 4416,2691 4416,2687 4415,2684 4414,2680 4414,2677 4414,2673 4413,2673 4414,2673 4414,2669 4414,2666 4415,2662 4415,2659 4416,2655 4417,2652 4418,2648 4420,2645 4421,2642 4423,2639 4425,2636 4427,2633 4429,2630 4431,2627 4434,2625 4436,2622 4439,2620 4442,2618 4445,2615 4448,2614 4451,2612 4454,2610 4458,2609 4461,2608 4464,2607 4468,2606 4471,2605 4475,2604 4478,2604 4482,2604 4637,2603 4637,2604 4641,2604 4644,2604 4648,2605 4651,2605 4655,2606 4658,2607 4662,2608 4665,2610 4668,2611 4671,2613 4674,2615 4677,2617 4680,2619 4683,2621 4685,2624 4688,2626 4690,2629 4692,2632 4695,2635 4696,2638 4698,2641 4700,2644 4701,2648 4702,2651 4703,2654 4704,2658 4705,2661 4706,2665 4706,2668 4706,2672 4706,2673 Z M 4706,2742 L 4706,2742 Z M 4413,2603 L 4413,2603 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id107">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4412" y="2803" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4706,2873 L 4706,2873 4706,2877 4706,2880 4705,2884 4704,2887 4704,2891 4703,2894 4701,2898 4700,2901 4698,2904 4697,2908 4695,2911 4693,2914 4691,2916 4688,2919 4686,2922 4683,2924 4680,2927 4678,2929 4675,2931 4671,2933 4668,2934 4665,2936 4662,2937 4658,2939 4655,2940 4651,2940 4648,2941 4644,2942 4641,2942 4637,2942 4483,2942 4483,2942 4479,2942 4476,2942 4472,2941 4469,2940 4465,2940 4462,2939 4458,2937 4455,2936 4452,2934 4448,2933 4445,2931 4442,2929 4440,2927 4437,2924 4434,2922 4432,2919 4429,2916 4427,2914 4425,2911 4423,2907 4422,2904 4420,2901 4419,2898 4417,2894 4416,2891 4416,2887 4415,2884 4414,2880 4414,2877 4414,2873 4413,2873 4414,2873 4414,2869 4414,2866 4415,2862 4415,2859 4416,2855 4417,2852 4418,2848 4420,2845 4421,2842 4423,2839 4425,2836 4427,2833 4429,2830 4431,2827 4434,2825 4436,2822 4439,2820 4442,2818 4445,2815 4448,2814 4451,2812 4454,2810 4458,2809 4461,2808 4464,2807 4468,2806 4471,2805 4475,2804 4478,2804 4482,2804 4637,2803 4637,2804 4641,2804 4644,2804 4648,2805 4651,2805 4655,2806 4658,2807 4662,2808 4665,2810 4668,2811 4671,2813 4674,2815 4677,2817 4680,2819 4683,2821 4685,2824 4688,2826 4690,2829 4692,2832 4695,2835 4696,2838 4698,2841 4700,2844 4701,2848 4702,2851 4703,2854 4704,2858 4705,2861 4706,2865 4706,2868 4706,2872 4706,2873 Z M 4706,2942 L 4706,2942 Z M 4413,2803 L 4413,2803 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id108">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4413" y="3003" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4706,3073 L 4706,3073 4706,3077 4706,3080 4705,3084 4704,3087 4704,3091 4703,3094 4701,3098 4700,3101 4698,3104 4697,3108 4695,3111 4693,3114 4691,3116 4688,3119 4686,3122 4683,3124 4680,3127 4678,3129 4675,3131 4671,3133 4668,3134 4665,3136 4662,3137 4658,3139 4655,3140 4651,3140 4648,3141 4644,3142 4641,3142 4637,3142 4483,3142 4483,3142 4479,3142 4476,3142 4472,3141 4469,3140 4465,3140 4462,3139 4458,3137 4455,3136 4452,3134 4448,3133 4445,3131 4442,3129 4440,3127 4437,3124 4434,3122 4432,3119 4429,3116 4427,3114 4425,3111 4423,3107 4422,3104 4420,3101 4419,3098 4417,3094 4416,3091 4416,3087 4415,3084 4414,3080 4414,3077 4414,3073 4413,3073 4414,3073 4414,3069 4414,3066 4415,3062 4415,3059 4416,3055 4417,3052 4418,3048 4420,3045 4421,3042 4423,3039 4425,3036 4427,3033 4429,3030 4431,3027 4434,3025 4436,3022 4439,3020 4442,3018 4445,3015 4448,3014 4451,3012 4454,3010 4458,3009 4461,3008 4464,3007 4468,3006 4471,3005 4475,3004 4478,3004 4482,3004 4637,3003 4637,3004 4641,3004 4644,3004 4648,3005 4651,3005 4655,3006 4658,3007 4662,3008 4665,3010 4668,3011 4671,3013 4674,3015 4677,3017 4680,3019 4683,3021 4685,3024 4688,3026 4690,3029 4692,3032 4695,3035 4696,3038 4698,3041 4700,3044 4701,3048 4702,3051 4703,3054 4704,3058 4705,3061 4706,3065 4706,3068 4706,3072 4706,3073 Z M 4706,3142 L 4706,3142 Z M 4413,3003 L 4413,3003 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id109">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5092" y="2606" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5385,2676 L 5385,2676 5385,2680 5385,2683 5384,2687 5383,2690 5383,2694 5382,2697 5380,2701 5379,2704 5377,2707 5376,2711 5374,2714 5372,2717 5370,2719 5367,2722 5365,2725 5362,2727 5359,2730 5357,2732 5354,2734 5350,2736 5347,2737 5344,2739 5341,2740 5337,2742 5334,2743 5330,2743 5327,2744 5323,2745 5320,2745 5316,2745 5162,2745 5162,2745 5158,2745 5155,2745 5151,2744 5148,2743 5144,2743 5141,2742 5137,2740 5134,2739 5131,2737 5127,2736 5124,2734 5121,2732 5119,2730 5116,2727 5113,2725 5111,2722 5108,2719 5106,2717 5104,2714 5102,2710 5101,2707 5099,2704 5098,2701 5096,2697 5095,2694 5095,2690 5094,2687 5093,2683 5093,2680 5093,2676 5092,2676 5093,2676 5093,2672 5093,2669 5094,2665 5094,2662 5095,2658 5096,2655 5097,2651 5099,2648 5100,2645 5102,2642 5104,2639 5106,2636 5108,2633 5110,2630 5113,2628 5115,2625 5118,2623 5121,2621 5124,2618 5127,2617 5130,2615 5133,2613 5137,2612 5140,2611 5143,2610 5147,2609 5150,2608 5154,2607 5157,2607 5161,2607 5316,2606 5316,2607 5320,2607 5323,2607 5327,2608 5330,2608 5334,2609 5337,2610 5341,2611 5344,2613 5347,2614 5350,2616 5353,2618 5356,2620 5359,2622 5362,2624 5364,2627 5367,2629 5369,2632 5371,2635 5374,2638 5375,2641 5377,2644 5379,2647 5380,2651 5381,2654 5382,2657 5383,2661 5384,2664 5385,2668 5385,2671 5385,2675 5385,2676 Z M 5385,2745 L 5385,2745 Z M 5092,2606 L 5092,2606 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id110">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5092" y="2806" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5385,2876 L 5385,2876 5385,2880 5385,2883 5384,2887 5383,2890 5383,2894 5382,2897 5380,2901 5379,2904 5377,2907 5376,2911 5374,2914 5372,2917 5370,2919 5367,2922 5365,2925 5362,2927 5359,2930 5357,2932 5354,2934 5350,2936 5347,2937 5344,2939 5341,2940 5337,2942 5334,2943 5330,2943 5327,2944 5323,2945 5320,2945 5316,2945 5162,2945 5162,2945 5158,2945 5155,2945 5151,2944 5148,2943 5144,2943 5141,2942 5137,2940 5134,2939 5131,2937 5127,2936 5124,2934 5121,2932 5119,2930 5116,2927 5113,2925 5111,2922 5108,2919 5106,2917 5104,2914 5102,2910 5101,2907 5099,2904 5098,2901 5096,2897 5095,2894 5095,2890 5094,2887 5093,2883 5093,2880 5093,2876 5092,2876 5093,2876 5093,2872 5093,2869 5094,2865 5094,2862 5095,2858 5096,2855 5097,2851 5099,2848 5100,2845 5102,2842 5104,2839 5106,2836 5108,2833 5110,2830 5113,2828 5115,2825 5118,2823 5121,2821 5124,2818 5127,2817 5130,2815 5133,2813 5137,2812 5140,2811 5143,2810 5147,2809 5150,2808 5154,2807 5157,2807 5161,2807 5316,2806 5316,2807 5320,2807 5323,2807 5327,2808 5330,2808 5334,2809 5337,2810 5341,2811 5344,2813 5347,2814 5350,2816 5353,2818 5356,2820 5359,2822 5362,2824 5364,2827 5367,2829 5369,2832 5371,2835 5374,2838 5375,2841 5377,2844 5379,2847 5380,2851 5381,2854 5382,2857 5383,2861 5384,2864 5385,2868 5385,2871 5385,2875 5385,2876 Z M 5385,2945 L 5385,2945 Z M 5092,2806 L 5092,2806 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id111">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5092" y="3005" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5385,3075 L 5385,3075 5385,3079 5385,3082 5384,3086 5383,3089 5383,3093 5382,3096 5380,3100 5379,3103 5377,3106 5376,3110 5374,3113 5372,3116 5370,3118 5367,3121 5365,3124 5362,3126 5359,3129 5357,3131 5354,3133 5350,3135 5347,3136 5344,3138 5341,3139 5337,3141 5334,3142 5330,3142 5327,3143 5323,3144 5320,3144 5316,3144 5162,3144 5162,3144 5158,3144 5155,3144 5151,3143 5148,3142 5144,3142 5141,3141 5137,3139 5134,3138 5131,3136 5127,3135 5124,3133 5121,3131 5119,3129 5116,3126 5113,3124 5111,3121 5108,3118 5106,3116 5104,3113 5102,3109 5101,3106 5099,3103 5098,3100 5096,3096 5095,3093 5095,3089 5094,3086 5093,3082 5093,3079 5093,3075 5092,3075 5093,3075 5093,3071 5093,3068 5094,3064 5094,3061 5095,3057 5096,3054 5097,3050 5099,3047 5100,3044 5102,3041 5104,3038 5106,3035 5108,3032 5110,3029 5113,3027 5115,3024 5118,3022 5121,3020 5124,3017 5127,3016 5130,3014 5133,3012 5137,3011 5140,3010 5143,3009 5147,3008 5150,3007 5154,3006 5157,3006 5161,3006 5316,3005 5316,3006 5320,3006 5323,3006 5327,3007 5330,3007 5334,3008 5337,3009 5341,3010 5344,3012 5347,3013 5350,3015 5353,3017 5356,3019 5359,3021 5362,3023 5364,3026 5367,3028 5369,3031 5371,3034 5374,3037 5375,3040 5377,3043 5379,3046 5380,3050 5381,3053 5382,3056 5383,3060 5384,3063 5385,3067 5385,3070 5385,3074 5385,3075 Z M 5385,3144 L 5385,3144 Z M 5092,3005 L 5092,3005 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id112">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5820" y="2601" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6113,2671 L 6113,2671 6113,2675 6113,2678 6112,2682 6111,2685 6111,2689 6110,2692 6108,2696 6107,2699 6105,2702 6104,2706 6102,2709 6100,2712 6098,2714 6095,2717 6093,2720 6090,2722 6087,2725 6085,2727 6082,2729 6078,2731 6075,2732 6072,2734 6069,2735 6065,2737 6062,2738 6058,2738 6055,2739 6051,2740 6048,2740 6044,2740 5890,2740 5890,2740 5886,2740 5883,2740 5879,2739 5876,2738 5872,2738 5869,2737 5865,2735 5862,2734 5859,2732 5855,2731 5852,2729 5849,2727 5847,2725 5844,2722 5841,2720 5839,2717 5836,2714 5834,2712 5832,2709 5830,2705 5829,2702 5827,2699 5826,2696 5824,2692 5823,2689 5823,2685 5822,2682 5821,2678 5821,2675 5821,2671 5820,2671 5821,2671 5821,2667 5821,2664 5822,2660 5822,2657 5823,2653 5824,2650 5825,2646 5827,2643 5828,2640 5830,2637 5832,2634 5834,2631 5836,2628 5838,2625 5841,2623 5843,2620 5846,2618 5849,2616 5852,2613 5855,2612 5858,2610 5861,2608 5865,2607 5868,2606 5871,2605 5875,2604 5878,2603 5882,2602 5885,2602 5889,2602 6044,2601 6044,2602 6048,2602 6051,2602 6055,2603 6058,2603 6062,2604 6065,2605 6069,2606 6072,2608 6075,2609 6078,2611 6081,2613 6084,2615 6087,2617 6090,2619 6092,2622 6095,2624 6097,2627 6099,2630 6102,2633 6103,2636 6105,2639 6107,2642 6108,2646 6109,2649 6110,2652 6111,2656 6112,2659 6113,2663 6113,2666 6113,2670 6113,2671 Z M 6113,2740 L 6113,2740 Z M 5820,2601 L 5820,2601 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id113">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5820" y="2801" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6113,2871 L 6113,2871 6113,2875 6113,2878 6112,2882 6111,2885 6111,2889 6110,2892 6108,2896 6107,2899 6105,2902 6104,2906 6102,2909 6100,2912 6098,2914 6095,2917 6093,2920 6090,2922 6087,2925 6085,2927 6082,2929 6078,2931 6075,2932 6072,2934 6069,2935 6065,2937 6062,2938 6058,2938 6055,2939 6051,2940 6048,2940 6044,2940 5890,2940 5890,2940 5886,2940 5883,2940 5879,2939 5876,2938 5872,2938 5869,2937 5865,2935 5862,2934 5859,2932 5855,2931 5852,2929 5849,2927 5847,2925 5844,2922 5841,2920 5839,2917 5836,2914 5834,2912 5832,2909 5830,2905 5829,2902 5827,2899 5826,2896 5824,2892 5823,2889 5823,2885 5822,2882 5821,2878 5821,2875 5821,2871 5820,2871 5821,2871 5821,2867 5821,2864 5822,2860 5822,2857 5823,2853 5824,2850 5825,2846 5827,2843 5828,2840 5830,2837 5832,2834 5834,2831 5836,2828 5838,2825 5841,2823 5843,2820 5846,2818 5849,2816 5852,2813 5855,2812 5858,2810 5861,2808 5865,2807 5868,2806 5871,2805 5875,2804 5878,2803 5882,2802 5885,2802 5889,2802 6044,2801 6044,2802 6048,2802 6051,2802 6055,2803 6058,2803 6062,2804 6065,2805 6069,2806 6072,2808 6075,2809 6078,2811 6081,2813 6084,2815 6087,2817 6090,2819 6092,2822 6095,2824 6097,2827 6099,2830 6102,2833 6103,2836 6105,2839 6107,2842 6108,2846 6109,2849 6110,2852 6111,2856 6112,2859 6113,2863 6113,2866 6113,2870 6113,2871 Z M 6113,2940 L 6113,2940 Z M 5820,2801 L 5820,2801 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id114">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5820" y="3001" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6113,3071 L 6113,3071 6113,3075 6113,3078 6112,3082 6111,3085 6111,3089 6110,3092 6108,3096 6107,3099 6105,3102 6104,3106 6102,3109 6100,3112 6098,3114 6095,3117 6093,3120 6090,3122 6087,3125 6085,3127 6082,3129 6078,3131 6075,3132 6072,3134 6069,3135 6065,3137 6062,3138 6058,3138 6055,3139 6051,3140 6048,3140 6044,3140 5890,3140 5890,3140 5886,3140 5883,3140 5879,3139 5876,3138 5872,3138 5869,3137 5865,3135 5862,3134 5859,3132 5855,3131 5852,3129 5849,3127 5847,3125 5844,3122 5841,3120 5839,3117 5836,3114 5834,3112 5832,3109 5830,3105 5829,3102 5827,3099 5826,3096 5824,3092 5823,3089 5823,3085 5822,3082 5821,3078 5821,3075 5821,3071 5820,3071 5821,3071 5821,3067 5821,3064 5822,3060 5822,3057 5823,3053 5824,3050 5825,3046 5827,3043 5828,3040 5830,3037 5832,3034 5834,3031 5836,3028 5838,3025 5841,3023 5843,3020 5846,3018 5849,3016 5852,3013 5855,3012 5858,3010 5861,3008 5865,3007 5868,3006 5871,3005 5875,3004 5878,3003 5882,3002 5885,3002 5889,3002 6044,3001 6044,3002 6048,3002 6051,3002 6055,3003 6058,3003 6062,3004 6065,3005 6069,3006 6072,3008 6075,3009 6078,3011 6081,3013 6084,3015 6087,3017 6090,3019 6092,3022 6095,3024 6097,3027 6099,3030 6102,3033 6103,3036 6105,3039 6107,3042 6108,3046 6109,3049 6110,3052 6111,3056 6112,3059 6113,3063 6113,3066 6113,3070 6113,3071 Z M 6113,3140 L 6113,3140 Z M 5820,3001 L 5820,3001 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id115">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5471" y="2601" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5764,2671 L 5764,2671 5764,2675 5764,2678 5763,2682 5762,2685 5762,2689 5761,2692 5759,2696 5758,2699 5756,2702 5755,2706 5753,2709 5751,2712 5749,2714 5746,2717 5744,2720 5741,2722 5738,2725 5736,2727 5733,2729 5729,2731 5726,2732 5723,2734 5720,2735 5716,2737 5713,2738 5709,2738 5706,2739 5702,2740 5699,2740 5695,2740 5541,2740 5541,2740 5537,2740 5534,2740 5530,2739 5527,2738 5523,2738 5520,2737 5516,2735 5513,2734 5510,2732 5506,2731 5503,2729 5500,2727 5498,2725 5495,2722 5492,2720 5490,2717 5487,2714 5485,2712 5483,2709 5481,2705 5480,2702 5478,2699 5477,2696 5475,2692 5474,2689 5474,2685 5473,2682 5472,2678 5472,2675 5472,2671 5471,2671 5472,2671 5472,2667 5472,2664 5473,2660 5473,2657 5474,2653 5475,2650 5476,2646 5478,2643 5479,2640 5481,2637 5483,2634 5485,2631 5487,2628 5489,2625 5492,2623 5494,2620 5497,2618 5500,2616 5503,2613 5506,2612 5509,2610 5512,2608 5516,2607 5519,2606 5522,2605 5526,2604 5529,2603 5533,2602 5536,2602 5540,2602 5695,2601 5695,2602 5699,2602 5702,2602 5706,2603 5709,2603 5713,2604 5716,2605 5720,2606 5723,2608 5726,2609 5729,2611 5732,2613 5735,2615 5738,2617 5741,2619 5743,2622 5746,2624 5748,2627 5750,2630 5753,2633 5754,2636 5756,2639 5758,2642 5759,2646 5760,2649 5761,2652 5762,2656 5763,2659 5764,2663 5764,2666 5764,2670 5764,2671 Z M 5764,2740 L 5764,2740 Z M 5471,2601 L 5471,2601 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id116">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5471" y="2800" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5764,2871 L 5764,2871 5764,2875 5764,2878 5763,2882 5762,2885 5762,2889 5761,2892 5759,2896 5758,2899 5756,2902 5755,2906 5753,2909 5751,2912 5749,2914 5746,2917 5744,2920 5741,2922 5738,2925 5736,2927 5733,2929 5729,2931 5726,2932 5723,2934 5720,2935 5716,2937 5713,2938 5709,2938 5706,2939 5702,2940 5699,2940 5695,2940 5541,2940 5541,2940 5537,2940 5534,2940 5530,2939 5527,2938 5523,2938 5520,2937 5516,2935 5513,2934 5510,2932 5506,2931 5503,2929 5500,2927 5498,2925 5495,2922 5492,2920 5490,2917 5487,2914 5485,2912 5483,2909 5481,2905 5480,2902 5478,2899 5477,2896 5475,2892 5474,2889 5474,2885 5473,2882 5472,2878 5472,2875 5472,2871 5471,2871 5472,2871 5472,2867 5472,2864 5473,2860 5473,2857 5474,2853 5475,2850 5476,2846 5478,2843 5479,2840 5481,2837 5483,2834 5485,2831 5487,2828 5489,2825 5492,2823 5494,2820 5497,2818 5500,2816 5503,2813 5506,2812 5509,2810 5512,2808 5516,2807 5519,2806 5522,2805 5526,2804 5529,2803 5533,2802 5536,2802 5540,2802 5695,2801 5695,2802 5699,2802 5702,2802 5706,2803 5709,2803 5713,2804 5716,2805 5720,2806 5723,2808 5726,2809 5729,2811 5732,2813 5735,2815 5738,2817 5741,2819 5743,2822 5746,2824 5748,2827 5750,2830 5753,2833 5754,2836 5756,2839 5758,2842 5759,2846 5760,2849 5761,2852 5762,2856 5763,2859 5764,2863 5764,2866 5764,2870 5764,2871 Z M 5764,2940 L 5764,2940 Z M 5471,2801 L 5471,2801 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id117">
+ <rect class="BoundingBox" stroke="none" fill="none" x="5471" y="3001" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 5764,3071 L 5764,3071 5764,3075 5764,3078 5763,3082 5762,3085 5762,3089 5761,3092 5759,3096 5758,3099 5756,3102 5755,3106 5753,3109 5751,3112 5749,3114 5746,3117 5744,3120 5741,3122 5738,3125 5736,3127 5733,3129 5729,3131 5726,3132 5723,3134 5720,3135 5716,3137 5713,3138 5709,3138 5706,3139 5702,3140 5699,3140 5695,3140 5541,3140 5541,3140 5537,3140 5534,3140 5530,3139 5527,3138 5523,3138 5520,3137 5516,3135 5513,3134 5510,3132 5506,3131 5503,3129 5500,3127 5498,3125 5495,3122 5492,3120 5490,3117 5487,3114 5485,3112 5483,3109 5481,3105 5480,3102 5478,3099 5477,3096 5475,3092 5474,3089 5474,3085 5473,3082 5472,3078 5472,3075 5472,3071 5471,3071 5472,3071 5472,3067 5472,3064 5473,3060 5473,3057 5474,3053 5475,3050 5476,3046 5478,3043 5479,3040 5481,3037 5483,3034 5485,3031 5487,3028 5489,3025 5492,3023 5494,3020 5497,3018 5500,3016 5503,3013 5506,3012 5509,3010 5512,3008 5516,3007 5519,3006 5522,3005 5526,3004 5529,3003 5533,3002 5536,3002 5540,3002 5695,3001 5695,3002 5699,3002 5702,3002 5706,3003 5709,3003 5713,3004 5716,3005 5720,3006 5723,3008 5726,3009 5729,3011 5732,3013 5735,3015 5738,3017 5741,3019 5743,3022 5746,3024 5748,3027 5750,3030 5753,3033 5754,3036 5756,3039 5758,3042 5759,3046 5760,3049 5761,3052 5762,3056 5763,3059 5764,3063 5764,3066 5764,3070 5764,3071 Z M 5764,3140 L 5764,3140 Z M 5471,3001 L 5471,3001 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id118">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6151" y="2604" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6444,2674 L 6444,2674 6444,2678 6444,2681 6443,2685 6442,2688 6442,2692 6441,2695 6439,2699 6438,2702 6436,2705 6435,2709 6433,2712 6431,2715 6429,2717 6426,2720 6424,2723 6421,2725 6418,2728 6416,2730 6413,2732 6409,2734 6406,2735 6403,2737 6400,2738 6396,2740 6393,2741 6389,2741 6386,2742 6382,2743 6379,2743 6375,2743 6221,2743 6221,2743 6217,2743 6214,2743 6210,2742 6207,2741 6203,2741 6200,2740 6196,2738 6193,2737 6190,2735 6186,2734 6183,2732 6180,2730 6178,2728 6175,2725 6172,2723 6170,2720 6167,2717 6165,2715 6163,2712 6161,2708 6160,2705 6158,2702 6157,2699 6155,2695 6154,2692 6154,2688 6153,2685 6152,2681 6152,2678 6152,2674 6151,2674 6152,2674 6152,2670 6152,2667 6153,2663 6153,2660 6154,2656 6155,2653 6156,2649 6158,2646 6159,2643 6161,2640 6163,2637 6165,2634 6167,2631 6169,2628 6172,2626 6174,2623 6177,2621 6180,2619 6183,2616 6186,2615 6189,2613 6192,2611 6196,2610 6199,2609 6202,2608 6206,2607 6209,2606 6213,2605 6216,2605 6220,2605 6375,2604 6375,2605 6379,2605 6382,2605 6386,2606 6389,2606 6393,2607 6396,2608 6400,2609 6403,2611 6406,2612 6409,2614 6412,2616 6415,2618 6418,2620 6421,2622 6423,2625 6426,2627 6428,2630 6430,2633 6433,2636 6434,2639 6436,2642 6438,2645 6439,2649 6440,2652 6441,2655 6442,2659 6443,2662 6444,2666 6444,2669 6444,2673 6444,2674 Z M 6444,2743 L 6444,2743 Z M 6151,2604 L 6151,2604 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id119">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6151" y="2804" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6444,2874 L 6444,2874 6444,2878 6444,2881 6443,2885 6442,2888 6442,2892 6441,2895 6439,2899 6438,2902 6436,2905 6435,2909 6433,2912 6431,2915 6429,2917 6426,2920 6424,2923 6421,2925 6418,2928 6416,2930 6413,2932 6409,2934 6406,2935 6403,2937 6400,2938 6396,2940 6393,2941 6389,2941 6386,2942 6382,2943 6379,2943 6375,2943 6221,2943 6221,2943 6217,2943 6214,2943 6210,2942 6207,2941 6203,2941 6200,2940 6196,2938 6193,2937 6190,2935 6186,2934 6183,2932 6180,2930 6178,2928 6175,2925 6172,2923 6170,2920 6167,2917 6165,2915 6163,2912 6161,2908 6160,2905 6158,2902 6157,2899 6155,2895 6154,2892 6154,2888 6153,2885 6152,2881 6152,2878 6152,2874 6151,2874 6152,2874 6152,2870 6152,2867 6153,2863 6153,2860 6154,2856 6155,2853 6156,2849 6158,2846 6159,2843 6161,2840 6163,2837 6165,2834 6167,2831 6169,2828 6172,2826 6174,2823 6177,2821 6180,2819 6183,2816 6186,2815 6189,2813 6192,2811 6196,2810 6199,2809 6202,2808 6206,2807 6209,2806 6213,2805 6216,2805 6220,2805 6375,2804 6375,2805 6379,2805 6382,2805 6386,2806 6389,2806 6393,2807 6396,2808 6400,2809 6403,2811 6406,2812 6409,2814 6412,2816 6415,2818 6418,2820 6421,2822 6423,2825 6426,2827 6428,2830 6430,2833 6433,2836 6434,2839 6436,2842 6438,2845 6439,2849 6440,2852 6441,2855 6442,2859 6443,2862 6444,2866 6444,2869 6444,2873 6444,2874 Z M 6444,2943 L 6444,2943 Z M 6151,2804 L 6151,2804 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id120">
+ <rect class="BoundingBox" stroke="none" fill="none" x="6151" y="3004" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 6444,3074 L 6444,3074 6444,3078 6444,3081 6443,3085 6442,3088 6442,3092 6441,3095 6439,3099 6438,3102 6436,3105 6435,3109 6433,3112 6431,3115 6429,3117 6426,3120 6424,3123 6421,3125 6418,3128 6416,3130 6413,3132 6409,3134 6406,3135 6403,3137 6400,3138 6396,3140 6393,3141 6389,3141 6386,3142 6382,3143 6379,3143 6375,3143 6221,3143 6221,3143 6217,3143 6214,3143 6210,3142 6207,3141 6203,3141 6200,3140 6196,3138 6193,3137 6190,3135 6186,3134 6183,3132 6180,3130 6178,3128 6175,3125 6172,3123 6170,3120 6167,3117 6165,3115 6163,3112 6161,3108 6160,3105 6158,3102 6157,3099 6155,3095 6154,3092 6154,3088 6153,3085 6152,3081 6152,3078 6152,3074 6151,3074 6152,3074 6152,3070 6152,3067 6153,3063 6153,3060 6154,3056 6155,3053 6156,3049 6158,3046 6159,3043 6161,3040 6163,3037 6165,3034 6167,3031 6169,3028 6172,3026 6174,3023 6177,3021 6180,3019 6183,3016 6186,3015 6189,3013 6192,3011 6196,3010 6199,3009 6202,3008 6206,3007 6209,3006 6213,3005 6216,3005 6220,3005 6375,3004 6375,3005 6379,3005 6382,3005 6386,3006 6389,3006 6393,3007 6396,3008 6400,3009 6403,3011 6406,3012 6409,3014 6412,3016 6415,3018 6418,3020 6421,3022 6423,3025 6426,3027 6428,3030 6430,3033 6433,3036 6434,3039 6436,3042 6438,3045 6439,3049 6440,3052 6441,3055 6442,3059 6443,3062 6444,3066 6444,3069 6444,3073 6444,3074 Z M 6444,3143 L 6444,3143 Z M 6151,3004 L 6151,3004 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.TextShape">
+ <g id="id121">
+ <rect class="BoundingBox" stroke="none" fill="none" x="2870" y="4407" width="1625" height="1285"/>
+ <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3120" y="4803"><tspan fill="rgb(0,0,0)" stroke="none">PCIe</tspan></tspan></tspan><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="282px" font-weight="400"><tspan class="TextPosition" x="3120" y="5150"><tspan fill="rgb(0,0,0)" stroke="none">Gen3</tspan></tspan></tspan></text>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id122">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3662" y="2604" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 3955,2674 L 3955,2674 3955,2678 3955,2681 3954,2685 3953,2688 3953,2692 3952,2695 3950,2699 3949,2702 3947,2705 3946,2709 3944,2712 3942,2715 3940,2717 3937,2720 3935,2723 3932,2725 3929,2728 3927,2730 3924,2732 3920,2734 3917,2735 3914,2737 3911,2738 3907,2740 3904,2741 3900,2741 3897,2742 3893,2743 3890,2743 3886,2743 3732,2743 3732,2743 3728,2743 3725,2743 3721,2742 3718,2741 3714,2741 3711,2740 3707,2738 3704,2737 3701,2735 3697,2734 3694,2732 3691,2730 3689,2728 3686,2725 3683,2723 3681,2720 3678,2717 3676,2715 3674,2712 3672,2708 3671,2705 3669,2702 3668,2699 3666,2695 3665,2692 3665,2688 3664,2685 3663,2681 3663,2678 3663,2674 3662,2674 3663,2674 3663,2670 3663,2667 3664,2663 3664,2660 3665,2656 3666,2653 3667,2649 3669,2646 3670,2643 3672,2640 3674,2637 3676,2634 3678,2631 3680,2628 3683,2626 3685,2623 3688,2621 3691,2619 3694,2616 3697,2615 3700,2613 3703,2611 3707,2610 3710,2609 3713,2608 3717,2607 3720,2606 3724,2605 3727,2605 3731,2605 3886,2604 3886,2605 3890,2605 3893,2605 3897,2606 3900,2606 3904,2607 3907,2608 3911,2609 3914,2611 3917,2612 3920,2614 3923,2616 3926,2618 3929,2620 3932,2622 3934,2625 3937,2627 3939,2630 3941,2633 3944,2636 3945,2639 3947,2642 3949,2645 3950,2649 3951,2652 3952,2655 3953,2659 3954,2662 3955,2666 3955,2669 3955,2673 3955,2674 Z M 3955,2743 L 3955,2743 Z M 3662,2604 L 3662,2604 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id123">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3662" y="2804" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 3955,2874 L 3955,2874 3955,2878 3955,2881 3954,2885 3953,2888 3953,2892 3952,2895 3950,2899 3949,2902 3947,2905 3946,2909 3944,2912 3942,2915 3940,2917 3937,2920 3935,2923 3932,2925 3929,2928 3927,2930 3924,2932 3920,2934 3917,2935 3914,2937 3911,2938 3907,2940 3904,2941 3900,2941 3897,2942 3893,2943 3890,2943 3886,2943 3732,2943 3732,2943 3728,2943 3725,2943 3721,2942 3718,2941 3714,2941 3711,2940 3707,2938 3704,2937 3701,2935 3697,2934 3694,2932 3691,2930 3689,2928 3686,2925 3683,2923 3681,2920 3678,2917 3676,2915 3674,2912 3672,2908 3671,2905 3669,2902 3668,2899 3666,2895 3665,2892 3665,2888 3664,2885 3663,2881 3663,2878 3663,2874 3662,2874 3663,2874 3663,2870 3663,2867 3664,2863 3664,2860 3665,2856 3666,2853 3667,2849 3669,2846 3670,2843 3672,2840 3674,2837 3676,2834 3678,2831 3680,2828 3683,2826 3685,2823 3688,2821 3691,2819 3694,2816 3697,2815 3700,2813 3703,2811 3707,2810 3710,2809 3713,2808 3717,2807 3720,2806 3724,2805 3727,2805 3731,2805 3886,2804 3886,2805 3890,2805 3893,2805 3897,2806 3900,2806 3904,2807 3907,2808 3911,2809 3914,2811 3917,2812 3920,2814 3923,2816 3926,2818 3929,2820 3932,2822 3934,2825 3937,2827 3939,2830 3941,2833 3944,2836 3945,2839 3947,2842 3949,2845 3950,2849 3951,2852 3952,2855 3953,2859 3954,2862 3955,2866 3955,2869 3955,2873 3955,2874 Z M 3955,2943 L 3955,2943 Z M 3662,2804 L 3662,2804 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id124">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3662" y="3004" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 3955,3074 L 3955,3074 3955,3078 3955,3081 3954,3085 3953,3088 3953,3092 3952,3095 3950,3099 3949,3102 3947,3105 3946,3109 3944,3112 3942,3115 3940,3117 3937,3120 3935,3123 3932,3125 3929,3128 3927,3130 3924,3132 3920,3134 3917,3135 3914,3137 3911,3138 3907,3140 3904,3141 3900,3141 3897,3142 3893,3143 3890,3143 3886,3143 3732,3143 3732,3143 3728,3143 3725,3143 3721,3142 3718,3141 3714,3141 3711,3140 3707,3138 3704,3137 3701,3135 3697,3134 3694,3132 3691,3130 3689,3128 3686,3125 3683,3123 3681,3120 3678,3117 3676,3115 3674,3112 3672,3108 3671,3105 3669,3102 3668,3099 3666,3095 3665,3092 3665,3088 3664,3085 3663,3081 3663,3078 3663,3074 3662,3074 3663,3074 3663,3070 3663,3067 3664,3063 3664,3060 3665,3056 3666,3053 3667,3049 3669,3046 3670,3043 3672,3040 3674,3037 3676,3034 3678,3031 3680,3028 3683,3026 3685,3023 3688,3021 3691,3019 3694,3016 3697,3015 3700,3013 3703,3011 3707,3010 3710,3009 3713,3008 3717,3007 3720,3006 3724,3005 3727,3005 3731,3005 3886,3004 3886,3005 3890,3005 3893,3005 3897,3006 3900,3006 3904,3007 3907,3008 3911,3009 3914,3011 3917,3012 3920,3014 3923,3016 3926,3018 3929,3020 3932,3022 3934,3025 3937,3027 3939,3030 3941,3033 3944,3036 3945,3039 3947,3042 3949,3045 3950,3049 3951,3052 3952,3055 3953,3059 3954,3062 3955,3066 3955,3069 3955,3073 3955,3074 Z M 3955,3143 L 3955,3143 Z M 3662,3004 L 3662,3004 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id125">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3992" y="2607" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4285,2677 L 4285,2677 4285,2681 4285,2684 4284,2688 4283,2691 4283,2695 4282,2698 4280,2702 4279,2705 4277,2708 4276,2712 4274,2715 4272,2718 4270,2720 4267,2723 4265,2726 4262,2728 4259,2731 4257,2733 4254,2735 4250,2737 4247,2738 4244,2740 4241,2741 4237,2743 4234,2744 4230,2744 4227,2745 4223,2746 4220,2746 4216,2746 4062,2746 4062,2746 4058,2746 4055,2746 4051,2745 4048,2744 4044,2744 4041,2743 4037,2741 4034,2740 4031,2738 4027,2737 4024,2735 4021,2733 4019,2731 4016,2728 4013,2726 4011,2723 4008,2720 4006,2718 4004,2715 4002,2711 4001,2708 3999,2705 3998,2702 3996,2698 3995,2695 3995,2691 3994,2688 3993,2684 3993,2681 3993,2677 3992,2677 3993,2677 3993,2673 3993,2670 3994,2666 3994,2663 3995,2659 3996,2656 3997,2652 3999,2649 4000,2646 4002,2643 4004,2640 4006,2637 4008,2634 4010,2631 4013,2629 4015,2626 4018,2624 4021,2622 4024,2619 4027,2618 4030,2616 4033,2614 4037,2613 4040,2612 4043,2611 4047,2610 4050,2609 4054,2608 4057,2608 4061,2608 4216,2607 4216,2608 4220,2608 4223,2608 4227,2609 4230,2609 4234,2610 4237,2611 4241,2612 4244,2614 4247,2615 4250,2617 4253,2619 4256,2621 4259,2623 4262,2625 4264,2628 4267,2630 4269,2633 4271,2636 4274,2639 4275,2642 4277,2645 4279,2648 4280,2652 4281,2655 4282,2658 4283,2662 4284,2665 4285,2669 4285,2672 4285,2676 4285,2677 Z M 4285,2746 L 4285,2746 Z M 3992,2607 L 3992,2607 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id126">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3992" y="2807" width="294" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4285,2877 L 4285,2877 4285,2881 4285,2884 4284,2888 4283,2891 4283,2895 4282,2898 4280,2902 4279,2905 4277,2908 4276,2912 4274,2915 4272,2918 4270,2920 4267,2923 4265,2926 4262,2928 4259,2931 4257,2933 4254,2935 4250,2937 4247,2938 4244,2940 4241,2941 4237,2943 4234,2944 4230,2944 4227,2945 4223,2946 4220,2946 4216,2946 4062,2946 4062,2946 4058,2946 4055,2946 4051,2945 4048,2944 4044,2944 4041,2943 4037,2941 4034,2940 4031,2938 4027,2937 4024,2935 4021,2933 4019,2931 4016,2928 4013,2926 4011,2923 4008,2920 4006,2918 4004,2915 4002,2911 4001,2908 3999,2905 3998,2902 3996,2898 3995,2895 3995,2891 3994,2888 3993,2884 3993,2881 3993,2877 3992,2877 3993,2877 3993,2873 3993,2870 3994,2866 3994,2863 3995,2859 3996,2856 3997,2852 3999,2849 4000,2846 4002,2843 4004,2840 4006,2837 4008,2834 4010,2831 4013,2829 4015,2826 4018,2824 4021,2822 4024,2819 4027,2818 4030,2816 4033,2814 4037,2813 4040,2812 4043,2811 4047,2810 4050,2809 4054,2808 4057,2808 4061,2808 4216,2807 4216,2808 4220,2808 4223,2808 4227,2809 4230,2809 4234,2810 4237,2811 4241,2812 4244,2814 4247,2815 4250,2817 4253,2819 4256,2821 4259,2823 4262,2825 4264,2828 4267,2830 4269,2833 4271,2836 4274,2839 4275,2842 4277,2845 4279,2848 4280,2852 4281,2855 4282,2858 4283,2862 4284,2865 4285,2869 4285,2872 4285,2876 4285,2877 Z M 4285,2946 L 4285,2946 Z M 3992,2807 L 3992,2807 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id127">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3992" y="3006" width="295" height="141"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4285,3076 L 4285,3076 4285,3080 4285,3083 4284,3087 4283,3090 4283,3094 4282,3097 4280,3101 4279,3104 4277,3107 4276,3111 4274,3114 4272,3117 4270,3119 4267,3122 4265,3125 4262,3127 4259,3130 4257,3132 4254,3134 4250,3136 4247,3137 4244,3139 4241,3140 4237,3142 4234,3143 4230,3143 4227,3144 4223,3145 4220,3145 4216,3145 4062,3145 4062,3145 4058,3145 4055,3145 4051,3144 4048,3143 4044,3143 4041,3142 4037,3140 4034,3139 4031,3137 4027,3136 4024,3134 4021,3132 4019,3130 4016,3127 4013,3125 4011,3122 4008,3119 4006,3117 4004,3114 4002,3110 4001,3107 3999,3104 3998,3101 3996,3097 3995,3094 3995,3090 3994,3087 3993,3083 3993,3080 3993,3076 3992,3076 3993,3076 3993,3072 3993,3069 3994,3065 3994,3062 3995,3058 3996,3055 3997,3051 3999,3048 4000,3045 4002,3042 4004,3039 4006,3036 4008,3033 4010,3030 4013,3028 4015,3025 4018,3023 4021,3021 4024,3018 4027,3017 4030,3015 4033,3013 4037,3012 4040,3011 4043,3010 4047,3009 4050,3008 4054,3007 4057,3007 4061,3007 4216,3006 4216,3007 4220,3007 4223,3007 4227,3008 4230,3008 4234,3009 4237,3010 4241,3011 4244,3013 4247,3014 4250,3016 4253,3018 4256,3020 4259,3022 4262,3024 4264,3027 4267,3029 4269,3032 4271,3035 4274,3038 4275,3041 4277,3044 4279,3047 4280,3051 4281,3054 4282,3057 4283,3061 4284,3064 4285,3068 4285,3071 4285,3075 4285,3076 Z M 4285,3145 L 4285,3145 Z M 3992,3006 L 3992,3006 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id128">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3745" y="11961" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4038,12031 L 4038,12031 4038,12035 4038,12038 4037,12042 4036,12045 4036,12049 4035,12052 4033,12056 4032,12059 4030,12062 4029,12066 4027,12069 4025,12072 4023,12074 4020,12077 4018,12080 4015,12082 4012,12085 4010,12087 4007,12089 4003,12091 4000,12092 3997,12094 3994,12095 3990,12097 3987,12098 3983,12098 3980,12099 3976,12100 3973,12100 3969,12100 3815,12100 3815,12100 3811,12100 3808,12100 3804,12099 3801,12098 3797,12098 3794,12097 3790,12095 3787,12094 3784,12092 3780,12091 3777,12089 3774,12087 3772,12085 3769,12082 3766,12080 3764,12077 3761,12074 3759,12072 3757,12069 3755,12065 3754,12062 3752,12059 3751,12056 3749,12052 3748,12049 3748,12045 3747,12042 3746,12038 3746,12035 3746,12031 3745,12031 3746,12031 3746,12027 3746,12024 3747,12020 3747,12017 3748,12013 3749,12010 3750,12006 3752,12003 3753,12000 3755,11997 3757,11994 3759,11991 3761,11988 3763,11985 3766,11983 3768,11980 3771,11978 3774,11976 3777,11973 3780,11972 3783,11970 3786,11968 3790,11967 3793,11966 3796,11965 3800,11964 3803,11963 3807,11962 3810,11962 3814,11962 3969,11961 3969,11962 3973,11962 3976,11962 3980,11963 3983,11963 3987,11964 3990,11965 3994,11966 3997,11968 4000,11969 4003,11971 4006,11973 4009,11975 4012,11977 4015,11979 4017,11982 4020,11984 4022,11987 4024,11990 4027,11993 4028,11996 4030,11999 4032,12002 4033,12006 4034,12009 4035,12012 4036,12016 4037,12019 4038,12023 4038,12026 4038,12030 4038,12031 Z M 4038,12100 L 4038,12100 Z M 3745,11961 L 3745,11961 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id129">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3745" y="12161" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4038,12231 L 4038,12231 4038,12235 4038,12238 4037,12242 4036,12245 4036,12249 4035,12252 4033,12256 4032,12259 4030,12262 4029,12266 4027,12269 4025,12272 4023,12274 4020,12277 4018,12280 4015,12282 4012,12285 4010,12287 4007,12289 4003,12291 4000,12292 3997,12294 3994,12295 3990,12297 3987,12298 3983,12298 3980,12299 3976,12300 3973,12300 3969,12300 3815,12300 3815,12300 3811,12300 3808,12300 3804,12299 3801,12298 3797,12298 3794,12297 3790,12295 3787,12294 3784,12292 3780,12291 3777,12289 3774,12287 3772,12285 3769,12282 3766,12280 3764,12277 3761,12274 3759,12272 3757,12269 3755,12265 3754,12262 3752,12259 3751,12256 3749,12252 3748,12249 3748,12245 3747,12242 3746,12238 3746,12235 3746,12231 3745,12231 3746,12231 3746,12227 3746,12224 3747,12220 3747,12217 3748,12213 3749,12210 3750,12206 3752,12203 3753,12200 3755,12197 3757,12194 3759,12191 3761,12188 3763,12185 3766,12183 3768,12180 3771,12178 3774,12176 3777,12173 3780,12172 3783,12170 3786,12168 3790,12167 3793,12166 3796,12165 3800,12164 3803,12163 3807,12162 3810,12162 3814,12162 3969,12161 3969,12162 3973,12162 3976,12162 3980,12163 3983,12163 3987,12164 3990,12165 3994,12166 3997,12168 4000,12169 4003,12171 4006,12173 4009,12175 4012,12177 4015,12179 4017,12182 4020,12184 4022,12187 4024,12190 4027,12193 4028,12196 4030,12199 4032,12202 4033,12206 4034,12209 4035,12212 4036,12216 4037,12219 4038,12223 4038,12226 4038,12230 4038,12231 Z M 4038,12300 L 4038,12300 Z M 3745,12161 L 3745,12161 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id130">
+ <rect class="BoundingBox" stroke="none" fill="none" x="3744" y="12361" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4038,12431 L 4038,12431 4038,12435 4038,12438 4037,12442 4036,12445 4036,12449 4035,12452 4033,12456 4032,12459 4030,12462 4029,12466 4027,12469 4025,12472 4023,12474 4020,12477 4018,12480 4015,12482 4012,12485 4010,12487 4007,12489 4003,12491 4000,12492 3997,12494 3994,12495 3990,12497 3987,12498 3983,12498 3980,12499 3976,12500 3973,12500 3969,12500 3815,12500 3815,12500 3811,12500 3808,12500 3804,12499 3801,12498 3797,12498 3794,12497 3790,12495 3787,12494 3784,12492 3780,12491 3777,12489 3774,12487 3772,12485 3769,12482 3766,12480 3764,12477 3761,12474 3759,12472 3757,12469 3755,12465 3754,12462 3752,12459 3751,12456 3749,12452 3748,12449 3748,12445 3747,12442 3746,12438 3746,12435 3746,12431 3745,12431 3746,12431 3746,12427 3746,12424 3747,12420 3747,12417 3748,12413 3749,12410 3750,12406 3752,12403 3753,12400 3755,12397 3757,12394 3759,12391 3761,12388 3763,12385 3766,12383 3768,12380 3771,12378 3774,12376 3777,12373 3780,12372 3783,12370 3786,12368 3790,12367 3793,12366 3796,12365 3800,12364 3803,12363 3807,12362 3810,12362 3814,12362 3969,12361 3969,12362 3973,12362 3976,12362 3980,12363 3983,12363 3987,12364 3990,12365 3994,12366 3997,12368 4000,12369 4003,12371 4006,12373 4009,12375 4012,12377 4015,12379 4017,12382 4020,12384 4022,12387 4024,12390 4027,12393 4028,12396 4030,12399 4032,12402 4033,12406 4034,12409 4035,12412 4036,12416 4037,12419 4038,12423 4038,12426 4038,12430 4038,12431 Z M 4038,12500 L 4038,12500 Z M 3745,12361 L 3745,12361 Z"/>
+ </g>
+ </g>
+ </g>
+ <g class="Group">
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id131">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4076" y="11964" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4369,12034 L 4369,12034 4369,12038 4369,12041 4368,12045 4367,12048 4367,12052 4366,12055 4364,12059 4363,12062 4361,12065 4360,12069 4358,12072 4356,12075 4354,12077 4351,12080 4349,12083 4346,12085 4343,12088 4341,12090 4338,12092 4334,12094 4331,12095 4328,12097 4325,12098 4321,12100 4318,12101 4314,12101 4311,12102 4307,12103 4304,12103 4300,12103 4146,12103 4146,12103 4142,12103 4139,12103 4135,12102 4132,12101 4128,12101 4125,12100 4121,12098 4118,12097 4115,12095 4111,12094 4108,12092 4105,12090 4103,12088 4100,12085 4097,12083 4095,12080 4092,12077 4090,12075 4088,12072 4086,12068 4085,12065 4083,12062 4082,12059 4080,12055 4079,12052 4079,12048 4078,12045 4077,12041 4077,12038 4077,12034 4076,12034 4077,12034 4077,12030 4077,12027 4078,12023 4078,12020 4079,12016 4080,12013 4081,12009 4083,12006 4084,12003 4086,12000 4088,11997 4090,11994 4092,11991 4094,11988 4097,11986 4099,11983 4102,11981 4105,11979 4108,11976 4111,11975 4114,11973 4117,11971 4121,11970 4124,11969 4127,11968 4131,11967 4134,11966 4138,11965 4141,11965 4145,11965 4300,11964 4300,11965 4304,11965 4307,11965 4311,11966 4314,11966 4318,11967 4321,11968 4325,11969 4328,11971 4331,11972 4334,11974 4337,11976 4340,11978 4343,11980 4346,11982 4348,11985 4351,11987 4353,11990 4355,11993 4358,11996 4359,11999 4361,12002 4363,12005 4364,12009 4365,12012 4366,12015 4367,12019 4368,12022 4369,12026 4369,12029 4369,12033 4369,12034 Z M 4369,12103 L 4369,12103 Z M 4076,11964 L 4076,11964 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id132">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4076" y="12164" width="294" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4369,12234 L 4369,12234 4369,12238 4369,12241 4368,12245 4367,12248 4367,12252 4366,12255 4364,12259 4363,12262 4361,12265 4360,12269 4358,12272 4356,12275 4354,12277 4351,12280 4349,12283 4346,12285 4343,12288 4341,12290 4338,12292 4334,12294 4331,12295 4328,12297 4325,12298 4321,12300 4318,12301 4314,12301 4311,12302 4307,12303 4304,12303 4300,12303 4146,12303 4146,12303 4142,12303 4139,12303 4135,12302 4132,12301 4128,12301 4125,12300 4121,12298 4118,12297 4115,12295 4111,12294 4108,12292 4105,12290 4103,12288 4100,12285 4097,12283 4095,12280 4092,12277 4090,12275 4088,12272 4086,12268 4085,12265 4083,12262 4082,12259 4080,12255 4079,12252 4079,12248 4078,12245 4077,12241 4077,12238 4077,12234 4076,12234 4077,12234 4077,12230 4077,12227 4078,12223 4078,12220 4079,12216 4080,12213 4081,12209 4083,12206 4084,12203 4086,12200 4088,12197 4090,12194 4092,12191 4094,12188 4097,12186 4099,12183 4102,12181 4105,12179 4108,12176 4111,12175 4114,12173 4117,12171 4121,12170 4124,12169 4127,12168 4131,12167 4134,12166 4138,12165 4141,12165 4145,12165 4300,12164 4300,12165 4304,12165 4307,12165 4311,12166 4314,12166 4318,12167 4321,12168 4325,12169 4328,12171 4331,12172 4334,12174 4337,12176 4340,12178 4343,12180 4346,12182 4348,12185 4351,12187 4353,12190 4355,12193 4358,12196 4359,12199 4361,12202 4363,12205 4364,12209 4365,12212 4366,12215 4367,12219 4368,12222 4369,12226 4369,12229 4369,12233 4369,12234 Z M 4369,12303 L 4369,12303 Z M 4076,12164 L 4076,12164 Z"/>
+ </g>
+ </g>
+ <g class="com.sun.star.drawing.CustomShape">
+ <g id="id133">
+ <rect class="BoundingBox" stroke="none" fill="none" x="4075" y="12364" width="295" height="140"/>
+ <path fill="rgb(66,131,139)" stroke="none" d="M 4369,12434 L 4369,12434 4369,12438 4369,12441 4368,12445 4367,12448 4367,12452 4366,12455 4364,12459 4363,12462 4361,12465 4360,12469 4358,12472 4356,12475 4354,12477 4351,12480 4349,12483 4346,12485 4343,12488 4341,12490 4338,12492 4334,12494 4331,12495 4328,12497 4325,12498 4321,12500 4318,12501 4314,12501 4311,12502 4307,12503 4304,12503 4300,12503 4146,12503 4146,12503 4142,12503 4139,12503 4135,12502 4132,12501 4128,12501 4125,12500 4121,12498 4118,12497 4115,12495 4111,12494 4108,12492 4105,12490 4103,12488 4100,12485 4097,12483 4095,12480 4092,12477 4090,12475 4088,12472 4086,12468 4085,12465 4083,12462 4082,12459 4080,12455 4079,12452 4079,12448 4078,12445 4077,12441 4077,12438 4077,12434 4076,12434 4077,12434 4077,12430 4077,12427 4078,12423 4078,12420 4079,12416 4080,12413 4081,12409 4083,12406 4084,12403 4086,12400 4088,12397 4090,12394 4092,12391 4094,12388 4097,12386 4099,12383 4102,12381 4105,12379 4108,12376 4111,12375 4114,12373 4117,12371 4121,12370 4124,12369 4127,12368 4131,12367 4134,12366 4138,12365 4141,12365 4145,12365 4300,12364 4300,12365 4304,12365 4307,12365 4311,12366 4314,12366 4318,12367 4321,12368 4325,12369 4328,12371 4331,12372 4334,12374 4337,12376 4340,12378 4343,12380 4346,12382 4348,12385 4351,12387 4353,12390 4355,12393 4358,12396 4359,12399 4361,12402 4363,12405 4364,12409 4365,12412 4366,12415 4367,12419 4368,12422 4369,12426 4369,12429 4369,12433 4369,12434 Z M 4369,12503 L 4369,12503 Z M 4076,12364 L 4076,12364 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/docs/report/test_configuration/vpp_mrr_configuration/index.rst b/docs/report/test_configuration/vpp_mrr_configuration/index.rst
index f783a404ba..af193dc709 100644
--- a/docs/report/test_configuration/vpp_mrr_configuration/index.rst
+++ b/docs/report/test_configuration/vpp_mrr_configuration/index.rst
@@ -7,6 +7,7 @@ VPP MRR
i) `FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_,
diff --git a/docs/report/test_configuration/vpp_mrr_configuration_2n_zn2/index.rst b/docs/report/test_configuration/vpp_mrr_configuration_2n_zn2/index.rst
new file mode 100644
index 0000000000..6e3cfc3102
--- /dev/null
+++ b/docs/report/test_configuration/vpp_mrr_configuration_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test configurations: i) `FD.io test executor vpp
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/test_configuration/vpp_performance_configuration/index.rst b/docs/report/test_configuration/vpp_performance_configuration/index.rst
index b6c6c8f645..f68acefdef 100644
--- a/docs/report/test_configuration/vpp_performance_configuration/index.rst
+++ b/docs/report/test_configuration/vpp_performance_configuration/index.rst
@@ -7,6 +7,7 @@ VPP Throughput
i) `FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_,
diff --git a/docs/report/test_configuration/vpp_performance_configuration_2n_zn2/index.rst b/docs/report/test_configuration/vpp_performance_configuration_2n_zn2/index.rst
new file mode 100644
index 0000000000..6e3cfc3102
--- /dev/null
+++ b/docs/report/test_configuration/vpp_performance_configuration_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test configurations: i) `FD.io test executor vpp
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/test_operational_data/vpp_performance_operational_data/index.rst b/docs/report/test_operational_data/vpp_performance_operational_data/index.rst
index 2bf2845f76..fd2023735f 100644
--- a/docs/report/test_operational_data/vpp_performance_operational_data/index.rst
+++ b/docs/report/test_operational_data/vpp_performance_operational_data/index.rst
@@ -11,6 +11,7 @@ executed across physical testbeds hosted in LF FD.io labs: 3n-hsw, 3n-skx,
i) `FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_,
diff --git a/docs/report/test_operational_data/vpp_performance_operational_data_2n_zn2/index.rst b/docs/report/test_operational_data/vpp_performance_operational_data_2n_zn2/index.rst
new file mode 100644
index 0000000000..6a1cbcd7bb
--- /dev/null
+++ b/docs/report/test_operational_data/vpp_performance_operational_data_2n_zn2/index.rst
@@ -0,0 +1,11 @@
+2n-zn2
+------
+
+.. note::
+
+ Data sources for reported test operational data: i) `FD.io test executor vpp
+ performance job 2n-zn2`_, ii) archived FD.io jobs test result `output files
+ <../../_static/archive/>`_.
+
+.. toctree::
+
diff --git a/docs/report/vpp_performance_tests/comparisons/index.rst b/docs/report/vpp_performance_tests/comparisons/index.rst
index f37e9fb651..9370d5669e 100644
--- a/docs/report/vpp_performance_tests/comparisons/index.rst
+++ b/docs/report/vpp_performance_tests/comparisons/index.rst
@@ -16,6 +16,4 @@ Comparisons
2n-clx_vs_3n-hsw_testbeds
3n-skx_vs_2n-skx_testbeds
nic_comparison
-
-..
soak_vs_ndr
diff --git a/docs/report/vpp_performance_tests/csit_release_notes.rst b/docs/report/vpp_performance_tests/csit_release_notes.rst
index 7392d1e4db..56cb2f3cc3 100644
--- a/docs/report/vpp_performance_tests/csit_release_notes.rst
+++ b/docs/report/vpp_performance_tests/csit_release_notes.rst
@@ -28,13 +28,23 @@ Changes in |csit-release|
- Added new NAT44 endpoint-dependent mode CPS tests that measure
connections per second with usage of TRex in stateful mode.
- NOTE: CPS measurement data will be added in two weeks.
+ UPD packet size is 64 bytes. Size of TCP control packets
+ is not configurable, please ignore the -64b- part of test names.
+
+ - Added new NAT44 endpoint-dependent mode PPS tests that measure
+ packets per second (control and data together) with usage of TRex
+ in stateful mode. UPD packet size is 64 bytes. Size of TCP
+ data packets is governed by the default MSS value, so most data packets
+ are 1460 bytes long, please ignore the -64b- part of test names.
+
+ - See :ref:`nat44_methodology` for more details.
- **IPSec async mode tests**: Added VPP performance tests for async crypto
engine.
- - **AMD 2n-zn2 testbed**: New physical testbed type installed in FD.io CSIT,
- VPP performance data will be added in upcoming weeks.
+ - **AMD 2n-zn2 testbed**: New physical testbed type installed in
+ FD.io CSIT, with VPP and DPDK performance data added to CSIT
+ trending and this report.
#. TEST FRAMEWORK
@@ -85,8 +95,8 @@ List of known issues in |csit-release| for VPP performance tests:
| | `VPP-1763 | commands in flight over socket), the VPP configuration for large scale tests (millions of messages) takes |
| | <https://jira.fd.io/browse/VPP-1763>`_ | too long. |
+----+-----------------------------------------+-----------------------------------------------------------------------------------------------------------+
-| 5 | `VPP-1675 | IPv4 IPSEC 9000B packet tests are failing as no packet is forwarded. |
-| | <https://jira.fd.io/browse/VPP-1675>`_ | Reason: chained buffers are not supported. |
+| 5 | `CSIT-1771 | IPv4 IPSEC 9000B packet tests had been failing when chained buffers were not supported. |
+| | <https://jira.fd.io/browse/CSIT-1771>`_ | This has been fixed on VPP side, but CSIT still needs to re-enable jumbo tests. |
+----+-----------------------------------------+-----------------------------------------------------------------------------------------------------------+
| 6 | `VPP-1934 | [i40e] Interfaces are not brought up from carrier-down. |
| | <https://jira.fd.io/browse/VPP-1934>`_ | In case of i40e -based interface (e.g Intel x700 series NIC) is bound to kernel driver (i40e) and is in |
diff --git a/docs/report/vpp_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst b/docs/report/vpp_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst
new file mode 100644
index 0000000000..2f14be0030
--- /dev/null
+++ b/docs/report/vpp_performance_tests/hdrh_packet_latency_by_percentile_graphs/2n_zn2.rst
@@ -0,0 +1,3 @@
+2n-zn2
+======
+
diff --git a/docs/report/vpp_performance_tests/packet_latency/container_memif-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/container_memif-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..b3504e36e3
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_latency/container_memif-2n-zn2-xxv710.rst
@@ -0,0 +1,194 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-memif-base-avf
+-----------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-memif-base-dpdk
+------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2memif-1dcr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-eth-2memif-1dcr" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-eth-2memif-1dcr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-eth-2memif-1dcr}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base-eth-2memif-1dcr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/container_memif.rst b/docs/report/vpp_performance_tests/packet_latency/container_memif.rst
index ab26ebf23d..aa5c06f19e 100644
--- a/docs/report/vpp_performance_tests/packet_latency/container_memif.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/container_memif.rst
@@ -14,4 +14,5 @@ CSIT source code for the test cases used for plots can be found in
container_memif-2n-skx-xxv710
container_memif-3n-skx-xxv710
container_memif-2n-clx-xxv710
+ container_memif-2n-zn2-xxv710
container_memif-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_latency/index.rst b/docs/report/vpp_performance_tests/packet_latency/index.rst
index 8644ec785a..fdbb8f3295 100644
--- a/docs/report/vpp_performance_tests/packet_latency/index.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/index.rst
@@ -34,6 +34,10 @@ Additional information about graph data:
.. note::
Test results have been generated by
+ `FD.io test executor vpp performance job 2n-skx`_,
+ `FD.io test executor vpp performance job 3n-skx`_,
+ `FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_ and
`FD.io test executor vpp performance job 3n-tsh`_ with RF
result files csit-vpp-perf-|srelease|-\*.zip
diff --git a/docs/report/vpp_performance_tests/packet_latency/ip4-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/ip4-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..cfa0f83180
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_latency/ip4-2n-zn2-xxv710.rst
@@ -0,0 +1,501 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-ip4routing-base-scale-avf
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-ip4base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-ip4base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-ip4base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-ip4base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale20k-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale200k-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4-ip4scale2m-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-features-avf
+--------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4base-nat44" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1-p1-s1.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1-p1-s1}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1-p1-s1}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-ip4scale1000-udpsrcscale15-nat44" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-base-scale-dpdk
+-----------------------------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-ip4base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-ip4base.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-ip4base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-ip4base}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale20k-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale200k-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m-rnd" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m-rnd.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m-rnd}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4-ip4scale2m-rnd}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-base-scale-dpdk
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4udp-ip4base-nat44" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4udp-nat44det-h1-p1-s1.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4udp-nat44det-h1-p1-s1}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-ethip4udp-nat44det-h1-p1-s1}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/ip4.rst b/docs/report/vpp_performance_tests/packet_latency/ip4.rst
index 4cc5a03c9a..abc88f3280 100644
--- a/docs/report/vpp_performance_tests/packet_latency/ip4.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/ip4.rst
@@ -14,5 +14,6 @@ CSIT source code for the test cases used for plots can be found in
ip4-2n-skx-xxv710
ip4-3n-skx-xxv710
ip4-2n-clx-xxv710
+ ip4-2n-zn2-xxv710
ip4-3n-hsw-xl710
ip4-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_latency/ip6-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/ip6-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..5e1e558edd
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_latency/ip6-2n-zn2-xxv710.rst
@@ -0,0 +1,235 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+78b-2t1c-ip6routing-base-scale-avf
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-dot1q-ip6base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-dot1q-ip6base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-dot1q-ip6base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-dot1q-ip6base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale20k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale20k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale20k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale20k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale200k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale200k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale200k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale200k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale2m" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale2m.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale2m}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-avf-ethip6-ip6scale2m}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+78b-2t1c-ip6routing-base-scale-dpdk
+-----------------------------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-dot1q-ip6base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-dot1q-ip6base.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-dot1q-ip6base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-dot1q-ip6base}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6base" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6base.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6base}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6base}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale20k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale20k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale20k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale20k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale200k" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale200k.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale200k}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale200k}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale2m" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale2m.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale2m}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-78b-2t1c-ethip6-ip6scale2m}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/ip6.rst b/docs/report/vpp_performance_tests/packet_latency/ip6.rst
index d9708872c5..c5ddebe5e8 100644
--- a/docs/report/vpp_performance_tests/packet_latency/ip6.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/ip6.rst
@@ -14,5 +14,6 @@ CSIT source code for the test cases used for plots can be found in
ip6-2n-skx-xxv710
ip6-3n-skx-xxv710
ip6-2n-clx-xxv710
+ ip6-2n-zn2-xxv710
ip6-3n-hsw-xl710
ip6-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_latency/l2-2n-clx-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/l2-2n-clx-xxv710.rst
index 1d2bb0bd41..365662c3b7 100644
--- a/docs/report/vpp_performance_tests/packet_latency/l2-2n-clx-xxv710.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/l2-2n-clx-xxv710.rst
@@ -77,26 +77,6 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
<iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch.html"></iframe>
<p><br></p>
</center>
@@ -258,26 +238,6 @@
\clearpage
- .. raw:: html
-
- <center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
.. raw:: html
<center>
diff --git a/docs/report/vpp_performance_tests/packet_latency/l2-2n-skx-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/l2-2n-skx-xxv710.rst
index 010adabb3b..e48f2f6a8f 100644
--- a/docs/report/vpp_performance_tests/packet_latency/l2-2n-skx-xxv710.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/l2-2n-skx-xxv710.rst
@@ -78,26 +78,6 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-gbp}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
<iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch.html"></iframe>
<p><br></p>
</center>
@@ -259,26 +239,6 @@
\clearpage
- .. raw:: html
-
- <center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-gbp}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
.. raw:: html
<center>
diff --git a/docs/report/vpp_performance_tests/packet_latency/l2-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/l2-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..05fbbfbeac
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_latency/l2-2n-zn2-xxv710.rst
@@ -0,0 +1,355 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-l2switching-base-scale-avf
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2patch}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale10kmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale10kmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale10kmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale10kmaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale100kmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale100kmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale100kmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale100kmaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale1mmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale1mmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale1mmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdscale1mmaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-base-scale-dpdk
+------------------------------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2patch" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2patch.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2patch}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2patch}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale10kmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale10kmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale10kmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale10kmaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale100kmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale100kmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale100kmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale100kmaclrn}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale1mmaclrn" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale1mmaclrn.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale1mmaclrn}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdscale1mmaclrn}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/l2.rst b/docs/report/vpp_performance_tests/packet_latency/l2.rst
index 5681a82ba9..d2bd61a706 100644
--- a/docs/report/vpp_performance_tests/packet_latency/l2.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/l2.rst
@@ -14,5 +14,6 @@ CSIT source code for the test cases used for plots can be found in
l2-2n-skx-xxv710
l2-3n-skx-xxv710
l2-2n-clx-xxv710
+ l2-2n-zn2-xxv710
l2-3n-hsw-xl710
l2-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_latency/nat44-2n-clx-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/nat44-2n-clx-xxv710.rst
index 336b577883..d4f3eb27b0 100644
--- a/docs/report/vpp_performance_tests/packet_latency/nat44-2n-clx-xxv710.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/nat44-2n-clx-xxv710.rst
@@ -97,7 +97,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758.html"></iframe>
<p><br></p>
</center>
@@ -106,8 +106,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
\end{figure}
.. raw:: latex
@@ -117,7 +117,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072.html"></iframe>
<p><br></p>
</center>
@@ -126,8 +126,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
\end{figure}
.. raw:: latex
@@ -183,7 +183,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
<p><br></p>
</center>
@@ -192,8 +192,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
\end{figure}
.. raw:: latex
@@ -203,7 +203,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir.html"></iframe>
<p><br></p>
</center>
@@ -212,8 +212,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
\end{figure}
.. raw:: latex
@@ -223,7 +223,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
<p><br></p>
</center>
@@ -232,8 +232,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
\end{figure}
.. raw:: latex
@@ -243,7 +243,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir.html"></iframe>
<p><br></p>
</center>
@@ -252,22 +252,39 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
- \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
\end{figure}
-.. raw:: latex
+..
+ .. raw:: latex
- \clearpage
+ \clearpage
-..
- 64b-2t1c-ethip4udp-nat44ed-dpdk
- -------------------------------
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
.. raw:: html
<center>
- <iframe id="" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
<p><br></p>
</center>
@@ -276,6 +293,6 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{}
- \label{fig:}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \label{fig:hdrh-lat-percentile-2n-clx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
\end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/nat44-2n-skx-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/nat44-2n-skx-xxv710.rst
index 2338ec1390..545df697c1 100644
--- a/docs/report/vpp_performance_tests/packet_latency/nat44-2n-skx-xxv710.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/nat44-2n-skx-xxv710.rst
@@ -97,7 +97,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758.html"></iframe>
<p><br></p>
</center>
@@ -106,8 +106,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
\end{figure}
.. raw:: latex
@@ -117,7 +117,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072.html"></iframe>
<p><br></p>
</center>
@@ -126,8 +126,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072}
\end{figure}
.. raw:: latex
@@ -183,7 +183,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
<p><br></p>
</center>
@@ -192,8 +192,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
\end{figure}
.. raw:: latex
@@ -203,7 +203,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir.html"></iframe>
<p><br></p>
</center>
@@ -212,8 +212,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir}
\end{figure}
.. raw:: latex
@@ -223,7 +223,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
<p><br></p>
</center>
@@ -232,8 +232,8 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
\end{figure}
.. raw:: latex
@@ -243,7 +243,7 @@
.. raw:: html
<center>
- <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir.html"></iframe>
<p><br></p>
</center>
@@ -252,22 +252,39 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
- \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir}
\end{figure}
-.. raw:: latex
+..
+ .. raw:: latex
- \clearpage
+ \clearpage
-..
- 64b-2t1c-ethip4udp-nat44ed-dpdk
- -------------------------------
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
.. raw:: html
<center>
- <iframe id="" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/.html"></iframe>
+ <iframe id="hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir.html"></iframe>
<p><br></p>
</center>
@@ -276,6 +293,6 @@
\begin{figure}[H]
\centering
\graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{}
- \label{fig:}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
+ \label{fig:hdrh-lat-percentile-2n-skx-25ge2p1xxv710-64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir}
\end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/vm_vhost-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_latency/vm_vhost-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..e9cceae47b
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_latency/vm_vhost-2n-zn2-xxv710.rst
@@ -0,0 +1,362 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-vhost-base-avf-testpmd
+-------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-dpdk-testpmd
+--------------------------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-avf-vpp
+---------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-dpdk-vpp
+----------------------------
+
+..
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \label{fig:hdrh-lat-percentile-2n-zn2-25ge2p1xxv710-64b-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_latency/vm_vhost.rst b/docs/report/vpp_performance_tests/packet_latency/vm_vhost.rst
index 5703c123bd..2ddca11558 100644
--- a/docs/report/vpp_performance_tests/packet_latency/vm_vhost.rst
+++ b/docs/report/vpp_performance_tests/packet_latency/vm_vhost.rst
@@ -16,5 +16,6 @@ CSIT source code for the test cases used for plots can be found in
vm_vhost-2n-skx-xxv710
vm_vhost-3n-skx-xxv710
vm_vhost-2n-clx-xxv710
+ vm_vhost-2n-zn2-xxv710
vm_vhost-3n-hsw-xl710
vm_vhost-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..309e91b4d7
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-cx556a.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-2t1c-memif-base-rdma-core
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..632a3e8d2d
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif-2n-zn2-xxv710.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-memif-base-avf
+-----------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-memif-base-dpdk
+------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif.rst
index 9c853f876e..c069cf628d 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/container_memif.rst
@@ -21,4 +21,6 @@ CSIT source code for the test cases used for plots can be found in
container_memif-3n-skx-xxv710
container_memif-2n-clx-xxv710
container_memif-2n-clx-cx556a
+ container_memif-2n-zn2-xxv710
+ container_memif-2n-zn2-cx556a
container_memif-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/index.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/index.rst
index 7b038cffde..aba4e91944 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/index.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/index.rst
@@ -133,6 +133,7 @@ Additional information about graph data:
`FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_ and
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..0b3156f67d
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-cx556a.rst
@@ -0,0 +1,157 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-2t1c-ip4routing-base-rdma-core
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-scale-rdma-core
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-features
+----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-x710.rst
new file mode 100644
index 0000000000..0a6337f79e
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-x710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+64b-2t1c-ip4routing-base-scale-[avf,dpdk]
+---------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr}
+ \label{fig:2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr}
+ \label{fig:2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..49b6974ddc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4-2n-zn2-xxv710.rst
@@ -0,0 +1,286 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-ip4routing-base-scale-avf
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-scale-avf-rnd
+---------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-base-scale-dpdk
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-ip4routing-scale-dpdk-rnd
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="111" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="112" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-features-ip4routing-base-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="221" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="222" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-features-ip4routing-base-dpdk
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="21" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="22" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst
index 8e75937fba..3caa76944e 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst
@@ -24,6 +24,9 @@ CSIT source code for the test cases used for plots can be found in
ip4-2n-clx-xxv710
ip4-2n-clx-x710
ip4-2n-clx-cx556a
+ ip4-2n-zn2-xxv710
+ ip4-2n-zn2-x710
+ ip4-2n-zn2-cx556a
ip4-3n-hsw-xl710
ip4-3n-tsh-x520
ip4-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..f2a29a7352
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-cx556a.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+78b-2t1c-ip6routing-base-scale-rdma-core
+----------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr}
+ \label{fig:2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr}
+ \label{fig:2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-x710.rst
new file mode 100644
index 0000000000..c7525ed7bc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-x710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+78b-2t1c-ip6routing-base-scale-[avf,dpdk]
+-----------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr}
+ \label{fig:2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr}
+ \label{fig:2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..c8e42c5cb5
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6-2n-zn2-xxv710.rst
@@ -0,0 +1,115 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+
+78b-2t1c-ip6routing-base-scale-avf
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr}
+ \label{fig:2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr}
+ \label{fig:2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+78b-2t1c-ip6routing-base-scale-dpdk
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst
index bf08aeb5fa..fed98dea84 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst
@@ -24,6 +24,9 @@ CSIT source code for the test cases used for plots can be found in
ip6-2n-clx-xxv710
ip6-2n-clx-x710
ip6-2n-clx-cx556a
+ ip6-2n-zn2-xxv710
+ ip6-2n-zn2-x710
+ ip6-2n-zn2-cx556a
ip6-3n-hsw-xl710
ip6-3n-tsh-x520
ip6-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..c46414af64
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-cx556a.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-2t1c-l2switching-base-rdma-core
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-scale-rdma-core
+------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-x710.rst
new file mode 100644
index 0000000000..6dad3a9edb
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-x710.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+64b-2t1c-l2switching-base-scale-avf
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr}
+ \label{fig:2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr}
+ \label{fig:2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-base-scale-dpdk
+------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr}
+ \label{fig:2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr}
+ \label{fig:2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..98250837ef
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2-2n-zn2-xxv710.rst
@@ -0,0 +1,200 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-l2switching-base-avf
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-base-scale-avf
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="121" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="122" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-base-dpdk
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-l2switching-base-scale-dpdk
+------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="21" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="22" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst
index 7f0a7ba5ef..bf865bb91e 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst
@@ -24,6 +24,9 @@ CSIT source code for the test cases used for plots can be found in
l2-2n-clx-xxv710
l2-2n-clx-x710
l2-2n-clx-cx556a
+ l2-2n-zn2-xxv710
+ l2-2n-zn2-x710
+ l2-2n-zn2-cx556a
l2-3n-hsw-xl710
l2-3n-tsh-x520
l2-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-clx-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-clx-xxv710.rst
deleted file mode 100644
index af002cab49..0000000000
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-clx-xxv710.rst
+++ /dev/null
@@ -1,287 +0,0 @@
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <script type="text/javascript">
-
- function getDocHeight(doc) {
- doc = doc || document;
- var body = doc.body, html = doc.documentElement;
- var height = Math.max( body.scrollHeight, body.offsetHeight,
- html.clientHeight, html.scrollHeight, html.offsetHeight );
- return height;
- }
-
- function setIframeHeight(id) {
- var ifrm = document.getElementById(id);
- var doc = ifrm.contentDocument? ifrm.contentDocument:
- ifrm.contentWindow.document;
- ifrm.style.visibility = 'hidden';
- ifrm.style.height = "10px"; // reset to minimal height ...
- // IE opt. for bing/msn needs a bit added or scrollbar appears
- ifrm.style.height = getDocHeight( doc ) + 4 + "px";
- ifrm.style.visibility = 'visible';
- }
-
- </script>
-
-2n-clx-xxv710
-~~~~~~~~~~~~~
-
-64b-nat44det-ip4routing-stl-bidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-64b-nat44ed-ip4routing-stl-unidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
- \end{figure}
-
-..
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="05n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="05p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="06n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="06p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
- \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
- \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-skx-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-skx-xxv710.rst
deleted file mode 100644
index 0889deca7a..0000000000
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-2n-skx-xxv710.rst
+++ /dev/null
@@ -1,287 +0,0 @@
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <script type="text/javascript">
-
- function getDocHeight(doc) {
- doc = doc || document;
- var body = doc.body, html = doc.documentElement;
- var height = Math.max( body.scrollHeight, body.offsetHeight,
- html.clientHeight, html.scrollHeight, html.offsetHeight );
- return height;
- }
-
- function setIframeHeight(id) {
- var ifrm = document.getElementById(id);
- var doc = ifrm.contentDocument? ifrm.contentDocument:
- ifrm.contentWindow.document;
- ifrm.style.visibility = 'hidden';
- ifrm.style.height = "10px"; // reset to minimal height ...
- // IE opt. for bing/msn needs a bit added or scrollbar appears
- ifrm.style.height = getDocHeight( doc ) + 4 + "px";
- ifrm.style.visibility = 'visible';
- }
-
- </script>
-
-2n-skx-xxv710
-~~~~~~~~~~~~~
-
-64b-nat44det-ip4routing-stl-bidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-64b-nat44ed-ip4routing-stl-unidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
- \end{figure}
-
-..
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="05n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="05p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="06n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="06p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
- \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
- \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-clx.rst
new file mode 100644
index 0000000000..ec56e7f4fc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44det-ip4routing-stl-bidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-skx.rst
new file mode 100644
index 0000000000..48e88f4040
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44det-ip4routing-stl-bidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir.rst
new file mode 100644
index 0000000000..e30d6685ae
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-det-bidir.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+Det BiDir
+~~~~~~~~~
+
+.. toctree::
+
+ nat44-det-bidir-2n-clx
+ nat44-det-bidir-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-clx.rst
new file mode 100644
index 0000000000..c0e55645fc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="07p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-skx.rst
new file mode 100644
index 0000000000..9704af80e8
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="07p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps.rst
new file mode 100644
index 0000000000..1a86b99e25
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-cps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED TCP CPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-tcp-cps-2n-clx
+ nat44-ed-tcp-cps-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-clx.rst
new file mode 100644
index 0000000000..77553db453
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="08n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-skx.rst
new file mode 100644
index 0000000000..266f5d5725
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="08n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps.rst
new file mode 100644
index 0000000000..7b86eabef4
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-tcp-pps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED TCP PPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-tcp-pps-2n-clx
+ nat44-ed-tcp-pps-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-clx.rst
new file mode 100644
index 0000000000..9139b280b3
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-skx.rst
new file mode 100644
index 0000000000..d7cf06e09e
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps.rst
new file mode 100644
index 0000000000..795d2d0d78
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-cps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UDP CPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-udp-cps-2n-clx
+ nat44-ed-udp-cps-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-clx.rst
new file mode 100644
index 0000000000..91600e6ddc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-skx.rst
new file mode 100644
index 0000000000..58d187ce46
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps.rst
new file mode 100644
index 0000000000..b02f0b28b3
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-udp-pps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UDP PPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-udp-pps-2n-clx
+ nat44-ed-udp-pps-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-clx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-clx.rst
new file mode 100644
index 0000000000..3893362c22
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-stl-unidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
+ \label{fig:2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-skx.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-skx.rst
new file mode 100644
index 0000000000..644e47470a
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-stl-unidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
+ \label{fig:2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir.rst
new file mode 100644
index 0000000000..2f1dd19725
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44-ed-unidir.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UniDir
+~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-unidir-2n-clx
+ nat44-ed-unidir-2n-skx
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44.rst
index 24b5c9be6c..8ba10c9777 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/nat44.rst
@@ -17,5 +17,9 @@ CSIT source code for the test cases used for plots can be found in
.. toctree::
- nat44-2n-clx-xxv710
- nat44-2n-skx-xxv710
+ nat44-det-bidir
+ nat44-ed-unidir
+ nat44-ed-udp-cps
+ nat44-ed-tcp-cps
+ nat44-ed-udp-pps
+ nat44-ed-tcp-pps
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..23c7bf3417
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-cx556a.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-2t1c-vhost-base-rdma-core-testpmd
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-rdma-core-vpp
+---------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr}
+ \label{fig:2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..c5382018a0
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost-2n-zn2-xxv710.rst
@@ -0,0 +1,200 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-2t1c-vhost-base-avf-testpmd
+-------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-avf-vpp
+---------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="111" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="112" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-dpdk-testpmd
+--------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-2t1c-vhost-base-dpdk-vpp
+----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr}
+ \label{fig:2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst
index aa2c548ccd..950b34dcca 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst
@@ -25,5 +25,7 @@ CSIT source code for the test cases used for plots can be found in
vm_vhost-3n-skx-x710
vm_vhost-2n-clx-xxv710
vm_vhost-2n-clx-cx556a
+ vm_vhost-2n-zn2-xxv710
+ vm_vhost-2n-zn2-cx556a
vm_vhost-3n-hsw-xl710
vm_vhost-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vts-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vts-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..0b297dc014
--- /dev/null
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vts-2n-zn2-xxv710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+114b-2t1c-vts-l2switching-base-dpdk
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr}
+ \label{fig:2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-pdr.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-pdr}
+ \label{fig:2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-pdr}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vts.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vts.rst
index 55eeafb3b1..2f35278482 100644
--- a/docs/report/vpp_performance_tests/packet_throughput_graphs/vts.rst
+++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vts.rst
@@ -20,3 +20,4 @@ CSIT source code for the test cases used for plots can be found in
vts-2n-skx-xxv710
vts-2n-clx-xxv710
+ vts-2n-zn2-xxv710
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..97516131cc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-cx556a.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-memif-base-rdma-core
+------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..a22ff46630
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif-2n-zn2-xxv710.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-memif-base-avf
+------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-memif-base-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-memif-base-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-memif-base-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-memif-base-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-memif-base-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-memif-base-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-memif-base-dpdk
+-------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-memif-base-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-memif-base-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-memif-base-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-memif-base-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-memif-base-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-memif-base-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif.rst
index b19627a675..15470595c3 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/container_memif.rst
@@ -23,4 +23,6 @@ CSIT source code for the test cases used for plots can be found in
container_memif-3n-skx-xxv710
container_memif-2n-clx-xxv710
container_memif-2n-clx-cx556a
+ container_memif-2n-zn2-xxv710
+ container_memif-2n-zn2-cx556a
container_memif-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/index.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/index.rst
index ebb270b9c8..bb184131e4 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/index.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/index.rst
@@ -40,6 +40,7 @@ Additional information about graph data:
`FD.io test executor vpp performance job 2n-skx`_,
`FD.io test executor vpp performance job 3n-skx`_,
`FD.io test executor vpp performance job 2n-clx`_,
+ `FD.io test executor vpp performance job 2n-zn2`_,
`FD.io test executor vpp performance job 3n-hsw`_,
`FD.io test executor vpp performance job 3n-tsh`_,
`FD.io test executor vpp performance job 2n-dnv`_ and
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..64c4bbfdee
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-cx556a.rst
@@ -0,0 +1,157 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-ip4routing-base-rdma-core
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ip4base-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ip4base-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ip4base-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ip4base-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ip4base-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ip4base-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-ip4routing-scale
+-------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-ip4routing-features
+----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ethip4-features-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ethip4-features-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ethip4-features-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-ethip4-features-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-ethip4-features-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-ethip4-features-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-x710.rst
new file mode 100644
index 0000000000..f8b940ba8e
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-x710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+64b-ip4routing-base-scale-[avf,dpdk]
+----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr-tsa}
+ \label{fig:2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr-tsa}
+ \label{fig:2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..08e345d826
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4-2n-zn2-xxv710.rst
@@ -0,0 +1,286 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-ip4routing-base-scale-avf
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-ip4routing-scale-avf-rnd
+----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-ip4routing-base-scale-dpdk
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-ip4routing-scale-dpdk-rnd
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="111" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="112" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-features-ip4routing-base-avf
+--------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="221" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="222" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-features-ip4routing-base-dpdk
+---------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="21" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="22" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4.rst
index 53ca89f9c1..64ebb65660 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip4.rst
@@ -26,6 +26,9 @@ CSIT source code for the test cases used for plots can be found in
ip4-2n-clx-xxv710
ip4-2n-clx-x710
ip4-2n-clx-cx556a
+ ip4-2n-zn2-xxv710
+ ip4-2n-zn2-x710
+ ip4-2n-zn2-cx556a
ip4-3n-hsw-xl710
ip4-3n-tsh-x520
ip4-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..7279f16757
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-cx556a.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+78b-ip6routing-base-scale-rdma-core
+-----------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-x710.rst
new file mode 100644
index 0000000000..ab4b80f0dc
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-x710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+78b-ip6routing-base-scale-[avf,dpdk]
+------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-ndr-tsa}
+ \label{fig:2n-zn2-x710-78b-ip6routing-base-scale-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr-tsa}
+ \label{fig:2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..479d757917
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6-2n-zn2-xxv710.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+78b-ip6routing-base-scale-avf
+-----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+78b-ip6routing-base-scale-dpdk
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6.rst
index 6a7298ad65..e1b680fbb4 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/ip6.rst
@@ -26,6 +26,9 @@ CSIT source code for the test cases used for plots can be found in
ip6-2n-clx-xxv710
ip6-2n-clx-x710
ip6-2n-clx-cx556a
+ ip6-2n-zn2-xxv710
+ ip6-2n-zn2-x710
+ ip6-2n-zn2-cx556a
ip6-3n-hsw-xl710
ip6-3n-tsh-x520
ip6-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..0ce31e80b8
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-cx556a.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-l2switching-base-rdma-core
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2switching-base-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2switching-base-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2switching-base-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2switching-base-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2switching-base-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2switching-base-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-l2switching-scale
+---------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-x710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-x710.rst
new file mode 100644
index 0000000000..bfbe232ab6
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-x710.rst
@@ -0,0 +1,115 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-x710
+~~~~~~~~~~~
+
+64b-l2switching-base-scale-avf
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-l2switching-base-scale-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-l2switching-base-scale-avf-ndr-tsa}
+ \label{fig:2n-zn2-x710-64b-l2switching-base-scale-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-l2switching-base-scale-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-l2switching-base-scale-avf-pdr-tsa}
+ \label{fig:2n-zn2-x710-64b-l2switching-base-scale-avf-pdr-tsa}
+ \end{figure}
+
+..
+ .. raw:: latex
+
+ \clearpage
+
+ 64b-l2switching-base-scale-dpdk
+ -------------------------------
+
+ .. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr-tsa}
+ \end{figure}
+
+ .. raw:: latex
+
+ \clearpage
+
+ .. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+ .. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..9e8a2bae20
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2-2n-zn2-xxv710.rst
@@ -0,0 +1,200 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-l2switching-base-avf
+------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-l2switching-base-scale-avf
+-------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="121" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="122" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-l2switching-base-dpdk
+-------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-l2switching-base-scale-dpdk
+-------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="21" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="22" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2.rst
index 5f2961c0f2..23eeea357a 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/l2.rst
@@ -26,6 +26,9 @@ CSIT source code for the test cases used for plots can be found in
l2-2n-clx-xxv710
l2-2n-clx-x710
l2-2n-clx-cx556a
+ l2-2n-zn2-xxv710
+ l2-2n-zn2-x710
+ l2-2n-zn2-cx556a
l2-3n-hsw-xl710
l2-3n-tsh-x520
l2-2n-dnv-x553
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-clx-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-clx-xxv710.rst
deleted file mode 100644
index 7111856875..0000000000
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-clx-xxv710.rst
+++ /dev/null
@@ -1,287 +0,0 @@
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <script type="text/javascript">
-
- function getDocHeight(doc) {
- doc = doc || document;
- var body = doc.body, html = doc.documentElement;
- var height = Math.max( body.scrollHeight, body.offsetHeight,
- html.clientHeight, html.scrollHeight, html.offsetHeight );
- return height;
- }
-
- function setIframeHeight(id) {
- var ifrm = document.getElementById(id);
- var doc = ifrm.contentDocument? ifrm.contentDocument:
- ifrm.contentWindow.document;
- ifrm.style.visibility = 'hidden';
- ifrm.style.height = "10px"; // reset to minimal height ...
- // IE opt. for bing/msn needs a bit added or scrollbar appears
- ifrm.style.height = getDocHeight( doc ) + 4 + "px";
- ifrm.style.visibility = 'visible';
- }
-
- </script>
-
-2n-clx-xxv710
-~~~~~~~~~~~~~
-
-64b-nat44det-ip4routing-stl-bidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-64b-nat44ed-ip4routing-stl-unidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
- \end{figure}
-
-..
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="05p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="05n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="06p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="06n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
- \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
- \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-skx-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-skx-xxv710.rst
deleted file mode 100644
index 0debee7853..0000000000
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-2n-skx-xxv710.rst
+++ /dev/null
@@ -1,287 +0,0 @@
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <script type="text/javascript">
-
- function getDocHeight(doc) {
- doc = doc || document;
- var body = doc.body, html = doc.documentElement;
- var height = Math.max( body.scrollHeight, body.offsetHeight,
- html.clientHeight, html.scrollHeight, html.offsetHeight );
- return height;
- }
-
- function setIframeHeight(id) {
- var ifrm = document.getElementById(id);
- var doc = ifrm.contentDocument? ifrm.contentDocument:
- ifrm.contentWindow.document;
- ifrm.style.visibility = 'hidden';
- ifrm.style.height = "10px"; // reset to minimal height ...
- // IE opt. for bing/msn needs a bit added or scrollbar appears
- ifrm.style.height = getDocHeight( doc ) + 4 + "px";
- ifrm.style.visibility = 'visible';
- }
-
- </script>
-
-2n-skx-xxv710
-~~~~~~~~~~~~~
-
-64b-nat44det-ip4routing-stl-bidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-64b-nat44ed-ip4routing-stl-unidir-avf
--------------------------------------
-
-.. raw:: html
-
- <center>
- <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
- \end{figure}
-
-.. raw:: latex
-
- \clearpage
-
-.. raw:: html
-
- <center>
- <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
-.. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
- \end{figure}
-
-..
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-cps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-udp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="05p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="05n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- 64b-nat44ed-ip4routing-tcp-stf-pps-avf
- --------------------------------------
-
- .. raw:: html
-
- <center>
- <iframe id="06p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
- \end{figure}
-
- .. raw:: latex
-
- \clearpage
-
- .. raw:: html
-
- <center>
- <iframe id="06n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa.html"></iframe>
- <p><br></p>
- </center>
-
- .. raw:: latex
-
- \begin{figure}[H]
- \centering
- \graphicspath{{../_build/_static/vpp/}}
- \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
- \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
- \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-clx.rst
new file mode 100644
index 0000000000..196b0daf40
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44det-ip4routing-stl-bidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-skx.rst
new file mode 100644
index 0000000000..e3f5050e20
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44det-ip4routing-stl-bidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="01n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir.rst
new file mode 100644
index 0000000000..e30d6685ae
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-det-bidir.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+Det BiDir
+~~~~~~~~~
+
+.. toctree::
+
+ nat44-det-bidir-2n-clx
+ nat44-det-bidir-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-clx.rst
new file mode 100644
index 0000000000..5b9cf42a0e
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="07n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-skx.rst
new file mode 100644
index 0000000000..f824b3bd21
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="07p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="07n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps.rst
new file mode 100644
index 0000000000..1a86b99e25
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-cps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED TCP CPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-tcp-cps-2n-clx
+ nat44-ed-tcp-cps-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-clx.rst
new file mode 100644
index 0000000000..7e2bd1ef82
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="08p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-skx.rst
new file mode 100644
index 0000000000..f73605b948
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-tcp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="08p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="08n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps.rst
new file mode 100644
index 0000000000..7b86eabef4
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-tcp-pps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED TCP PPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-tcp-pps-2n-clx
+ nat44-ed-tcp-pps-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-clx.rst
new file mode 100644
index 0000000000..d478318ef0
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-skx.rst
new file mode 100644
index 0000000000..af6e74ba40
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-cps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="03p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="03n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps.rst
new file mode 100644
index 0000000000..795d2d0d78
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-cps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UDP CPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-udp-cps-2n-clx
+ nat44-ed-udp-cps-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-clx.rst
new file mode 100644
index 0000000000..823e64829d
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-skx.rst
new file mode 100644
index 0000000000..bcb0907ab4
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-udp-stf-pps-avf
+--------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="04n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps.rst
new file mode 100644
index 0000000000..b02f0b28b3
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-udp-pps.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UDP PPS
+~~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-udp-pps-2n-clx
+ nat44-ed-udp-pps-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-clx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-clx.rst
new file mode 100644
index 0000000000..8d33548eff
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-clx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-clx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-stl-unidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
+ \label{fig:2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-skx.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-skx.rst
new file mode 100644
index 0000000000..d42cf8fb77
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir-2n-skx.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-skx-xxv710
+~~~~~~~~~~~~~
+
+64b-nat44ed-ip4routing-stl-unidir-avf
+-------------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="02p" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02n" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
+ \label{fig:2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir.rst
new file mode 100644
index 0000000000..2f1dd19725
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44-ed-unidir.rst
@@ -0,0 +1,12 @@
+
+.. raw:: latex
+
+ \clearpage
+
+ED UniDir
+~~~~~~~~~
+
+.. toctree::
+
+ nat44-ed-unidir-2n-clx
+ nat44-ed-unidir-2n-skx
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44.rst
index 9261737850..4dded04e5f 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/nat44.rst
@@ -19,5 +19,9 @@ CSIT source code for the test cases used for plots can be found in
.. toctree::
- nat44-2n-clx-xxv710
- nat44-2n-skx-xxv710
+ nat44-det-bidir
+ nat44-ed-unidir
+ nat44-ed-udp-cps
+ nat44-ed-tcp-cps
+ nat44-ed-udp-pps
+ nat44-ed-tcp-pps
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-cx556a.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-cx556a.rst
new file mode 100644
index 0000000000..030ff897e6
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-cx556a.rst
@@ -0,0 +1,114 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-cx556a
+~~~~~~~~~~~~~
+
+64b-vhost-base-rdma-core-testpmd
+--------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-vhost-base-rdma-core-vpp
+----------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="04" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-ndr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="05" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr-tsa}
+ \label{fig:2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..5063b8e850
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost-2n-zn2-xxv710.rst
@@ -0,0 +1,200 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+64b-vhost-base-avf-testpmd
+--------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="101" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-avf-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-avf-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-avf-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="102" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-avf-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-avf-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-avf-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-vhost-base-avf-vpp
+----------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="111" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="112" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-vhost-base-dpdk-testpmd
+---------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-dpdk-pdr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+64b-vhost-base-dpdk-vpp
+-----------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="11" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="12" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost.rst
index a3449a32c1..8efee3d779 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vm_vhost.rst
@@ -24,5 +24,7 @@ CSIT source code for the test cases used for plots can be found in
vm_vhost-3n-skx-x710
vm_vhost-2n-clx-xxv710
vm_vhost-2n-clx-cx556a
+ vm_vhost-2n-zn2-xxv710
+ vm_vhost-2n-zn2-cx556a
vm_vhost-3n-hsw-xl710
vm_vhost-3n-tsh-x520
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts-2n-zn2-xxv710.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts-2n-zn2-xxv710.rst
new file mode 100644
index 0000000000..7235315bd1
--- /dev/null
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts-2n-zn2-xxv710.rst
@@ -0,0 +1,71 @@
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <script type="text/javascript">
+
+ function getDocHeight(doc) {
+ doc = doc || document;
+ var body = doc.body, html = doc.documentElement;
+ var height = Math.max( body.scrollHeight, body.offsetHeight,
+ html.clientHeight, html.scrollHeight, html.offsetHeight );
+ return height;
+ }
+
+ function setIframeHeight(id) {
+ var ifrm = document.getElementById(id);
+ var doc = ifrm.contentDocument? ifrm.contentDocument:
+ ifrm.contentWindow.document;
+ ifrm.style.visibility = 'hidden';
+ ifrm.style.height = "10px"; // reset to minimal height ...
+ // IE opt. for bing/msn needs a bit added or scrollbar appears
+ ifrm.style.height = getDocHeight( doc ) + 4 + "px";
+ ifrm.style.visibility = 'visible';
+ }
+
+ </script>
+
+2n-zn2-xxv710
+~~~~~~~~~~~~~
+
+114b-vts-l2switching-base-dpdk
+------------------------------
+
+.. raw:: html
+
+ <center>
+ <iframe id="01" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-ndr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-ndr-tsa}
+ \label{fig:2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-ndr-tsa}
+ \end{figure}
+
+.. raw:: latex
+
+ \clearpage
+
+.. raw:: html
+
+ <center>
+ <iframe id="02" onload="setIframeHeight(this.id)" width="700" frameborder="0" scrolling="no" src="../../_static/vpp/2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-pdr-tsa.html"></iframe>
+ <p><br></p>
+ </center>
+
+.. raw:: latex
+
+ \begin{figure}[H]
+ \centering
+ \graphicspath{{../_build/_static/vpp/}}
+ \includegraphics[clip, trim=0cm 0cm 5cm 0cm, width=0.70\textwidth]{2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-pdr-tsa}
+ \label{fig:2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-pdr-tsa}
+ \end{figure}
diff --git a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts.rst b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts.rst
index 2b14739820..bfd266320d 100644
--- a/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts.rst
+++ b/docs/report/vpp_performance_tests/throughput_speedup_multi_core/vts.rst
@@ -21,3 +21,4 @@ CSIT source code for the test cases used for plots can be found in
vts-2n-skx-xxv710
vts-2n-clx-xxv710
+ vts-2n-zn2-xxv710
diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst
index 36550d4f5c..ee709d0f44 100644
--- a/docs/tag_documentation.rst
+++ b/docs/tag_documentation.rst
@@ -189,6 +189,36 @@ Scaling Tags
Traffic stream with 100 000 unique flows (100 IPs/users x 1000 UDP ports) in
one direction.
+.. topic:: HOSTS_1024
+
+ Stateless or stateful traffic stream with 1024 client source IP4 addresses,
+ usually with 63 flow differing in source port number. Could be UDP or TCP.
+ If NAT is used, the clients are inside. Outside IP range can differ.
+
+.. topic:: HOSTS_4096
+
+ Stateless or stateful traffic stream with 4096 client source IP4 addresses,
+ usually with 63 flow differing in source port number. Could be UDP or TCP.
+ If NAT is used, the clients are inside. Outside IP range can differ.
+
+.. topic:: HOSTS_16384
+
+ Stateless or stateful traffic stream with 16384 client source IP4 addresses,
+ usually with 63 flow differing in source port number. Could be UDP or TCP.
+ If NAT is used, the clients are inside. Outside IP range can differ.
+
+.. topic:: HOSTS_65536
+
+ Stateless or stateful traffic stream with 65536 client source IP4 addresses,
+ usually with 63 flow differing in source port number. Could be UDP or TCP.
+ If NAT is used, the clients are inside. Outside IP range can differ.
+
+.. topic:: HOSTS_262144
+
+ Stateless or stateful traffic stream with 262144 client source IP4 addresses
+ usually with 63 flow differing in source port number. Could be UDP or TCP.
+ If NAT is used, the clients are inside. Outside IP range can differ.
+
Test Category Tags
------------------
@@ -278,11 +308,12 @@ Test Type Tags
.. topic:: BASE
Baseline test cases, no encapsulation, no feature(s) configured in tests.
+ No scaling whatsoever, beyond minimum needed for RSS.
.. topic:: IP4BASE
IPv4 baseline test cases, no encapsulation, no feature(s) configured in
- tests.
+ tests. Minimal number of routes. Other quantities may be scaled.
.. topic:: IP6BASE
@@ -306,7 +337,8 @@ Test Type Tags
.. topic:: SCALE
- Scale test cases.
+ Scale test cases. Other tags specify which quantities are scaled.
+ Also applies if scaling is set on TG only (e.g. DUT works as IP4BASE).
.. topic:: ENCAP
@@ -316,21 +348,56 @@ Test Type Tags
At least one feature is configured in test cases. Use also feature tag(s).
+.. topic:: UDP
+
+ Tests which use any kind of UDP traffic (STL or ASTF profile).
+
.. topic:: TCP
- Tests which use TCP.
+ Tests which use any kind of TCP traffic (STL or ASTF profile).
+
+..
+ TODO: Should we define tags STL and ASTF?
+
+.. topic:: UDP_UDIR
+
+ Tests which use unidirectional UDP traffic (STL profile only).
+
+.. topic:: UDP_BIDIR
+
+ Tests which use bidirectional UDP traffic (STL profile only).
+
+.. topic:: UDP_CPS
+
+ Tests which measure connections per second on minimal UDP pseudoconnections.
+ This implies ASTF traffic profile is used.
+ This tag selects specific output processing in PAL.
.. topic:: TCP_CPS
- Performance tests which measure connections per second using http requests.
+ Tests which measure connections per second on empty TCP connections.
+ This implies ASTF traffic profile is used.
+ This tag selects specific output processing in PAL.
+
+.. topic:: UDP_PPS
-.. topic:: TCP_RPS
+ Tests which measure packets per second on lightweight UDP transactions.
+ This implies ASTF traffic profile is used.
+ This tag selects specific output processing in PAL.
- Performance tests which measure requests per second using http requests.
+.. topic:: TCP_PPS
+
+ Tests which measure packets per second on lightweight TCP transactions.
+ This implies ASTF traffic profile is used.
+ This tag selects specific output processing in PAL.
.. topic:: HTTP
- Tests which use HTTP.
+ Tests which use traffic formed of valid HTTP requests (and responses).
+
+..
+ TODO: Add HTTP tag to the current hoststack tests.
+ TODO: Document other tags already used by hoststack tests.
.. topic:: NF_DENSITY
@@ -867,23 +934,3 @@ Multi-Threading Tags
8 worker threads each pinned to a separate logical core within 4 dedicated
physical cores. 4 receive queues per interface. Main thread pinned to core
1.
-
-Honeycomb Tags
---------------
-
-.. topic:: HC_FUNC
-
- Honeycomb functional test cases.
-
-.. topic:: HC_NSH
-
- Honeycomb NSH test cases.
-
-.. topic:: HC_PERSIST
-
- Honeycomb persistence test cases.
-
-.. topic:: HC_REST_ONLY
-
- (Exclusion tag) Honeycomb test cases that cannot be run in Netconf mode
- using ODL client for Restfconf -> Netconf translation.
diff --git a/resources/api/vpp/supported_crcs.yaml b/resources/api/vpp/supported_crcs.yaml
index c3eb03226b..7e73a1fcca 100644
--- a/resources/api/vpp/supported_crcs.yaml
+++ b/resources/api/vpp/supported_crcs.yaml
@@ -88,6 +88,7 @@
det44_plugin_enable_disable: '0xfc4b5d73' # perf
det44_plugin_enable_disable_reply: '0xe8d4e804' # perf
det44_session_dump: '0xe45a3af7' # perf teardown
+ # TODO: Which test to run to verify det44_* messages?
# dhcp_proxy_dump / details # honeycomb
gbp_bridge_domain_add: '0x8454bfdf' # dev
gbp_bridge_domain_add_reply: '0xe8d4e804' # dev
@@ -208,8 +209,7 @@
nat_show_config_reply: '0x7903ef06' # dev teardown
nat_worker_details: '0x84bf06fc' # dev teardown
nat_worker_dump: '0x51077d14' # dev teardown
- # 6x^ tc01-64B-1c-ethip4udp-snat44det-h1-p1-s1-mrr
- # ^ nat44NOTscaleNOTsrc_user_1
+ # TODO: Which test to run to verify nat* messages?
nsim_configure: '0x16ed400f' # perf
nsim_configure_reply: '0xe8d4e804' # perf
nsim_output_feature_enable_disable: '0x3865946c' # perf
diff --git a/resources/libraries/bash/entry/bootstrap_verify_perf.sh b/resources/libraries/bash/entry/bootstrap_verify_perf.sh
index 2098f789cf..fc3344010b 100644
--- a/resources/libraries/bash/entry/bootstrap_verify_perf.sh
+++ b/resources/libraries/bash/entry/bootstrap_verify_perf.sh
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -48,5 +48,5 @@ select_tags || die
compose_pybot_arguments || die
run_pybot || die
untrap_and_unreserve_testbed || die
-copy_archives || die
+move_archives || die
die_on_pybot_error || die
diff --git a/resources/libraries/bash/entry/bootstrap_vpp_device.sh b/resources/libraries/bash/entry/bootstrap_vpp_device.sh
index ce887f4b5b..ef7bb08dfa 100755
--- a/resources/libraries/bash/entry/bootstrap_vpp_device.sh
+++ b/resources/libraries/bash/entry/bootstrap_vpp_device.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -46,5 +46,5 @@ activate_docker_topology || die
select_vpp_device_tags || die
compose_pybot_arguments || die
run_pybot || die
-copy_archives || die
+move_archives || die
die_on_pybot_error || die
diff --git a/resources/libraries/bash/entry/per_patch_device.sh b/resources/libraries/bash/entry/per_patch_device.sh
index 65577c2909..01e4de0089 100644
--- a/resources/libraries/bash/entry/per_patch_device.sh
+++ b/resources/libraries/bash/entry/per_patch_device.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -24,7 +24,7 @@ set -exuo pipefail
# + Everything needed to build VPP is already installed locally.
# Consequences:
# + The following directories (relative to VPP repo) are (re)created:
-# ++ csit_current, build_current, archive, csit/archive, csit_download_dir.
+# ++ csit_current, build_current, archives, csit/archives, csit_download_dir.
# TODO: Implement some kind of VPP build caching.
@@ -56,6 +56,6 @@ activate_docker_topology || die
select_vpp_device_tags || die
compose_pybot_arguments || die
run_pybot || die
-copy_archives || die
+move_archives || die
archive_test_results "csit_current" || die
die_on_pybot_error || die
diff --git a/resources/libraries/bash/entry/per_patch_perf.sh b/resources/libraries/bash/entry/per_patch_perf.sh
index deae8b0bd3..7b64aea67f 100644
--- a/resources/libraries/bash/entry/per_patch_perf.sh
+++ b/resources/libraries/bash/entry/per_patch_perf.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -27,7 +27,7 @@ set -exuo pipefail
# + Directories build_root, build and csit are reset during the run.
# + The following directories (relative to VPP repo) are (re)created:
# ++ csit_new, csit_parent, build_new, build_parent,
-# ++ archive, csit/archive, csit_download_dir.
+# ++ archives, csit/archives, csit_download_dir.
# TODO: Implement some kind of VPP build caching.
@@ -48,8 +48,6 @@ build_vpp_ubuntu_amd64 "CURRENT" || die
set_aside_commit_build_artifacts || die
build_vpp_ubuntu_amd64 "PARENT" || die
set_aside_parent_build_artifacts || die
-## Replace previous 4 lines with this to speed up testing.
-#download_builds "REPLACE_WITH_URL" || die
initialize_csit_dirs || die
get_test_code "${1-}" || die
get_test_tag_string || die
@@ -74,7 +72,6 @@ for ((iter=0; iter<iterations; iter++)); do
select_build "build_current" || die
check_download_dir || die
run_pybot || die
- copy_archives || die
archive_parse_test_results "csit_current/${iter}" || die
die_on_pybot_error || die
# TODO: Use less heavy way to avoid apt remove failures.
@@ -82,7 +79,6 @@ for ((iter=0; iter<iterations; iter++)); do
select_build "build_parent" || die
check_download_dir || die
run_pybot || die
- copy_archives || die
archive_parse_test_results "csit_parent/${iter}" || die
die_on_pybot_error || die
done
diff --git a/resources/libraries/bash/function/branch.sh b/resources/libraries/bash/function/branch.sh
index 96609c8227..ba9cc39c67 100644
--- a/resources/libraries/bash/function/branch.sh
+++ b/resources/libraries/bash/function/branch.sh
@@ -1,4 +1,4 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -57,6 +57,10 @@ function checkout_csit_for_vpp () {
set -exuo pipefail
case "${1}" in
+ "stable/2009")
+ # LTS branch
+ branch_id="origin/${1/stable\//oper-rls}_lts"
+ ;;
"stable/"*)
branch_id="origin/${1/stable\//oper-rls}"
;;
diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh
index 8e0ee97be1..15b7921bb3 100644
--- a/resources/libraries/bash/function/common.sh
+++ b/resources/libraries/bash/function/common.sh
@@ -145,7 +145,7 @@ function archive_tests () {
set -exuo pipefail
- tar c "${GENERATED_DIR}/tests" | xz -9e > "${ARCHIVE_DIR}/tests.tar.xz" || {
+ tar c "${GENERATED_DIR}/tests" | xz -3 > "${ARCHIVE_DIR}/tests.tar.xz" || {
die "Error creating archive of generated tests."
}
}
@@ -198,7 +198,8 @@ function common_dirs () {
# - RESOURCES_DIR - Path to existing CSIT subdirectory "resources".
# - TOOLS_DIR - Path to existing resources subdirectory "tools".
# - PYTHON_SCRIPTS_DIR - Path to existing tools subdirectory "scripts".
- # - ARCHIVE_DIR - Path to created CSIT subdirectory "archive".
+ # - ARCHIVE_DIR - Path to created CSIT subdirectory "archives".
+ # The name is chosen to match what ci-management expects.
# - DOWNLOAD_DIR - Path to created CSIT subdirectory "download_dir".
# - GENERATED_DIR - Path to created CSIT subdirectory "generated".
# Directories created if not present:
@@ -240,7 +241,7 @@ function common_dirs () {
die "Readlink failed."
}
- ARCHIVE_DIR=$(readlink -f "${CSIT_DIR}/archive") || {
+ ARCHIVE_DIR=$(readlink -f "${CSIT_DIR}/archives") || {
die "Readlink failed."
}
mkdir -p "${ARCHIVE_DIR}" || die "Mkdir failed."
@@ -263,6 +264,7 @@ function compose_pybot_arguments () {
# - TAGS - Array variable holding selected tag boolean expressions.
# - TOPOLOGIES_TAGS - Tag boolean expression filtering tests for topology.
# - TEST_CODE - The test selection string from environment or argument.
+ # - SELECTION_MODE - Selection criteria [test, suite, include, exclude].
# Variables set:
# - PYBOT_ARGS - String holding part of all arguments for pybot.
# - EXPANDED_TAGS - Array of strings pybot arguments compiled from tags.
@@ -289,33 +291,16 @@ function compose_pybot_arguments () {
if [[ ${tag} == "!"* ]]; then
EXPANDED_TAGS+=("--exclude" "${tag#$"!"}")
else
- EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}AND${tag}")
+ if [[ ${SELECTION_MODE} == "--test" ]]; then
+ EXPANDED_TAGS+=("--test" "${tag}")
+ else
+ EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}AND${tag}")
+ fi
fi
done
-}
-
-function copy_archives () {
-
- # Create additional archive if workspace variable is set.
- # This way if script is running in jenkins all will be
- # automatically archived to logs.fd.io.
- #
- # Variables read:
- # - WORKSPACE - Jenkins workspace, copy only if the value is not empty.
- # Can be unset, then it speeds up manual testing.
- # - ARCHIVE_DIR - Path to directory with content to be copied.
- # Directories updated:
- # - ${WORKSPACE}/archives/ - Created if does not exist.
- # Content of ${ARCHIVE_DIR}/ is copied here.
- # Functions called:
- # - die - Print to stderr and exit.
-
- set -exuo pipefail
-
- if [[ -n "${WORKSPACE-}" ]]; then
- mkdir -p "${WORKSPACE}/archives/" || die "Archives dir create failed."
- cp -rf "${ARCHIVE_DIR}"/* "${WORKSPACE}/archives" || die "Copy failed."
+ if [[ ${SELECTION_MODE} == "--test" ]]; then
+ EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}")
fi
}
@@ -460,6 +445,10 @@ function get_test_code () {
NODENESS="2n"
FLAVOR="skx"
;;
+ *"2n-zn2"*)
+ NODENESS="2n"
+ FLAVOR="zn2"
+ ;;
*"3n-skx"*)
NODENESS="3n"
FLAVOR="skx"
@@ -515,14 +504,20 @@ function get_test_tag_string () {
die "Unknown specification: ${TEST_CODE}"
esac
# Ignore lines not containing the trigger word.
- comment=$(fgrep "${trigger}" <<< "${GERRIT_EVENT_COMMENT_TEXT}") || true
+ comment=$(fgrep "${trigger}" <<< "${GERRIT_EVENT_COMMENT_TEXT}" || true)
# The vpp-csit triggers trail stuff we are not interested in.
# Removing them and trigger word: https://unix.stackexchange.com/a/13472
# (except relying on \s whitespace, \S non-whitespace and . both).
# The last string is concatenated, only the middle part is expanded.
cmd=("grep" "-oP" '\S*'"${trigger}"'\S*\s\K.+$') || die "Unset trigger?"
# On parsing error, TEST_TAG_STRING probably stays empty.
- TEST_TAG_STRING=$("${cmd[@]}" <<< "${comment}") || true
+ TEST_TAG_STRING=$("${cmd[@]}" <<< "${comment}" || true)
+ if [[ -z "${TEST_TAG_STRING-}" ]]; then
+ # Probably we got a base64 encoded comment.
+ comment=$(base64 --decode <<< "${GERRIT_EVENT_COMMENT_TEXT}" || true)
+ comment=$(fgrep "${trigger}" <<< "${comment}" || true)
+ TEST_TAG_STRING=$("${cmd[@]}" <<< "${comment}" || true)
+ fi
if [[ -n "${TEST_TAG_STRING-}" ]]; then
test_tag_array=(${TEST_TAG_STRING})
if [[ "${test_tag_array[0]}" == "icl" ]]; then
@@ -558,6 +553,47 @@ function installed () {
}
+function move_archives () {
+
+ # Move archive directory to top of workspace, if not already there.
+ #
+ # ARCHIVE_DIR is positioned relative to CSIT_DIR,
+ # but in some jobs CSIT_DIR is not same as WORKSPACE
+ # (e.g. under VPP_DIR). To simplify ci-management settings,
+ # we want to move the data to the top. We do not want simple copy,
+ # as ci-management is eager with recursive search.
+ #
+ # As some scripts may call this function multiple times,
+ # the actual implementation use copying and deletion,
+ # so the workspace gets "union" of contents (except overwrites on conflict).
+ # The consequence is empty ARCHIVE_DIR remaining after this call.
+ #
+ # As the source directory is emptied,
+ # the check for dirs being different is essential.
+ #
+ # Variables read:
+ # - WORKSPACE - Jenkins workspace, move only if the value is not empty.
+ # Can be unset, then it speeds up manual testing.
+ # - ARCHIVE_DIR - Path to directory with content to be moved.
+ # Directories updated:
+ # - ${WORKSPACE}/archives/ - Created if does not exist.
+ # Content of ${ARCHIVE_DIR}/ is moved.
+ # Functions called:
+ # - die - Print to stderr and exit.
+
+ set -exuo pipefail
+
+ if [[ -n "${WORKSPACE-}" ]]; then
+ target=$(readlink -f "${WORKSPACE}/archives")
+ if [[ "${target}" != "${ARCHIVE_DIR}" ]]; then
+ mkdir -p "${target}" || die "Archives dir create failed."
+ cp -rf "${ARCHIVE_DIR}"/* "${target}" || die "Copy failed."
+ rm -rf "${ARCHIVE_DIR}"/* || die "Delete failed."
+ fi
+ fi
+}
+
+
function reserve_and_cleanup_testbed () {
# Reserve physical testbed, perform cleanup, register trap to unreserve.
@@ -729,6 +765,7 @@ function select_tags () {
# - BASH_FUNCTION_DIR - Directory with input files to process.
# Variables set:
# - TAGS - Array of processed tag boolean expressions.
+ # - SELECTION_MODE - Selection criteria [test, suite, include, exclude].
set -exuo pipefail
@@ -756,7 +793,7 @@ function select_tags () {
*"3n-tsh"*)
default_nic="nic_intel-x520-da2"
;;
- *"3n-skx"* | *"2n-skx"* | *"2n-clx"*)
+ *"3n-skx"* | *"2n-skx"* | *"2n-clx"* | *"2n-zn2"*)
default_nic="nic_intel-xxv710"
;;
*"3n-hsw"* | *"mrr-daily-master")
@@ -768,48 +805,59 @@ function select_tags () {
esac
sed_nic_sub_cmd="sed s/\${default_nic}/${default_nic}/"
- sed_nics_sub_cmd="sed -e s/ANDxxv710/ANDnic_intel-xxv710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx710/ANDnic_intel-x710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDxl710/ANDnic_intel-xl710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx520-da2/ANDnic_intel-x520-da2/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx553/ANDnic_intel-x553/"
- sed_nics_sub_cmd+=" | sed -e s/ANDcx556a/ANDnic_mellanox-cx556a/"
- sed_nics_sub_cmd+=" | sed -e s/ANDvic1227/ANDnic_cisco-vic-1227/"
- sed_nics_sub_cmd+=" | sed -e s/ANDvic1385/ANDnic_cisco-vic-1385/"
+ awk_nics_sub_cmd=""
+ awk_nics_sub_cmd+='gsub("xxv710","25ge2p1xxv710");'
+ awk_nics_sub_cmd+='gsub("x710","10ge2p1x710");'
+ awk_nics_sub_cmd+='gsub("xl710","40ge2p1xl710");'
+ awk_nics_sub_cmd+='gsub("x520-da2","10ge2p1x520");'
+ awk_nics_sub_cmd+='gsub("x553","10ge2p1x553");'
+ awk_nics_sub_cmd+='gsub("cx556a","10ge2p1cx556a");'
+ awk_nics_sub_cmd+='gsub("vic1227","10ge2p1vic1227");'
+ awk_nics_sub_cmd+='gsub("vic1385","10ge2p1vic1385");'
+ awk_nics_sub_cmd+='if ($9 =="drv_avf") drv="avf-";'
+ awk_nics_sub_cmd+='else if ($9 =="drv_rdma_core") drv ="rdma-";'
+ awk_nics_sub_cmd+='else drv="";'
+ awk_nics_sub_cmd+='print "*"$7"-" drv $11"-"$5"."$3"-"$1"-" drv $11"-"$5'
+
# Tag file directory shorthand.
tfd="${JOB_SPECS_DIR}"
case "${TEST_CODE}" in
# Select specific performance tests based on jenkins job type variable.
*"ndrpdr-weekly"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mlr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"mrr-daily"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mrr_daily/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"mrr-weekly"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mrr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"report-iterative"* )
test_sets=(${TEST_TAG_STRING//:/ })
# Run only one test set per run
report_file=${test_sets[0]}.md
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/report_iterative/${NODENESS}-${FLAVOR}/${report_file} |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"report-coverage"* )
test_sets=(${TEST_TAG_STRING//:/ })
# Run only one test set per run
report_file=${test_sets[0]}.md
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/report_coverage/${NODENESS}-${FLAVOR}/${report_file} |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
* )
if [[ -z "${TEST_TAG_STRING-}" ]]; then
@@ -824,6 +872,7 @@ function select_tags () {
# If trigger contains tags, split them into array.
test_tag_array=(${TEST_TAG_STRING//:/ })
fi
+ SELECTION_MODE="--include"
;;
esac
@@ -834,7 +883,7 @@ function select_tags () {
# TODO: Add missing reasons here (if general) or where used (if specific).
case "${TEST_CODE}" in
*"2n-skx"*)
- test_tag_array+=("!ipsechw")
+ test_tag_array+=("!ipsec")
;;
*"3n-skx"*)
test_tag_array+=("!ipsechw")
@@ -842,7 +891,10 @@ function select_tags () {
test_tag_array+=("!3_node_double_link_topoANDnic_intel-xxv710")
;;
*"2n-clx"*)
- test_tag_array+=("!ipsechw")
+ test_tag_array+=("!ipsec")
+ ;;
+ *"2n-zn2"*)
+ test_tag_array+=("!ipsec")
;;
*"2n-dnv"*)
test_tag_array+=("!ipsechw")
@@ -865,10 +917,6 @@ function select_tags () {
test_tag_array+=("!ipsechw")
;;
*"3n-hsw"*)
- # TODO: Introduce NOIOMMU version of AVF tests.
- # TODO: Make (both) AVF tests work on Haswell,
- # or document why (some of) it is not possible.
- # https://github.com/FDio/vpp/blob/master/src/plugins/avf/README.md
test_tag_array+=("!drv_avf")
# All cards have access to QAT. But only one card (xl710)
# resides in same NUMA as QAT. Other cards must go over QPI
@@ -886,10 +934,8 @@ function select_tags () {
test_tag_array+=("${exclude_nics[@]/#/!NIC_}")
TAGS=()
+ prefix=""
- # We will prefix with perftest to prevent running other tests
- # (e.g. Functional).
- prefix="perftestAND"
set +x
if [[ "${TEST_CODE}" == "vpp-"* ]]; then
# Automatic prefixing for VPP jobs to limit the NIC used and
@@ -958,6 +1004,10 @@ function select_topology () {
TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_skx*.yaml )
TOPOLOGIES_TAGS="2_node_*_link_topo"
;;
+ "2n_zn2")
+ TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_zn2*.yaml )
+ TOPOLOGIES_TAGS="2_node_*_link_topo"
+ ;;
"3n_skx")
TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_skx*.yaml )
TOPOLOGIES_TAGS="3_node_*_link_topo"
@@ -1017,6 +1067,7 @@ function select_vpp_device_tags () {
# If trigger contains tags, split them into array.
test_tag_array=(${TEST_TAG_STRING//:/ })
fi
+ SELECTION_MODE="--include"
;;
esac
diff --git a/resources/libraries/bash/function/device.sh b/resources/libraries/bash/function/device.sh
index a94244e52c..8eb0702bbd 100644
--- a/resources/libraries/bash/function/device.sh
+++ b/resources/libraries/bash/function/device.sh
@@ -98,15 +98,11 @@ function bind_interfaces_to_driver () {
pci_path="/sys/bus/pci/devices/${ADDR}"
drv_path="/sys/bus/pci/drivers/${DRIVER}"
- vd=$(cat ${pci_path}/vendor ${pci_path}/device) || {
- die "Failed to retrieve interface details!"
- }
- set +e
- echo ${vd} | sudo tee ${drv_path}/new_id
- set -e
- echo ${ADDR} | sudo tee ${pci_path}/driver/unbind || {
- die "Failed to unbind interface ${ADDR}!"
- }
+ if [ -d "${pci_path}/driver" ]; then
+ echo ${ADDR} | sudo tee ${pci_path}/driver/unbind || {
+ die "Failed to unbind interface ${ADDR}!"
+ }
+ fi
echo ${ADDR} | sudo tee ${drv_path}/bind || {
die "Failed to bind interface ${ADDR}!"
}
diff --git a/resources/libraries/bash/function/per_patch.sh b/resources/libraries/bash/function/per_patch.sh
index 8b97780cec..43a3f971bf 100644
--- a/resources/libraries/bash/function/per_patch.sh
+++ b/resources/libraries/bash/function/per_patch.sh
@@ -128,39 +128,10 @@ function compare_test_results () {
}
-function download_builds () {
-
- # This is mostly useful only for Sandbox testing, to avoid recompilation.
- #
- # Arguments:
- # - ${1} - URL to download VPP builds from.
- # Variables read:
- # - VPP_DIR - Path to WORKSPACE, parent of created directories.
- # Directories created:
- # - archive - Ends up empty, not to be confused with ${ARCHIVE_DIR}.
- # - build_current - Holding built artifacts of the patch under test (PUT).
- # - built_parent - Holding built artifacts of parent of PUT.
- # Functions called:
- # - die - Print to stderr and exit, defined in common.sh
+function initialize_csit_dirs () {
set -exuo pipefail
- cd "${VPP_DIR}" || die "Change directory operation failed."
- dirs=("build-root" "build_parent" "build_current" "archive" "csit_current")
- rm -rf ${dirs[@]} || {
- die "Directory removal failed."
- }
- wget -N --progress=dot:giga "${1}" || die "Wget download failed."
- unzip "archive.zip" || die "Archive extraction failed."
- mv "archive/build_parent" ./ || die "Move operation failed."
- mv "archive/build_current" ./ || die "Move operation failed."
-}
-
-
-function initialize_csit_dirs () {
-
- # This could be in prepare_test, but download_builds also needs this.
- #
# Variables read:
# - VPP_DIR - Path to WORKSPACE, parent of created directories.
# Directories created:
diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py
index 3775d98377..faf861d89d 100644
--- a/resources/libraries/python/Constants.py
+++ b/resources/libraries/python/Constants.py
@@ -232,6 +232,9 @@ class Constants:
# Duration of one trial in MRR test.
PERF_TRIAL_DURATION = get_float_from_env(u"PERF_TRIAL_DURATION", 1.0)
+ # Whether to use latency streams in main search trials.
+ PERF_USE_LATENCY = get_pessimistic_bool_from_env(u"PERF_USE_LATENCY")
+
# Duration of one latency-specific trial in NDRPDR test.
PERF_TRIAL_LATENCY_DURATION = get_float_from_env(
u"PERF_TRIAL_LATENCY_DURATION", 5.0)
diff --git a/resources/libraries/python/MLRsearch/AbstractMeasurer.py b/resources/libraries/python/MLRsearch/AbstractMeasurer.py
index 622b8fdba6..82116f2e43 100644
--- a/resources/libraries/python/MLRsearch/AbstractMeasurer.py
+++ b/resources/libraries/python/MLRsearch/AbstractMeasurer.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -24,7 +24,7 @@ class AbstractMeasurer(metaclass=ABCMeta):
"""Perform trial measurement and return the result.
:param duration: Trial duration [s].
- :param transmit_rate: Target transmit rate [pps].
+ :param transmit_rate: Target transmit rate [tps].
:type duration: float
:type transmit_rate: float
:returns: Structure containing the result of the measurement.
diff --git a/resources/libraries/python/MLRsearch/AbstractSearchAlgorithm.py b/resources/libraries/python/MLRsearch/AbstractSearchAlgorithm.py
index f4f2d3f096..f2bf04e1b1 100644
--- a/resources/libraries/python/MLRsearch/AbstractSearchAlgorithm.py
+++ b/resources/libraries/python/MLRsearch/AbstractSearchAlgorithm.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -30,16 +30,19 @@ class AbstractSearchAlgorithm(metaclass=ABCMeta):
@abstractmethod
def narrow_down_ndr_and_pdr(
- self, fail_rate, line_rate, packet_loss_ratio):
+ self, min_rate, max_rate, packet_loss_ratio):
"""Perform measurements to narrow down intervals, return them.
This will be renamed when custom loss ratio lists are supported.
- :param fail_rate: Minimal target transmit rate [pps].
- :param line_rate: Maximal target transmit rate [pps].
+ :param min_rate: Minimal target transmit rate [tps].
+ Usually, tests are set to fail if search reaches this or below.
+ :param max_rate: Maximal target transmit rate [tps].
+ Usually computed from line rate and various other limits,
+ to prevent failures or duration stretching in Traffic Generator.
:param packet_loss_ratio: Fraction of packets lost, for PDR [1].
- :type fail_rate: float
- :type line_rate: float
+ :type min_rate: float
+ :type max_rate: float
:type packet_loss_ratio: float
:returns: Structure containing narrowed down intervals
and their measurements.
diff --git a/resources/libraries/python/MLRsearch/MultipleLossRatioSearch.py b/resources/libraries/python/MLRsearch/MultipleLossRatioSearch.py
index 2db65ef755..87dc784cbc 100644
--- a/resources/libraries/python/MLRsearch/MultipleLossRatioSearch.py
+++ b/resources/libraries/python/MLRsearch/MultipleLossRatioSearch.py
@@ -157,7 +157,7 @@ class MultipleLossRatioSearch(AbstractSearchAlgorithm):
:returns: The relative width of double logarithmic size.
:rtype: float
"""
- return 1.999 * relative_width - relative_width * relative_width
+ return 1.99999 * relative_width - relative_width * relative_width
# The number should be 2.0, but we want to avoid rounding errors,
# and ensure half of double is not larger than the original value.
@@ -255,52 +255,50 @@ class MultipleLossRatioSearch(AbstractSearchAlgorithm):
1.0 - MultipleLossRatioSearch.half_relative_width(relative_width)
)
- def narrow_down_ndr_and_pdr(
- self, minimum_transmit_rate, maximum_transmit_rate,
- packet_loss_ratio):
+ def narrow_down_ndr_and_pdr(self, min_rate, max_rate, packet_loss_ratio):
"""Perform initial phase, create state object, proceed with next phases.
- :param minimum_transmit_rate: Minimal target transmit rate [pps].
- :param maximum_transmit_rate: Maximal target transmit rate [pps].
+ :param min_rate: Minimal target transmit rate [tps].
+ :param max_rate: Maximal target transmit rate [tps].
:param packet_loss_ratio: Fraction of packets lost, for PDR [1].
- :type minimum_transmit_rate: float
- :type maximum_transmit_rate: float
+ :type min_rate: float
+ :type max_rate: float
:type packet_loss_ratio: float
:returns: Structure containing narrowed down intervals
and their measurements.
:rtype: NdrPdrResult.NdrPdrResult
:raises RuntimeError: If total duration is larger than timeout.
"""
- minimum_transmit_rate = float(minimum_transmit_rate)
- maximum_transmit_rate = float(maximum_transmit_rate)
+ minimum_transmit_rate = float(min_rate)
+ maximum_transmit_rate = float(max_rate)
packet_loss_ratio = float(packet_loss_ratio)
- line_measurement = self.measurer.measure(
+ max_measurement = self.measurer.measure(
self.initial_trial_duration, maximum_transmit_rate)
initial_width_goal = self.final_relative_width
for _ in range(self.number_of_intermediate_phases):
initial_width_goal = self.double_relative_width(initial_width_goal)
max_lo = maximum_transmit_rate * (1.0 - initial_width_goal)
- mrr = max(
- minimum_transmit_rate, min(max_lo, line_measurement.receive_rate)
- )
+ mrr = max(minimum_transmit_rate, min(
+ max_lo, max_measurement.relative_receive_rate
+ ))
mrr_measurement = self.measurer.measure(
self.initial_trial_duration, mrr
)
# Attempt to get narrower width.
if mrr_measurement.loss_fraction > 0.0:
max2_lo = mrr * (1.0 - initial_width_goal)
- mrr2 = min(max2_lo, mrr_measurement.receive_rate)
+ mrr2 = min(max2_lo, mrr_measurement.relative_receive_rate)
else:
mrr2 = mrr / (1.0 - initial_width_goal)
if minimum_transmit_rate < mrr2 < maximum_transmit_rate:
- line_measurement = mrr_measurement
+ max_measurement = mrr_measurement
mrr_measurement = self.measurer.measure(
self.initial_trial_duration, mrr2)
if mrr2 > mrr:
- line_measurement, mrr_measurement = \
- (mrr_measurement, line_measurement)
+ max_measurement, mrr_measurement = \
+ (mrr_measurement, max_measurement)
starting_interval = ReceiveRateInterval(
- mrr_measurement, line_measurement)
+ mrr_measurement, max_measurement)
starting_result = NdrPdrResult(starting_interval, starting_interval)
state = self.ProgressState(
starting_result, self.number_of_intermediate_phases,
diff --git a/resources/libraries/python/MLRsearch/ReceiveRateMeasurement.py b/resources/libraries/python/MLRsearch/ReceiveRateMeasurement.py
index 31a6f8202e..c732e66026 100644
--- a/resources/libraries/python/MLRsearch/ReceiveRateMeasurement.py
+++ b/resources/libraries/python/MLRsearch/ReceiveRateMeasurement.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -17,18 +17,39 @@
class ReceiveRateMeasurement:
"""Structure defining the result of single Rr measurement."""
- def __init__(self, duration, target_tr, transmit_count, loss_count):
+ def __init__(
+ self, duration, target_tr, transmit_count, loss_count,
+ approximated_duration=0.0, partial_transmit_count=0):
"""Constructor, normalize primary and compute secondary quantities.
+ If approximated_duration is nonzero, it is stored.
+ If approximated_duration is zero, duration value is stored.
+ Either way, additional secondary quantities are computed
+ from the store value.
+
+ If there is zero transmit_count, fractions are set to zero.
+
+ In some cases, traffic generator does not attempt all the needed
+ transactions. In that case, nonzero partial_transmit_count
+ holds (an estimate of) count of the actually attempted transactions.
+ This is used to populate some secondary quantities.
+
+ TODO: Use None instead of zero?
+
:param duration: Measurement duration [s].
:param target_tr: Target transmit rate [pps].
If bidirectional traffic is measured, this is bidirectional rate.
:param transmit_count: Number of packets transmitted [1].
:param loss_count: Number of packets transmitted but not received [1].
+ :param approximated_duration: Estimate of the actual time of the trial.
+ :param partial_transmit_count: Estimate count of actually attempted
+ transactions.
:type duration: float
:type target_tr: float
:type transmit_count: int
:type loss_count: int
+ :type approximated_duration: float
+ :type partial_transmit_count: int
"""
self.duration = float(duration)
self.target_tr = float(target_tr)
@@ -38,8 +59,41 @@ class ReceiveRateMeasurement:
self.transmit_rate = transmit_count / self.duration
self.loss_rate = loss_count / self.duration
self.receive_rate = self.receive_count / self.duration
- self.loss_fraction = float(self.loss_count) / self.transmit_count
- # TODO: Do we want to store also the real time (duration + overhead)?
+ self.loss_fraction = (
+ float(self.loss_count) / self.transmit_count
+ if self.transmit_count > 0 else 1.0
+ )
+ self.receive_fraction = (
+ float(self.receive_count) / self.transmit_count
+ if self.transmit_count > 0 else 0.0
+ )
+ self.approximated_duration = (
+ float(approximated_duration) if approximated_duration
+ else self.duration
+ )
+ self.approximated_receive_rate = (
+ self.receive_count / self.approximated_duration
+ if self.approximated_duration > 0.0 else 0.0
+ )
+ # If the traffic generator is unreliable and sends less packets,
+ # the absolute receive rate might be too low for next target.
+ self.partial_transmit_count = (
+ int(partial_transmit_count) if partial_transmit_count
+ else self.transmit_count
+ )
+ self.partial_receive_fraction = (
+ float(self.receive_count) / self.partial_transmit_count
+ if self.partial_transmit_count > 0 else 0.0
+ )
+ self.partial_receive_rate = (
+ self.target_tr * self.partial_receive_fraction
+ )
+ # We use relative packet ratios in order to support cases
+ # where target_tr is in transactions per second,
+ # but there are multiple packets per transaction.
+ self.relative_receive_rate = (
+ self.target_tr * self.receive_count / self.transmit_count
+ )
def __str__(self):
"""Return string reporting input and loss fraction."""
@@ -51,4 +105,6 @@ class ReceiveRateMeasurement:
return f"ReceiveRateMeasurement(duration={self.duration!r}," \
f"target_tr={self.target_tr!r}," \
f"transmit_count={self.transmit_count!r}," \
- f"loss_count={self.loss_count!r})"
+ f"loss_count={self.loss_count!r}," \
+ f"approximated_duration={self.approximated_duration!r}," \
+ f"partial_transmit_count={self.partial_transmit_count!r})"
diff --git a/resources/libraries/python/NATUtil.py b/resources/libraries/python/NATUtil.py
index 620e14aea1..36f9da3994 100644
--- a/resources/libraries/python/NATUtil.py
+++ b/resources/libraries/python/NATUtil.py
@@ -96,6 +96,10 @@ class NATUtil:
flag=u"NAT_IS_NONE"):
"""Set NAT44 address range.
+ The return value is a callable (zero argument Python function)
+ which can be used to reset NAT state, so repeated trial measurements
+ hit the same slow path.
+
:param node: DUT node.
:param start_ip: IP range start.
:param end_ip: IP range end.
@@ -106,6 +110,8 @@ class NATUtil:
:type end_ip: str
:type vrf_id: int
:type flag: str
+ :returns: Resetter of the NAT state.
+ :rtype: Callable[[], None]
"""
cmd = u"nat44_add_del_address_range"
err_msg = f"Failed to set NAT44 address range on host {node[u'host']}"
@@ -120,6 +126,18 @@ class NATUtil:
with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
+ # A closure, accessing the variables above.
+ def resetter():
+ """Delete and re-add the NAT range setting."""
+ with PapiSocketExecutor(node) as papi_exec:
+ args_in[u"is_add"] = False
+ papi_exec.add(cmd, **args_in)
+ args_in[u"is_add"] = True
+ papi_exec.add(cmd, **args_in)
+ papi_exec.get_replies(err_msg)
+
+ return resetter
+
@staticmethod
def show_nat_config(node):
"""Show the NAT configuration.
@@ -279,6 +297,10 @@ class NATUtil:
def set_det44_mapping(node, ip_in, subnet_in, ip_out, subnet_out):
"""Set DET44 mapping.
+ The return value is a callable (zero argument Python function)
+ which can be used to reset NAT state, so repeated trial measurements
+ hit the same slow path.
+
:param node: DUT node.
:param ip_in: Inside IP.
:param subnet_in: Inside IP subnet.
@@ -303,6 +325,18 @@ class NATUtil:
with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
+ # A closure, accessing the variables above.
+ def resetter():
+ """Delete and re-add the deterministic NAT mapping."""
+ with PapiSocketExecutor(node) as papi_exec:
+ args_in[u"is_add"] = False
+ papi_exec.add(cmd, **args_in)
+ args_in[u"is_add"] = True
+ papi_exec.add(cmd, **args_in)
+ papi_exec.get_replies(err_msg)
+
+ return resetter
+
@staticmethod
def get_det44_mapping(node):
"""Get DET44 mapping data.
@@ -325,14 +359,12 @@ class NATUtil:
def get_det44_sessions_number(node):
"""Get number of established DET44 sessions from actual DET44 mapping
data.
-
:param node: DUT node.
:type node: dict
:returns: Number of established DET44 sessions.
:rtype: int
"""
det44_data = NATUtil.get_det44_mapping(node)
-
return det44_data.get(u"ses_num", 0)
@staticmethod
diff --git a/resources/libraries/python/PLRsearch/PLRsearch.py b/resources/libraries/python/PLRsearch/PLRsearch.py
index ec58fbd10f..226b482d76 100644
--- a/resources/libraries/python/PLRsearch/PLRsearch.py
+++ b/resources/libraries/python/PLRsearch/PLRsearch.py
@@ -54,7 +54,7 @@ class PLRsearch:
def __init__(
self, measurer, trial_duration_per_trial, packet_loss_ratio_target,
- trial_number_offset=0, timeout=1800.0, trace_enabled=False):
+ trial_number_offset=0, timeout=7200.0, trace_enabled=False):
"""Store rate measurer and additional parameters.
The measurer must never report negative loss count.
@@ -205,7 +205,7 @@ class PLRsearch:
if (trial_number - self.trial_number_offset) <= 1:
next_load = max_rate
elif (trial_number - self.trial_number_offset) <= 3:
- next_load = (measurement.receive_rate / (
+ next_load = (measurement.relative_receive_rate / (
1.0 - self.packet_loss_ratio_target))
else:
next_load = (avg1 + avg2) / 2.0
@@ -439,7 +439,7 @@ class PLRsearch:
:param lfit_func: Fitting function, typically lfit_spread or lfit_erf.
:param trial_result_list: List of trial measurement results.
:param mrr: The mrr parameter for the fitting function.
- :param spread: The spread parameter for the fittinmg function.
+ :param spread: The spread parameter for the fitting function.
:type trace: function (str, object) -> None
:type lfit_func: Function from 3 floats to float.
:type trial_result_list: list of MLRsearch.ReceiveRateMeasurement
@@ -455,20 +455,21 @@ class PLRsearch:
trace(u"for tr", result.target_tr)
trace(u"lc", result.loss_count)
trace(u"d", result.duration)
- log_avg_loss_per_second = lfit_func(
+ # _rel_ values use units of target_tr (transactions per second).
+ log_avg_rel_loss_per_second = lfit_func(
trace, result.target_tr, mrr, spread
)
- log_avg_loss_per_trial = (
- log_avg_loss_per_second + math.log(result.duration)
+ # _abs_ values use units of loss count (maybe packets).
+ # There can be multiple packets per transaction.
+ log_avg_abs_loss_per_trial = log_avg_rel_loss_per_second + math.log(
+ result.transmit_count / result.target_tr
)
- # Poisson probability computation works nice for logarithms.
- log_trial_likelihood = (
- result.loss_count * log_avg_loss_per_trial
- - math.exp(log_avg_loss_per_trial)
- )
- log_trial_likelihood -= math.lgamma(1 + result.loss_count)
+ # Geometric probability computation for logarithms.
+ log_trial_likelihood = log_plus(0.0, -log_avg_abs_loss_per_trial)
+ log_trial_likelihood *= -result.loss_count
+ log_trial_likelihood -= log_plus(0.0, +log_avg_abs_loss_per_trial)
log_likelihood += log_trial_likelihood
- trace(u"avg_loss_per_trial", math.exp(log_avg_loss_per_trial))
+ trace(u"avg_loss_per_trial", math.exp(log_avg_abs_loss_per_trial))
trace(u"log_trial_likelihood", log_trial_likelihood)
return log_likelihood
diff --git a/resources/libraries/python/PapiExecutor.py b/resources/libraries/python/PapiExecutor.py
index 46fe5d583b..f4d01704b3 100644
--- a/resources/libraries/python/PapiExecutor.py
+++ b/resources/libraries/python/PapiExecutor.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -23,6 +23,8 @@ import subprocess
import sys
import tempfile
import time
+from collections import UserDict
+
from pprint import pformat
from robot.api import logger
@@ -63,11 +65,11 @@ def dictize(obj):
"""
if not hasattr(obj, u"_asdict"):
return obj
- ret = obj._asdict()
- old_get = ret.__getitem__
+ overriden = UserDict(obj._asdict())
+ old_get = overriden.__getitem__
new_get = lambda self, key: dictize(old_get(self, key))
- ret.__getitem__ = new_get
- return ret
+ overriden.__getitem__ = new_get
+ return overriden
class PapiSocketExecutor:
diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py
index 12c5271873..23337b2848 100644
--- a/resources/libraries/python/TrafficGenerator.py
+++ b/resources/libraries/python/TrafficGenerator.py
@@ -67,7 +67,7 @@ class TGDropRateSearchImpl(DropRateSearch):
def measure_loss(
self, rate, frame_size, loss_acceptance, loss_acceptance_type,
- traffic_profile, skip_warmup=False):
+ traffic_profile):
"""Runs the traffic and evaluate the measured results.
:param rate: Offered traffic load.
@@ -76,13 +76,11 @@ class TGDropRateSearchImpl(DropRateSearch):
:param loss_acceptance_type: Type of permitted loss.
:param traffic_profile: Module name as a traffic profile identifier.
See GPL/traffic_profiles/trex for implemented modules.
- :param skip_warmup: Start TRex without warmup traffic if true.
:type rate: float
:type frame_size: str
:type loss_acceptance: float
:type loss_acceptance_type: LossAcceptanceType
:type traffic_profile: str
- :type skip_warmup: bool
:returns: Drop threshold exceeded? (True/False)
:rtype: bool
:raises NotImplementedError: If TG is not supported.
@@ -96,15 +94,9 @@ class TGDropRateSearchImpl(DropRateSearch):
subtype = check_subtype(tg_instance.node)
if subtype == NodeSubTypeTG.TREX:
unit_rate = str(rate) + self.get_rate_type_str()
- if skip_warmup:
- tg_instance.trex_stl_start_remote_exec(
- self.get_duration(), unit_rate, frame_size, traffic_profile,
- warmup_time=0.0
- )
- else:
- tg_instance.trex_stl_start_remote_exec(
- self.get_duration(), unit_rate, frame_size, traffic_profile
- )
+ tg_instance.trex_stl_start_remote_exec(
+ self.get_duration(), unit_rate, frame_size, traffic_profile
+ )
loss = tg_instance.get_loss()
sent = tg_instance.get_sent()
if self.loss_acceptance_type_is_percentage():
@@ -145,6 +137,8 @@ class TrafficGenerator(AbstractMeasurer):
ROBOT_LIBRARY_SCOPE = u"TEST SUITE"
def __init__(self):
+ # TODO: Separate into few dataclasses/dicts.
+ # Pylint dislikes large unstructured state, and it is right.
self._node = None
self._mode = None
# TG interface order mapping
@@ -160,14 +154,23 @@ class TrafficGenerator(AbstractMeasurer):
self._l7_data = None
# Measurement input fields, needed for async stop result.
self._start_time = None
+ self._stop_time = None
self._rate = None
+ self._target_duration = None
+ self._duration = None
# Other input parameters, not knowable from measure() signature.
self.frame_size = None
self.traffic_profile = None
- self.warmup_time = None
self.traffic_directions = None
self.negative_loss = None
self.use_latency = None
+ self.ppta = None
+ self.resetter = None
+ self.transaction_scale = None
+ self.transaction_duration = None
+ self.sleep_till_duration = None
+ self.transaction_type = None
+ self.duration_limit = None
# Transient data needed for async measurements.
self._xstats = (None, None)
# TODO: Rename "xstats" to something opaque, so T-Rex is not privileged?
@@ -244,7 +247,6 @@ class TrafficGenerator(AbstractMeasurer):
)
# TODO: pylint says disable=too-many-locals.
- # A fix is developed in https://gerrit.fd.io/r/c/csit/+/22221
def initialize_traffic_generator(
self, tg_node, tg_if1, tg_if2, tg_if1_adj_node, tg_if1_adj_if,
tg_if2_adj_node, tg_if2_adj_if, osi_layer, tg_if1_dst_mac=None,
@@ -369,7 +371,8 @@ class TrafficGenerator(AbstractMeasurer):
# Configure TRex.
ports = ''
for port in tg_node[u"interfaces"].values():
- ports += f" {port.get(u'pci_address')}"
+ if u'Mellanox' not in port.get(u'model'):
+ ports += f" {port.get(u'pci_address')}"
cmd = f"sh -c \"cd {Constants.TREX_INSTALL_DIR}/scripts/ && " \
f"./dpdk_nic_bind.py -u {ports} || true\""
@@ -454,108 +457,6 @@ class TrafficGenerator(AbstractMeasurer):
message=u"T-Rex kill failed!"
)
- def _parse_traffic_results(self, stdout):
- """Parse stdout of scripts into fields of self.
-
- Block of code to reuse, by sync start, or stop after async.
-
- :param stdout: Text containing the standard output.
- :type stdout: str
- """
- subtype = check_subtype(self._node)
- if subtype == NodeSubTypeTG.TREX:
- # Last line from console output
- line = stdout.splitlines()[-1]
- results = line.split(u",")
- if results[-1] in (u" ", u""):
- results.pop(-1)
- self._result = dict()
- for result in results:
- key, value = result.split(u"=", maxsplit=1)
- self._result[key.strip()] = value
- logger.info(f"TrafficGen results:\n{self._result}")
- self._received = self._result.get(u"total_received")
- self._sent = self._result.get(u"total_sent")
- self._loss = self._result.get(u"frame_loss")
- self._approximated_duration = \
- self._result.get(u"approximated_duration")
- self._approximated_rate = self._result.get(u"approximated_rate")
- self._latency = list()
- self._latency.append(self._result.get(u"latency_stream_0(usec)"))
- self._latency.append(self._result.get(u"latency_stream_1(usec)"))
- if self._mode == TrexMode.ASTF:
- self._l7_data = dict()
- self._l7_data[u"client"] = dict()
- self._l7_data[u"client"][u"active_flows"] = \
- self._result.get(u"client_active_flows")
- self._l7_data[u"client"][u"established_flows"] = \
- self._result.get(u"client_established_flows")
- self._l7_data[u"client"][u"err_rx_throttled"] = \
- self._result.get(u"client_err_rx_throttled")
- self._l7_data[u"client"][u"err_c_nf_throttled"] = \
- self._result.get(u"client_err_nf_throttled")
- self._l7_data[u"client"][u"err_flow_overflow"] = \
- self._result.get(u"client_err_flow_overflow")
- self._l7_data[u"server"] = dict()
- self._l7_data[u"server"][u"active_flows"] = \
- self._result.get(u"server_active_flows")
- self._l7_data[u"server"][u"established_flows"] = \
- self._result.get(u"server_established_flows")
- self._l7_data[u"server"][u"err_rx_throttled"] = \
- self._result.get(u"client_err_rx_throttled")
- if u"udp" in self.traffic_profile:
- self._l7_data[u"client"][u"udp"] = dict()
- self._l7_data[u"client"][u"udp"][u"established_flows"] = \
- self._result.get(u"client_udp_connects")
- self._l7_data[u"client"][u"udp"][u"closed_flows"] = \
- self._result.get(u"client_udp_closed")
- self._l7_data[u"client"][u"udp"][u"tx_bytes"] = \
- self._result.get(u"client_udp_tx_bytes")
- self._l7_data[u"client"][u"udp"][u"rx_bytes"] = \
- self._result.get(u"client_udp_rx_bytes")
- self._l7_data[u"client"][u"udp"][u"tx_packets"] = \
- self._result.get(u"client_udp_tx_packets")
- self._l7_data[u"client"][u"udp"][u"rx_packets"] = \
- self._result.get(u"client_udp_rx_packets")
- self._l7_data[u"client"][u"udp"][u"keep_drops"] = \
- self._result.get(u"client_udp_keep_drops")
- self._l7_data[u"server"][u"udp"] = dict()
- self._l7_data[u"server"][u"udp"][u"accepted_flows"] = \
- self._result.get(u"server_udp_accepts")
- self._l7_data[u"server"][u"udp"][u"closed_flows"] = \
- self._result.get(u"server_udp_closed")
- self._l7_data[u"server"][u"udp"][u"tx_bytes"] = \
- self._result.get(u"server_udp_tx_bytes")
- self._l7_data[u"server"][u"udp"][u"rx_bytes"] = \
- self._result.get(u"server_udp_rx_bytes")
- self._l7_data[u"server"][u"udp"][u"tx_packets"] = \
- self._result.get(u"server_udp_tx_packets")
- self._l7_data[u"server"][u"udp"][u"rx_packets"] = \
- self._result.get(u"server_udp_rx_packets")
- elif u"tcp" in self.traffic_profile:
- self._l7_data[u"client"][u"tcp"] = dict()
- self._l7_data[u"client"][u"tcp"][u"initiated_flows"] = \
- self._result.get(u"client_tcp_connect_inits")
- self._l7_data[u"client"][u"tcp"][u"established_flows"] = \
- self._result.get(u"client_tcp_connects")
- self._l7_data[u"client"][u"tcp"][u"closed_flows"] = \
- self._result.get(u"client_tcp_closed")
- self._l7_data[u"client"][u"tcp"][u"tx_bytes"] = \
- self._result.get(u"client_tcp_tx_bytes")
- self._l7_data[u"client"][u"tcp"][u"rx_bytes"] = \
- self._result.get(u"client_tcp_rx_bytes")
- self._l7_data[u"server"][u"tcp"] = dict()
- self._l7_data[u"server"][u"tcp"][u"accepted_flows"] = \
- self._result.get(u"server_tcp_accepts")
- self._l7_data[u"server"][u"tcp"][u"established_flows"] = \
- self._result.get(u"server_tcp_connects")
- self._l7_data[u"server"][u"tcp"][u"closed_flows"] = \
- self._result.get(u"server_tcp_closed")
- self._l7_data[u"server"][u"tcp"][u"tx_bytes"] = \
- self._result.get(u"server_tcp_tx_bytes")
- self._l7_data[u"server"][u"tcp"][u"rx_bytes"] = \
- self._result.get(u"server_tcp_rx_bytes")
-
def trex_astf_stop_remote_exec(self, node):
"""Execute T-Rex ASTF script on remote node over ssh to stop running
traffic.
@@ -612,59 +513,77 @@ class TrafficGenerator(AbstractMeasurer):
:raises ValueError: If TG traffic profile is not supported.
"""
subtype = check_subtype(self._node)
- if subtype == NodeSubTypeTG.TREX:
- if u"trex-astf" in self.traffic_profile:
- self.trex_astf_stop_remote_exec(self._node)
- elif u"trex-stl" in self.traffic_profile:
- self.trex_stl_stop_remote_exec(self._node)
- else:
- raise ValueError(u"Unsupported T-Rex traffic profile!")
+ if subtype != NodeSubTypeTG.TREX:
+ raise ValueError(f"Unsupported TG subtype: {subtype!r}")
+ if u"trex-astf" in self.traffic_profile:
+ self.trex_astf_stop_remote_exec(self._node)
+ elif u"trex-stl" in self.traffic_profile:
+ self.trex_stl_stop_remote_exec(self._node)
+ else:
+ raise ValueError(u"Unsupported T-Rex traffic profile!")
+ self._stop_time = time.monotonic()
return self.get_measurement_result()
def trex_astf_start_remote_exec(
- self, duration, mult, frame_size, traffic_profile, async_call=False,
- latency=True, warmup_time=5.0, traffic_directions=2, tx_port=0,
- rx_port=1):
+ self, duration, multiplier, async_call=False):
"""Execute T-Rex ASTF script on remote node over ssh to start running
traffic.
In sync mode, measurement results are stored internally.
In async mode, initial data including xstats are stored internally.
- :param duration: Time expresed in seconds for how long to send traffic.
- :param mult: Traffic rate expressed with units (pps, %)
- :param frame_size: L2 frame size to send (without padding and IPG).
- :param traffic_profile: Module name as a traffic profile identifier.
- See GPL/traffic_profiles/trex for implemented modules.
+ This method contains the logic to compute duration as maximum time
+ if transaction_scale is nonzero.
+ The transaction_scale argument defines (limits) how many transactions
+ will be started in total. As that amount of transaction can take
+ considerable time (sometimes due to explicit delays in the profile),
+ the real time a trial needs to finish is computed here. For now,
+ in that case the duration argument is ignored, assuming it comes
+ from ASTF-unaware search algorithm. The overall time a single
+ transaction needs is given in parameter transaction_duration,
+ it includes both explicit delays and implicit time it takes
+ to transfer data (or whatever the transaction does).
+
+ Currently it is observed TRex does not start the ASTF traffic
+ immediately, an ad-hoc constant is added to the computed duration
+ to compensate for that.
+
+ If transaction_scale is zero, duration is not recomputed.
+ It is assumed the subsequent result parsing gets the real duration
+ if the traffic stops sooner for any reason.
+
+ Currently, it is assumed traffic profile defines a single transaction.
+ To avoid heavy logic here, the input rate is expected to be in
+ transactions per second, as that directly translates to TRex multiplier,
+ (assuming the profile does not override the default cps value of one).
+
+ :param duration: Time expressed in seconds for how long to send traffic.
+ :param multiplier: Traffic rate in transactions per second.
:param async_call: If enabled then don't wait for all incoming traffic.
- :param latency: With latency measurement.
- :param warmup_time: Warmup time period.
- :param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
- Default: 2
- :param tx_port: Traffic generator transmit port for first flow.
- Default: 0
- :param rx_port: Traffic generator receive port for first flow.
- Default: 1
:type duration: float
- :type mult: int
- :type frame_size: str
- :type traffic_profile: str
+ :type multiplier: int
:type async_call: bool
- :type latency: bool
- :type warmup_time: float
- :type traffic_directions: int
- :type tx_port: int
- :type rx_port: int
:raises RuntimeError: In case of T-Rex driver issue.
"""
self.check_mode(TrexMode.ASTF)
- p_0, p_1 = (rx_port, tx_port) if self._ifaces_reordered \
- else (tx_port, rx_port)
+ p_0, p_1 = (1, 0) if self._ifaces_reordered else (0, 1)
if not isinstance(duration, (float, int)):
duration = float(duration)
- if not isinstance(warmup_time, (float, int)):
- warmup_time = float(warmup_time)
+
+ # Duration logic.
+ computed_duration = duration
+ if duration > 0.0:
+ if self.transaction_scale:
+ computed_duration = self.transaction_scale / multiplier
+ # Log the computed duration,
+ # so we can compare with what telemetry suggests
+ # the real duration was.
+ logger.debug(f"Expected duration {computed_duration}")
+ computed_duration += 0.1115
+ # Else keep -1.
+ if self.duration_limit:
+ computed_duration = min(computed_duration, self.duration_limit)
command_line = OptionString().add(u"python3")
dirname = f"{Constants.REMOTE_FW_DIR}/GPL/tools/trex"
@@ -672,31 +591,31 @@ class TrafficGenerator(AbstractMeasurer):
command_line.change_prefix(u"--")
dirname = f"{Constants.REMOTE_FW_DIR}/GPL/traffic_profiles/trex"
command_line.add_with_value(
- u"profile", f"'{dirname}/{traffic_profile}.py'"
+ u"profile", f"'{dirname}/{self.traffic_profile}.py'"
)
- command_line.add_with_value(u"duration", f"{duration!r}")
- command_line.add_with_value(u"frame_size", frame_size)
- command_line.add_with_value(u"mult", int(mult))
- command_line.add_with_value(u"warmup_time", f"{warmup_time!r}")
+ command_line.add_with_value(u"duration", f"{computed_duration!r}")
+ command_line.add_with_value(u"frame_size", self.frame_size)
+ command_line.add_with_value(u"multiplier", multiplier)
command_line.add_with_value(u"port_0", p_0)
command_line.add_with_value(u"port_1", p_1)
- command_line.add_with_value(u"traffic_directions", traffic_directions)
+ command_line.add_with_value(
+ u"traffic_directions", self.traffic_directions
+ )
command_line.add_if(u"async_start", async_call)
- command_line.add_if(u"latency", latency)
+ command_line.add_if(u"latency", self.use_latency)
command_line.add_if(u"force", Constants.TREX_SEND_FORCE)
+ self._start_time = time.monotonic()
+ self._rate = multiplier
stdout, _ = exec_cmd_no_error(
- self._node, command_line,
- timeout=int(duration) + 600 if u"tcp" in self.traffic_profile
- else 60,
+ self._node, command_line, timeout=computed_duration + 10.0,
message=u"T-Rex ASTF runtime error!"
)
- self.traffic_directions = traffic_directions
if async_call:
# no result
- self._start_time = time.time()
- self._rate = float(mult)
+ self._target_duration = None
+ self._duration = None
self._received = None
self._sent = None
self._loss = None
@@ -706,24 +625,28 @@ class TrafficGenerator(AbstractMeasurer):
self._l7_data[u"client"] = dict()
self._l7_data[u"client"][u"active_flows"] = None
self._l7_data[u"client"][u"established_flows"] = None
+ self._l7_data[u"client"][u"traffic_duration"] = None
self._l7_data[u"server"] = dict()
self._l7_data[u"server"][u"active_flows"] = None
self._l7_data[u"server"][u"established_flows"] = None
+ self._l7_data[u"server"][u"traffic_duration"] = None
if u"udp" in self.traffic_profile:
self._l7_data[u"client"][u"udp"] = dict()
- self._l7_data[u"client"][u"udp"][u"established_flows"] = None
+ self._l7_data[u"client"][u"udp"][u"connects"] = None
self._l7_data[u"client"][u"udp"][u"closed_flows"] = None
+ self._l7_data[u"client"][u"udp"][u"err_cwf"] = None
self._l7_data[u"server"][u"udp"] = dict()
self._l7_data[u"server"][u"udp"][u"accepted_flows"] = None
self._l7_data[u"server"][u"udp"][u"closed_flows"] = None
elif u"tcp" in self.traffic_profile:
self._l7_data[u"client"][u"tcp"] = dict()
self._l7_data[u"client"][u"tcp"][u"initiated_flows"] = None
- self._l7_data[u"client"][u"tcp"][u"established_flows"] = None
+ self._l7_data[u"client"][u"tcp"][u"connects"] = None
self._l7_data[u"client"][u"tcp"][u"closed_flows"] = None
+ self._l7_data[u"client"][u"tcp"][u"connattempt"] = None
self._l7_data[u"server"][u"tcp"] = dict()
self._l7_data[u"server"][u"tcp"][u"accepted_flows"] = None
- self._l7_data[u"server"][u"tcp"][u"established_flows"] = None
+ self._l7_data[u"server"][u"tcp"][u"connects"] = None
self._l7_data[u"server"][u"tcp"][u"closed_flows"] = None
else:
logger.warn(u"Unsupported T-Rex ASTF traffic profile!")
@@ -736,53 +659,36 @@ class TrafficGenerator(AbstractMeasurer):
break
self._xstats = tuple(xstats)
else:
+ self._target_duration = duration
+ self._duration = computed_duration
self._parse_traffic_results(stdout)
- self._start_time = None
- self._rate = None
- def trex_stl_start_remote_exec(
- self, duration, rate, frame_size, traffic_profile, async_call=False,
- latency=False, warmup_time=5.0, traffic_directions=2, tx_port=0,
- rx_port=1):
+ def trex_stl_start_remote_exec(self, duration, rate, async_call=False):
"""Execute T-Rex STL script on remote node over ssh to start running
traffic.
In sync mode, measurement results are stored internally.
In async mode, initial data including xstats are stored internally.
+ Mode-unaware code (e.g. in search algorithms) works with transactions.
+ To keep the logic simple, multiplier is set to that value.
+ As bidirectional traffic profiles send packets in both directions,
+ they are treated as transactions with two packets (one per direction).
+
:param duration: Time expressed in seconds for how long to send traffic.
- :param rate: Traffic rate expressed with units (pps, %)
- :param frame_size: L2 frame size to send (without padding and IPG).
- :param traffic_profile: Module name as a traffic profile identifier.
- See GPL/traffic_profiles/trex for implemented modules.
+ :param rate: Traffic rate in transactions per second.
:param async_call: If enabled then don't wait for all incoming traffic.
- :param latency: With latency measurement.
- :param warmup_time: Warmup time period.
- :param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
- Default: 2
- :param tx_port: Traffic generator transmit port for first flow.
- Default: 0
- :param rx_port: Traffic generator receive port for first flow.
- Default: 1
:type duration: float
:type rate: str
- :type frame_size: str
- :type traffic_profile: str
:type async_call: bool
- :type latency: bool
- :type warmup_time: float
- :type traffic_directions: int
- :type tx_port: int
- :type rx_port: int
:raises RuntimeError: In case of T-Rex driver issue.
"""
self.check_mode(TrexMode.STL)
- p_0, p_1 = (rx_port, tx_port) if self._ifaces_reordered \
- else (tx_port, rx_port)
+ p_0, p_1 = (1, 0) if self._ifaces_reordered else (0, 1)
if not isinstance(duration, (float, int)):
duration = float(duration)
- if not isinstance(warmup_time, (float, int)):
- warmup_time = float(warmup_time)
+ if self.duration_limit:
+ duration = min(duration, self.duration_limit)
command_line = OptionString().add(u"python3")
dirname = f"{Constants.REMOTE_FW_DIR}/GPL/tools/trex"
@@ -790,29 +696,32 @@ class TrafficGenerator(AbstractMeasurer):
command_line.change_prefix(u"--")
dirname = f"{Constants.REMOTE_FW_DIR}/GPL/traffic_profiles/trex"
command_line.add_with_value(
- u"profile", f"'{dirname}/{traffic_profile}.py'"
+ u"profile", f"'{dirname}/{self.traffic_profile}.py'"
)
command_line.add_with_value(u"duration", f"{duration!r}")
- command_line.add_with_value(u"frame_size", frame_size)
+ command_line.add_with_value(u"frame_size", self.frame_size)
command_line.add_with_value(u"rate", f"{rate!r}")
- command_line.add_with_value(u"warmup_time", f"{warmup_time!r}")
command_line.add_with_value(u"port_0", p_0)
command_line.add_with_value(u"port_1", p_1)
- command_line.add_with_value(u"traffic_directions", traffic_directions)
+ command_line.add_with_value(
+ u"traffic_directions", self.traffic_directions
+ )
command_line.add_if(u"async_start", async_call)
- command_line.add_if(u"latency", latency)
+ command_line.add_if(u"latency", self.use_latency)
command_line.add_if(u"force", Constants.TREX_SEND_FORCE)
+ # TODO: This is ugly. Handle parsing better.
+ self._start_time = time.monotonic()
+ self._rate = float(rate[:-3]) if u"pps" in rate else float(rate)
stdout, _ = exec_cmd_no_error(
self._node, command_line, timeout=int(duration) + 60,
message=u"T-Rex STL runtime error"
)
- self.traffic_directions = traffic_directions
if async_call:
# no result
- self._start_time = time.time()
- self._rate = float(rate[:-3]) if u"pps" in rate else float(rate)
+ self._target_duration = None
+ self._duration = None
self._received = None
self._sent = None
self._loss = None
@@ -828,14 +737,25 @@ class TrafficGenerator(AbstractMeasurer):
break
self._xstats = tuple(xstats)
else:
+ self._target_duration = duration
+ self._duration = duration
self._parse_traffic_results(stdout)
- self._start_time = None
- self._rate = None
def send_traffic_on_tg(
- self, duration, rate, frame_size, traffic_profile, warmup_time=5,
- async_call=False, latency=False, traffic_directions=2, tx_port=0,
- rx_port=1):
+ self,
+ duration,
+ rate,
+ frame_size,
+ traffic_profile,
+ async_call=False,
+ ppta=1,
+ traffic_directions=2,
+ transaction_duration=0.0,
+ transaction_scale=0,
+ transaction_type=u"packet",
+ duration_limit=0.0,
+ use_latency=False,
+ ):
"""Send traffic from all configured interfaces on TG.
In async mode, xstats is stored internally,
@@ -843,61 +763,102 @@ class TrafficGenerator(AbstractMeasurer):
In both modes, stdout is returned,
but _parse_traffic_results only works in sync output.
- Note that bidirectional traffic also contains flows
- transmitted from rx_port and received in tx_port.
- But some tests use asymmetric traffic, so those arguments are relevant.
-
- Also note that traffic generator uses DPDK driver which might
+ Note that traffic generator uses DPDK driver which might
reorder port numbers based on wiring and PCI numbering.
This method handles that, so argument values are invariant,
but you can see swapped valued in debug logs.
+ When transaction_scale is specified, the duration value is ignored
+ and the needed time is computed. For cases where this results in
+ to too long measurement (e.g. teardown trial with small rate),
+ duration_limit is applied (of non-zero), so the trial is stopped sooner.
+
+ Bidirectional STL profiles are treated as transactions with two packets.
+
:param duration: Duration of test traffic generation in seconds.
- :param rate: Traffic rate.
- - T-Rex stateless mode => Offered load per interface in pps,
- - T-Rex advanced stateful mode => multiplier of profile CPS.
+ :param rate: Traffic rate in transactions per second.
:param frame_size: Frame size (L2) in Bytes.
:param traffic_profile: Module name as a traffic profile identifier.
See GPL/traffic_profiles/trex for implemented modules.
- :param warmup_time: Warmup phase in seconds.
:param async_call: Async mode.
- :param latency: With latency measurement.
+ :param ppta: Packets per transaction, aggregated over directions.
+ Needed for udp_pps which does not have a good transaction counter,
+ so we need to compute expected number of packets.
+ Default: 1.
:param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
Default: 2
- :param tx_port: Traffic generator transmit port for first flow.
- Default: 0
- :param rx_port: Traffic generator receive port for first flow.
- Default: 1
+ :param transaction_duration: Total expected time to close transaction.
+ :param transaction_scale: Number of transactions to perform.
+ 0 (default) means unlimited.
+ :param transaction_type: An identifier specifying which counters
+ and formulas to use when computing attempted and failed
+ transactions. Default: "packet".
+ :param duration_limit: Zero or maximum limit for computed (or given)
+ duration.
+ :param use_latency: Whether to measure latency during the trial.
+ Default: False.
:type duration: float
:type rate: float
:type frame_size: str
:type traffic_profile: str
- :type warmup_time: float
:type async_call: bool
- :type latency: bool
+ :type ppta: int
:type traffic_directions: int
- :type tx_port: int
- :type rx_port: int
+ :type transaction_duration: float
+ :type transaction_scale: int
+ :type transaction_type: str
+ :type duration_limit: float
+ :type use_latency: bool
+ :returns: TG results.
+ :rtype: str
+ :raises ValueError: If TG traffic profile is not supported.
+ """
+ self.set_rate_provider_defaults(
+ frame_size=frame_size,
+ traffic_profile=traffic_profile,
+ ppta=ppta,
+ traffic_directions=traffic_directions,
+ transaction_duration=transaction_duration,
+ transaction_scale=transaction_scale,
+ transaction_type=transaction_type,
+ duration_limit=duration_limit,
+ use_latency=use_latency,
+ )
+ self._send_traffic_on_tg_internal(duration, rate, async_call)
+
+ def _send_traffic_on_tg_internal(self, duration, rate, async_call=False):
+ """Send traffic from all configured interfaces on TG.
+
+ This is an internal function, it assumes set_rate_provider_defaults
+ has been called to remember most values.
+ The reason why need to remember various values is that
+ the traffic can be asynchronous, and parsing needs those values.
+ The reason why this is is a separate function from the one
+ which calls set_rate_provider_defaults is that some search algorithms
+ need to specify their own values, and we do not want the measure call
+ to overwrite them with defaults.
+
+ :param duration: Duration of test traffic generation in seconds.
+ :param rate: Traffic rate in transactions per second.
+ :param async_call: Async mode.
+ :type duration: float
+ :type rate: float
+ :type async_call: bool
:returns: TG results.
:rtype: str
:raises ValueError: If TG traffic profile is not supported.
"""
subtype = check_subtype(self._node)
if subtype == NodeSubTypeTG.TREX:
- if self.traffic_profile != str(traffic_profile):
- self.traffic_profile = str(traffic_profile)
if u"trex-astf" in self.traffic_profile:
self.trex_astf_start_remote_exec(
- duration, int(rate), frame_size, self.traffic_profile,
- async_call, latency, warmup_time, traffic_directions,
- tx_port, rx_port
+ duration, float(rate), async_call
)
elif u"trex-stl" in self.traffic_profile:
unit_rate_str = str(rate) + u"pps"
+ # TODO: Suport transaction_scale et al?
self.trex_stl_start_remote_exec(
- duration, unit_rate_str, frame_size, self.traffic_profile,
- async_call, latency, warmup_time, traffic_directions,
- tx_port, rx_port
+ duration, unit_rate_str, async_call
)
else:
raise ValueError(u"Unsupported T-Rex traffic profile!")
@@ -918,6 +879,8 @@ class TrafficGenerator(AbstractMeasurer):
def fail_if_no_traffic_forwarded(self):
"""Fail if no traffic forwarded.
+ TODO: Check number of passed transactions instead.
+
:returns: nothing
:raises Exception: If no traffic forwarded.
"""
@@ -952,74 +915,236 @@ class TrafficGenerator(AbstractMeasurer):
f"Traffic loss {loss} above loss acceptance: {loss_acceptance}"
)
- def set_rate_provider_defaults(
- self, frame_size, traffic_profile, warmup_time=0.0,
- traffic_directions=2, negative_loss=True, latency=False):
- """Store values accessed by measure().
+ def _parse_traffic_results(self, stdout):
+ """Parse stdout of scripts into fields of self.
- :param frame_size: Frame size identifier or value [B].
- :param traffic_profile: Module name as a traffic profile identifier.
- See GPL/traffic_profiles/trex for implemented modules.
- :param warmup_time: Traffic duration before measurement starts [s].
- :param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
- Default: 2
- :param negative_loss: If false, negative loss is reported as zero loss.
- :param latency: Whether to measure latency during the trial.
- Default: False.
- :type frame_size: str or int
- :type traffic_profile: str
- :type warmup_time: float
- :type traffic_directions: int
- :type negative_loss: bool
- :type latency: bool
+ Block of code to reuse, by sync start, or stop after async.
+
+ :param stdout: Text containing the standard output.
+ :type stdout: str
"""
- self.frame_size = frame_size
- self.traffic_profile = str(traffic_profile)
- self.warmup_time = float(warmup_time)
- self.traffic_directions = traffic_directions
- self.negative_loss = negative_loss
- self.use_latency = latency
+ subtype = check_subtype(self._node)
+ if subtype == NodeSubTypeTG.TREX:
+ # Last line from console output
+ line = stdout.splitlines()[-1]
+ results = line.split(u";")
+ if results[-1] in (u" ", u""):
+ results.pop(-1)
+ self._result = dict()
+ for result in results:
+ key, value = result.split(u"=", maxsplit=1)
+ self._result[key.strip()] = value
+ logger.info(f"TrafficGen results:\n{self._result}")
+ self._received = int(self._result.get(u"total_received"), 0)
+ self._sent = int(self._result.get(u"total_sent", 0))
+ self._loss = int(self._result.get(u"frame_loss", 0))
+ self._approximated_duration = \
+ self._result.get(u"approximated_duration", 0.0)
+ if u"manual" not in str(self._approximated_duration):
+ self._approximated_duration = float(self._approximated_duration)
+ self._latency = list()
+ self._latency.append(self._result.get(u"latency_stream_0(usec)"))
+ self._latency.append(self._result.get(u"latency_stream_1(usec)"))
+ if self._mode == TrexMode.ASTF:
+ self._l7_data = dict()
+ self._l7_data[u"client"] = dict()
+ self._l7_data[u"client"][u"sent"] = \
+ int(self._result.get(u"client_sent", 0))
+ self._l7_data[u"client"][u"received"] = \
+ int(self._result.get(u"client_received", 0))
+ self._l7_data[u"client"][u"active_flows"] = \
+ int(self._result.get(u"client_active_flows", 0))
+ self._l7_data[u"client"][u"established_flows"] = \
+ int(self._result.get(u"client_established_flows", 0))
+ self._l7_data[u"client"][u"traffic_duration"] = \
+ float(self._result.get(u"client_traffic_duration", 0.0))
+ self._l7_data[u"client"][u"err_rx_throttled"] = \
+ int(self._result.get(u"client_err_rx_throttled", 0))
+ self._l7_data[u"client"][u"err_c_nf_throttled"] = \
+ int(self._result.get(u"client_err_nf_throttled", 0))
+ self._l7_data[u"client"][u"err_flow_overflow"] = \
+ int(self._result.get(u"client_err_flow_overflow", 0))
+ self._l7_data[u"server"] = dict()
+ self._l7_data[u"server"][u"active_flows"] = \
+ int(self._result.get(u"server_active_flows", 0))
+ self._l7_data[u"server"][u"established_flows"] = \
+ int(self._result.get(u"server_established_flows", 0))
+ self._l7_data[u"server"][u"traffic_duration"] = \
+ float(self._result.get(u"server_traffic_duration", 0.0))
+ self._l7_data[u"server"][u"err_rx_throttled"] = \
+ int(self._result.get(u"client_err_rx_throttled", 0))
+ if u"udp" in self.traffic_profile:
+ self._l7_data[u"client"][u"udp"] = dict()
+ self._l7_data[u"client"][u"udp"][u"connects"] = \
+ int(self._result.get(u"client_udp_connects", 0))
+ self._l7_data[u"client"][u"udp"][u"closed_flows"] = \
+ int(self._result.get(u"client_udp_closed", 0))
+ self._l7_data[u"client"][u"udp"][u"tx_bytes"] = \
+ int(self._result.get(u"client_udp_tx_bytes", 0))
+ self._l7_data[u"client"][u"udp"][u"rx_bytes"] = \
+ int(self._result.get(u"client_udp_rx_bytes", 0))
+ self._l7_data[u"client"][u"udp"][u"tx_packets"] = \
+ int(self._result.get(u"client_udp_tx_packets", 0))
+ self._l7_data[u"client"][u"udp"][u"rx_packets"] = \
+ int(self._result.get(u"client_udp_rx_packets", 0))
+ self._l7_data[u"client"][u"udp"][u"keep_drops"] = \
+ int(self._result.get(u"client_udp_keep_drops", 0))
+ self._l7_data[u"client"][u"udp"][u"err_cwf"] = \
+ int(self._result.get(u"client_err_cwf", 0))
+ self._l7_data[u"server"][u"udp"] = dict()
+ self._l7_data[u"server"][u"udp"][u"accepted_flows"] = \
+ int(self._result.get(u"server_udp_accepts", 0))
+ self._l7_data[u"server"][u"udp"][u"closed_flows"] = \
+ int(self._result.get(u"server_udp_closed", 0))
+ self._l7_data[u"server"][u"udp"][u"tx_bytes"] = \
+ int(self._result.get(u"server_udp_tx_bytes", 0))
+ self._l7_data[u"server"][u"udp"][u"rx_bytes"] = \
+ int(self._result.get(u"server_udp_rx_bytes", 0))
+ self._l7_data[u"server"][u"udp"][u"tx_packets"] = \
+ int(self._result.get(u"server_udp_tx_packets", 0))
+ self._l7_data[u"server"][u"udp"][u"rx_packets"] = \
+ int(self._result.get(u"server_udp_rx_packets", 0))
+ elif u"tcp" in self.traffic_profile:
+ self._l7_data[u"client"][u"tcp"] = dict()
+ self._l7_data[u"client"][u"tcp"][u"initiated_flows"] = \
+ int(self._result.get(u"client_tcp_connect_inits", 0))
+ self._l7_data[u"client"][u"tcp"][u"connects"] = \
+ int(self._result.get(u"client_tcp_connects", 0))
+ self._l7_data[u"client"][u"tcp"][u"closed_flows"] = \
+ int(self._result.get(u"client_tcp_closed", 0))
+ self._l7_data[u"client"][u"tcp"][u"connattempt"] = \
+ int(self._result.get(u"client_tcp_connattempt", 0))
+ self._l7_data[u"client"][u"tcp"][u"tx_bytes"] = \
+ int(self._result.get(u"client_tcp_tx_bytes", 0))
+ self._l7_data[u"client"][u"tcp"][u"rx_bytes"] = \
+ int(self._result.get(u"client_tcp_rx_bytes", 0))
+ self._l7_data[u"server"][u"tcp"] = dict()
+ self._l7_data[u"server"][u"tcp"][u"accepted_flows"] = \
+ int(self._result.get(u"server_tcp_accepts", 0))
+ self._l7_data[u"server"][u"tcp"][u"connects"] = \
+ int(self._result.get(u"server_tcp_connects", 0))
+ self._l7_data[u"server"][u"tcp"][u"closed_flows"] = \
+ int(self._result.get(u"server_tcp_closed", 0))
+ self._l7_data[u"server"][u"tcp"][u"tx_bytes"] = \
+ int(self._result.get(u"server_tcp_tx_bytes", 0))
+ self._l7_data[u"server"][u"tcp"][u"rx_bytes"] = \
+ int(self._result.get(u"server_tcp_rx_bytes", 0))
- def get_measurement_result(self, duration=None, transmit_rate=None):
+ def get_measurement_result(self):
"""Return the result of last measurement as ReceiveRateMeasurement.
Separate function, as measurements can end either by time
or by explicit call, this is the common block at the end.
+ The target_tr field of ReceiveRateMeasurement is in
+ transactions per second. Transmit count and loss count units
+ depend on the transaction type. Usually they are in transactions
+ per second, or aggregate packets per second.
+
TODO: Fail on running or already reported measurement.
- :param duration: Measurement duration [s] if known beforehand.
- For explicitly stopped measurement it is estimated.
- :param transmit_rate: Target aggregate transmit rate [pps].
- If not given, computed assuming it was bidirectional.
- :type duration: float or NoneType
- :type transmit_rate: float or NoneType
:returns: Structure containing the result of the measurement.
:rtype: ReceiveRateMeasurement
"""
- if duration is None:
- duration = time.time() - self._start_time
- self._start_time = None
- if transmit_rate is None:
- transmit_rate = self._rate * self.traffic_directions
- transmit_count = int(self.get_sent())
- loss_count = int(self.get_loss())
- if loss_count < 0 and not self.negative_loss:
- loss_count = 0
+ try:
+ # Client duration seems to include a setup period
+ # where TRex does not send any packets yet.
+ # Server duration does not include it.
+ server_data = self._l7_data[u"server"]
+ approximated_duration = float(server_data[u"traffic_duration"])
+ except (KeyError, AttributeError, ValueError, TypeError):
+ approximated_duration = None
+ try:
+ if not approximated_duration:
+ approximated_duration = float(self._approximated_duration)
+ except ValueError: # "manual"
+ approximated_duration = None
+ if not approximated_duration:
+ if self._duration and self._duration > 0:
+ # Known recomputed or target duration.
+ approximated_duration = self._duration
+ else:
+ # It was an explicit stop.
+ if not self._stop_time:
+ raise RuntimeError(u"Unable to determine duration.")
+ approximated_duration = self._stop_time - self._start_time
+ target_duration = self._target_duration
+ if not target_duration:
+ target_duration = approximated_duration
+ transmit_rate = self._rate
+ if self.transaction_type == u"packet":
+ partial_attempt_count = self._sent
+ expected_attempt_count = self._sent
+ fail_count = self._loss
+ elif self.transaction_type == u"udp_cps":
+ if not self.transaction_scale:
+ raise RuntimeError(u"Add support for no-limit udp_cps.")
+ partial_attempt_count = self._l7_data[u"client"][u"sent"]
+ # We do not care whether TG is slow, it should have attempted all.
+ expected_attempt_count = self.transaction_scale
+ pass_count = self._l7_data[u"client"][u"received"]
+ fail_count = expected_attempt_count - pass_count
+ elif self.transaction_type == u"tcp_cps":
+ if not self.transaction_scale:
+ raise RuntimeError(u"Add support for no-limit tcp_cps.")
+ ctca = self._l7_data[u"client"][u"tcp"][u"connattempt"]
+ partial_attempt_count = ctca
+ # We do not care whether TG is slow, it should have attempted all.
+ expected_attempt_count = self.transaction_scale
+ # From TCP point of view, server/connects counts full connections,
+ # but we are testing NAT session so client/connects counts that
+ # (half connections from TCP point of view).
+ pass_count = self._l7_data[u"client"][u"tcp"][u"connects"]
+ fail_count = expected_attempt_count - pass_count
+ elif self.transaction_type == u"udp_pps":
+ if not self.transaction_scale:
+ raise RuntimeError(u"Add support for no-limit udp_pps.")
+ partial_attempt_count = self._sent
+ expected_attempt_count = self.transaction_scale * self.ppta
+ fail_count = self._loss + (expected_attempt_count - self._sent)
+ elif self.transaction_type == u"tcp_pps":
+ if not self.transaction_scale:
+ raise RuntimeError(u"Add support for no-limit tcp_pps.")
+ partial_attempt_count = self._sent
+ expected_attempt_count = self.transaction_scale * self.ppta
+ # One loss-like scenario happens when TRex receives all packets
+ # on L2 level, but is not fast enough to process them all
+ # at L7 level, which leads to retransmissions.
+ # Those manifest as opackets larger than expected.
+ # A simple workaround is to add absolute difference.
+ # Probability of retransmissions exactly cancelling
+ # packets unsent due to duration stretching is quite low.
+ fail_count = self._loss + abs(expected_attempt_count - self._sent)
+ else:
+ raise RuntimeError(f"Unknown parsing {self.transaction_type!r}")
+ if fail_count < 0 and not self.negative_loss:
+ fail_count = 0
measurement = ReceiveRateMeasurement(
- duration, transmit_rate, transmit_count, loss_count
+ duration=target_duration,
+ target_tr=transmit_rate,
+ transmit_count=expected_attempt_count,
+ loss_count=fail_count,
+ approximated_duration=approximated_duration,
+ partial_transmit_count=partial_attempt_count,
)
measurement.latency = self.get_latency_int()
return measurement
def measure(self, duration, transmit_rate):
- """Run trial measurement, parse and return aggregate results.
+ """Run trial measurement, parse and return results.
- Aggregate means sum over traffic directions.
+ The input rate is for transactions. Stateles bidirectional traffic
+ is understood as sequence of (asynchronous) transactions,
+ two packets each.
+
+ The result units depend on test type, generally
+ the count either transactions or packets (aggregated over directions).
+
+ Optionally, this method sleeps if measurement finished before
+ the time specified as duration.
:param duration: Trial duration [s].
- :param transmit_rate: Target aggregate transmit rate [pps] / Connections
- per second (CPS) for UDP/TCP flows.
+ :param transmit_rate: Target rate in transactions per second.
:type duration: float
:type transmit_rate: float
:returns: Structure containing the result of the measurement.
@@ -1029,18 +1154,93 @@ class TrafficGenerator(AbstractMeasurer):
:raises NotImplementedError: If TG is not supported.
"""
duration = float(duration)
- # TG needs target Tr per stream, but reports aggregate Tx and Dx.
- unit_rate_int = transmit_rate / float(self.traffic_directions)
- self.send_traffic_on_tg(
- duration,
- unit_rate_int,
- self.frame_size,
- self.traffic_profile,
- warmup_time=self.warmup_time,
- latency=self.use_latency,
- traffic_directions=self.traffic_directions
+ time_start = time.monotonic()
+ time_stop = time_start + duration
+ if self.resetter:
+ self.resetter()
+ self._send_traffic_on_tg_internal(
+ duration=duration,
+ rate=transmit_rate,
+ async_call=False,
)
- return self.get_measurement_result(duration, transmit_rate)
+ result = self.get_measurement_result()
+ logger.debug(f"trial measurement result: {result!r}")
+ # In PLRsearch, computation needs the specified time to complete.
+ if self.sleep_till_duration:
+ sleeptime = time_stop - time.monotonic()
+ if sleeptime > 0.0:
+ # TODO: Sometimes we have time to do additional trials here,
+ # adapt PLRsearch to accept all the results.
+ time.sleep(sleeptime)
+ return result
+
+ def set_rate_provider_defaults(
+ self,
+ frame_size,
+ traffic_profile,
+ ppta=1,
+ resetter=None,
+ traffic_directions=2,
+ transaction_duration=0.0,
+ transaction_scale=0,
+ transaction_type=u"packet",
+ duration_limit=0.0,
+ negative_loss=True,
+ sleep_till_duration=False,
+ use_latency=False,
+ ):
+ """Store values accessed by measure().
+
+ :param frame_size: Frame size identifier or value [B].
+ :param traffic_profile: Module name as a traffic profile identifier.
+ See GPL/traffic_profiles/trex for implemented modules.
+ :param ppta: Packets per transaction, aggregated over directions.
+ Needed for udp_pps which does not have a good transaction counter,
+ so we need to compute expected number of packets.
+ Default: 1.
+ :param resetter: Callable to reset DUT state for repeated trials.
+ :param traffic_directions: Traffic from packet counting point of view
+ is bi- (2) or uni- (1) directional.
+ Default: 2
+ :param transaction_duration: Total expected time to close transaction.
+ :param transaction_scale: Number of transactions to perform.
+ 0 (default) means unlimited.
+ :param transaction_type: An identifier specifying which counters
+ and formulas to use when computing attempted and failed
+ transactions. Default: "packet".
+ TODO: Does this also specify parsing for the measured duration?
+ :param duration_limit: Zero or maximum limit for computed (or given)
+ duration.
+ :param negative_loss: If false, negative loss is reported as zero loss.
+ :param sleep_till_duration: If true and measurement returned faster,
+ sleep until it matches duration. Needed for PLRsearch.
+ :param use_latency: Whether to measure latency during the trial.
+ Default: False.
+ :type frame_size: str or int
+ :type traffic_profile: str
+ :type ppta: int
+ :type resetter: Optional[Callable[[], None]]
+ :type traffic_directions: int
+ :type transaction_duration: float
+ :type transaction_scale: int
+ :type transaction_type: str
+ :type duration_limit: float
+ :type negative_loss: bool
+ :type sleep_till_duration: bool
+ :type use_latency: bool
+ """
+ self.frame_size = frame_size
+ self.traffic_profile = str(traffic_profile)
+ self.resetter = resetter
+ self.ppta = ppta
+ self.traffic_directions = int(traffic_directions)
+ self.transaction_duration = float(transaction_duration)
+ self.transaction_scale = int(transaction_scale)
+ self.transaction_type = str(transaction_type)
+ self.duration_limit = float(duration_limit)
+ self.negative_loss = bool(negative_loss)
+ self.sleep_till_duration = bool(sleep_till_duration)
+ self.use_latency = bool(use_latency)
class OptimizedSearch:
@@ -1052,20 +1252,38 @@ class OptimizedSearch:
@staticmethod
def perform_optimized_ndrpdr_search(
- frame_size, traffic_profile, minimum_transmit_rate,
- maximum_transmit_rate, packet_loss_ratio=0.005,
- final_relative_width=0.005, final_trial_duration=30.0,
- initial_trial_duration=1.0, number_of_intermediate_phases=2,
- timeout=720.0, doublings=1, traffic_directions=2, latency=False):
+ frame_size,
+ traffic_profile,
+ minimum_transmit_rate,
+ maximum_transmit_rate,
+ packet_loss_ratio=0.005,
+ final_relative_width=0.005,
+ final_trial_duration=30.0,
+ initial_trial_duration=1.0,
+ number_of_intermediate_phases=2,
+ timeout=720.0,
+ doublings=1,
+ ppta=1,
+ resetter=None,
+ traffic_directions=2,
+ transaction_duration=0.0,
+ transaction_scale=0,
+ transaction_type=u"packet",
+ use_latency=False,
+ ):
"""Setup initialized TG, perform optimized search, return intervals.
+ If transaction_scale is nonzero, all non-init trial durations
+ are set to 2.0 (as they do not affect the real trial duration)
+ and zero intermediate phases are used.
+ The initial phase still uses 1.0 seconds, to force remeasurement.
+ That makes initial phase act as a warmup.
+
:param frame_size: Frame size identifier or value [B].
:param traffic_profile: Module name as a traffic profile identifier.
See GPL/traffic_profiles/trex for implemented modules.
- :param minimum_transmit_rate: Minimal uni-directional
- target transmit rate [pps].
- :param maximum_transmit_rate: Maximal uni-directional
- target transmit rate [pps].
+ :param minimum_transmit_rate: Minimal load in transactions per second.
+ :param maximum_transmit_rate: Maximal load in transactions per second.
:param packet_loss_ratio: Fraction of packets lost, for PDR [1].
:param final_relative_width: Final lower bound transmit rate
cannot be more distant that this multiple of upper bound [1].
@@ -1079,9 +1297,20 @@ class OptimizedSearch:
:param doublings: How many doublings to do in external search step.
Default 1 is suitable for fairly stable tests,
less stable tests might get better overal duration with 2 or more.
+ :param ppta: Packets per transaction, aggregated over directions.
+ Needed for udp_pps which does not have a good transaction counter,
+ so we need to compute expected number of packets.
+ Default: 1.
+ :param resetter: Callable to reset DUT state for repeated trials.
:param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
Default: 2
- :param latency: Whether to measure latency during the trial.
+ :param transaction_duration: Total expected time to close transaction.
+ :param transaction_scale: Number of transactions to perform.
+ 0 (default) means unlimited.
+ :param transaction_type: An identifier specifying which counters
+ and formulas to use when computing attempted and failed
+ transactions. Default: "packet".
+ :param use_latency: Whether to measure latency during the trial.
Default: False.
:type frame_size: str or int
:type traffic_profile: str
@@ -1094,53 +1323,85 @@ class OptimizedSearch:
:type number_of_intermediate_phases: int
:type timeout: float
:type doublings: int
+ :type ppta: int
+ :type resetter: Optional[Callable[[], None]]
:type traffic_directions: int
- :type latency: bool
+ :type transaction_duration: float
+ :type transaction_scale: int
+ :type transaction_type: str
+ :type use_latency: bool
:returns: Structure containing narrowed down NDR and PDR intervals
and their measurements.
:rtype: NdrPdrResult
:raises RuntimeError: If total duration is larger than timeout.
"""
- minimum_transmit_rate *= traffic_directions
- maximum_transmit_rate *= traffic_directions
# we need instance of TrafficGenerator instantiated by Robot Framework
# to be able to use trex_stl-*()
tg_instance = BuiltIn().get_library_instance(
u"resources.libraries.python.TrafficGenerator"
)
+ # Overrides for fixed transaction amount.
+ # TODO: Move to robot code? We have two call sites, so this saves space,
+ # even though this is surprising for log readers.
+ if transaction_scale:
+ initial_trial_duration = 1.0
+ final_trial_duration = 2.0
+ number_of_intermediate_phases = 0
+ timeout = 3600.0
tg_instance.set_rate_provider_defaults(
- frame_size,
- traffic_profile,
+ frame_size=frame_size,
+ traffic_profile=traffic_profile,
+ sleep_till_duration=False,
+ ppta=ppta,
+ resetter=resetter,
traffic_directions=traffic_directions,
- latency=latency
+ transaction_duration=transaction_duration,
+ transaction_scale=transaction_scale,
+ transaction_type=transaction_type,
+ use_latency=use_latency,
)
algorithm = MultipleLossRatioSearch(
- measurer=tg_instance, final_trial_duration=final_trial_duration,
+ measurer=tg_instance,
+ final_trial_duration=final_trial_duration,
final_relative_width=final_relative_width,
number_of_intermediate_phases=number_of_intermediate_phases,
- initial_trial_duration=initial_trial_duration, timeout=timeout,
- doublings=doublings
+ initial_trial_duration=initial_trial_duration,
+ timeout=timeout,
+ doublings=doublings,
)
result = algorithm.narrow_down_ndr_and_pdr(
- minimum_transmit_rate, maximum_transmit_rate, packet_loss_ratio
+ min_rate=minimum_transmit_rate,
+ max_rate=maximum_transmit_rate,
+ packet_loss_ratio=packet_loss_ratio,
)
return result
@staticmethod
def perform_soak_search(
- frame_size, traffic_profile, minimum_transmit_rate,
- maximum_transmit_rate, plr_target=1e-7, tdpt=0.1,
- initial_count=50, timeout=1800.0, trace_enabled=False,
- traffic_directions=2, latency=False):
+ frame_size,
+ traffic_profile,
+ minimum_transmit_rate,
+ maximum_transmit_rate,
+ plr_target=1e-7,
+ tdpt=0.1,
+ initial_count=50,
+ timeout=7200.0,
+ ppta=1,
+ resetter=None,
+ trace_enabled=False,
+ traffic_directions=2,
+ transaction_duration=0.0,
+ transaction_scale=0,
+ transaction_type=u"packet",
+ use_latency=False,
+ ):
"""Setup initialized TG, perform soak search, return avg and stdev.
:param frame_size: Frame size identifier or value [B].
:param traffic_profile: Module name as a traffic profile identifier.
See GPL/traffic_profiles/trex for implemented modules.
- :param minimum_transmit_rate: Minimal uni-directional
- target transmit rate [pps].
- :param maximum_transmit_rate: Maximal uni-directional
- target transmit rate [pps].
+ :param minimum_transmit_rate: Minimal load in transactions per second.
+ :param maximum_transmit_rate: Maximal load in transactions per second.
:param plr_target: Fraction of packets lost to achieve [1].
:param tdpt: Trial duration per trial.
The algorithm linearly increases trial duration with trial number,
@@ -1150,10 +1411,24 @@ class OptimizedSearch:
This is needed because initial "search" phase of integrator
takes significant time even without any trial results.
:param timeout: The search will stop after this overall time [s].
+ :param ppta: Packets per transaction, aggregated over directions.
+ Needed for udp_pps which does not have a good transaction counter,
+ so we need to compute expected number of packets.
+ Default: 1.
+ :param resetter: Callable to reset DUT state for repeated trials.
:param trace_enabled: True if trace enabled else False.
+ This is very verbose tracing on numeric computations,
+ do not use in production.
+ Default: False
:param traffic_directions: Traffic is bi- (2) or uni- (1) directional.
Default: 2
- :param latency: Whether to measure latency during the trial.
+ :param transaction_duration: Total expected time to close transaction.
+ :param transaction_scale: Number of transactions to perform.
+ 0 (default) means unlimited.
+ :param transaction_type: An identifier specifying which counters
+ and formulas to use when computing attempted and failed
+ transactions. Default: "packet".
+ :param use_latency: Whether to measure latency during the trial.
Default: False.
:type frame_size: str or int
:type traffic_profile: str
@@ -1162,29 +1437,48 @@ class OptimizedSearch:
:type plr_target: float
:type initial_count: int
:type timeout: float
+ :type ppta: int
+ :type resetter: Optional[Callable[[], None]]
:type trace_enabled: bool
:type traffic_directions: int
- :type latency: bool
+ :type transaction_duration: float
+ :type transaction_scale: int
+ :type transaction_type: str
+ :type use_latency: bool
:returns: Average and stdev of estimated aggregate rate giving PLR.
:rtype: 2-tuple of float
"""
- minimum_transmit_rate *= traffic_directions
- maximum_transmit_rate *= traffic_directions
tg_instance = BuiltIn().get_library_instance(
u"resources.libraries.python.TrafficGenerator"
)
+ # Overrides for fixed transaction amount.
+ # TODO: Move to robot code? We have a single call site
+ # but MLRsearch has two and we want the two to be used similarly.
+ if transaction_scale:
+ timeout = 7200.0
tg_instance.set_rate_provider_defaults(
- frame_size,
- traffic_profile,
- traffic_directions=traffic_directions,
+ frame_size=frame_size,
+ traffic_profile=traffic_profile,
negative_loss=False,
- latency=latency
+ sleep_till_duration=True,
+ ppta=ppta,
+ resetter=resetter,
+ traffic_directions=traffic_directions,
+ transaction_duration=transaction_duration,
+ transaction_scale=transaction_scale,
+ transaction_type=transaction_type,
+ use_latency=use_latency,
)
algorithm = PLRsearch(
- measurer=tg_instance, trial_duration_per_trial=tdpt,
+ measurer=tg_instance,
+ trial_duration_per_trial=tdpt,
packet_loss_ratio_target=plr_target,
- trial_number_offset=initial_count, timeout=timeout,
- trace_enabled=trace_enabled
+ trial_number_offset=initial_count,
+ timeout=timeout,
+ trace_enabled=trace_enabled,
+ )
+ result = algorithm.search(
+ min_rate=minimum_transmit_rate,
+ max_rate=maximum_transmit_rate,
)
- result = algorithm.search(minimum_transmit_rate, maximum_transmit_rate)
return result
diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py
index e6474e566d..76501d6ad0 100644
--- a/resources/libraries/python/autogen/Regenerator.py
+++ b/resources/libraries/python/autogen/Regenerator.py
@@ -160,6 +160,9 @@ def add_default_testcases(testcase, iface, suite_id, file_out, tc_kwargs_list):
emit = False
if kwargs[u"frame_size"] not in MIN_FRAME_SIZE_VALUES:
emit = False
+ if u"-cps-" in suite_id or u"-pps-" in suite_id:
+ if kwargs[u"frame_size"] not in MIN_FRAME_SIZE_VALUES:
+ emit = False
if emit:
file_out.write(testcase.generate(**kwargs))
diff --git a/resources/libraries/robot/ip/nat.robot b/resources/libraries/robot/ip/nat.robot
index e80e1e1c85..0ebb58c2a0 100644
--- a/resources/libraries/robot/ip/nat.robot
+++ b/resources/libraries/robot/ip/nat.robot
@@ -40,10 +40,20 @@
| Initialize NAT44 endpoint-dependent mode in circular topology
| | [Documentation] | Initialization of NAT44 endpoint-dependent mode on DUT1
| |
+| | ... | This keyword also sets a test variable \${resetter}
+| | ... | to hold a callable which resets VPP state.
+| | ... | Keywords performing search will call it to get consistent trials.
+| | ... | Tests which do not wish to reset NAT state should use ramp-up,
+| | ... | so the resetter is not set if \${ramp_up_duration} variable
+| | ... | is (defined and) nonzero.
+| |
| | Configure inside and outside interfaces
| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
-| | Set NAT44 Address Range
+| | ${resetter} = | Set NAT44 Address Range
| | ... | ${dut1} | ${out_net} | ${out_net_end}
+| | ${ramp_up_duration} = | Get Ramp Up Duration
+| | Return From Keyword If | ${ramp_up_duration}
+| | Set Test Variable | \${resetter}
# TODO: Remove when 'ip4.Initialize IPv4 forwarding in circular topology' KW
# adapted to use IP values from variables
@@ -181,6 +191,13 @@
| Configure deterministic mode for NAT44
| | [Documentation] | Set deterministic behaviour of NAT44 (DET44).
| |
+| | ... | This keyword also sets a test variable \${resetter}
+| | ... | to hold a callable which resets VPP state.
+| | ... | Keywords performing search will call it to get consistent trials.
+| | ... | Tests which do not wish to reset NAT state should use ramp-up,
+| | ... | so the resetter is not set if \${ramp_up_duration} variable
+| | ... | is (defined and) nonzero.
+| |
| | ... | *Arguments:*
| | ... | - node - DUT node to set deterministic mode for NAT44 on.
| | ... | Type: dictionary
@@ -196,8 +213,11 @@
| |
| | [Arguments] | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} | ${subnet_out}
| |
-| | Set DET44 Mapping
+| | ${resetter} = | Set DET44 Mapping
| | ... | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} | ${subnet_out}
+| | ${ramp_up_duration} = | Get Ramp Up Duration
+| | Return From Keyword If | ${ramp_up_duration}
+| | Set Test Variable | \${resetter}
| Initialize NAT44 deterministic mode in circular topology
| | [Documentation] | Initialization of NAT44 deterministic mode (DET44)
diff --git a/resources/libraries/robot/performance/performance_actions.robot b/resources/libraries/robot/performance/performance_actions.robot
new file mode 100644
index 0000000000..2cf954a5b3
--- /dev/null
+++ b/resources/libraries/robot/performance/performance_actions.robot
@@ -0,0 +1,92 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Variables | resources/libraries/python/Constants.py
+| Resource | resources/libraries/robot/performance/performance_utils.robot
+|
+| Documentation
+| ... | Performance suite keywords - Actions related to performance tests.
+
+*** Keywords ***
+| Additional Statistics Action For bash-perf-stat
+| | [Documentation]
+| | ... | Additional Statistics Action for bash command "perf stat".
+| |
+| | Run Keyword If | ${extended_debug}==${True}
+| | ... | Perf Stat On All DUTs | ${nodes} | cpu_list=${cpu_alloc_str}
+
+| Additional Statistics Action For clear-show-runtime-with-traffic
+| | [Documentation]
+| | ... | Additional Statistics Action for clear and show runtime counters with
+| | ... | running traffic.
+| |
+| | ... | See documentation of the called keyword for required test variables.
+| |
+| | Clear and show runtime counters with running traffic
+
+| Additional Statistics Action For noop
+| | [Documentation]
+| | ... | Additional Statistics Action for no operation.
+| |
+| | No operation
+
+| Additional Statistics Action For vpp-clear-runtime
+| | [Documentation]
+| | ... | Additional Statistics Action for clear VPP runtime.
+| |
+| | VPP Clear Runtime On All DUTs | ${nodes}
+
+| Additional Statistics Action For vpp-clear-stats
+| | [Documentation]
+| | ... | Additional Statistics Action for clear VPP statistics.
+| |
+| | Clear Statistics On All DUTs | ${nodes}
+
+| Additional Statistics Action For vpp-enable-elog
+| | [Documentation]
+| | ... | Additional Statistics Action for enable VPP elog trace.
+| |
+| | VPP Enable Elog Traces On All DUTs | ${nodes}
+
+| Additional Statistics Action For vpp-enable-packettrace
+| | [Documentation]
+| | ... | Additional Statistics Action for enable VPP packet trace.
+| |
+| | Run Keyword If | ${extended_debug}==${True}
+| | ... | VPP Enable Traces On All DUTs | ${nodes} | fail_on_error=${False}
+
+| Additional Statistics Action For vpp-show-elog
+| | [Documentation]
+| | ... | Additional Statistics Action for show VPP elog trace.
+| |
+| | Show Event Logger On All DUTs | ${nodes}
+
+| Additional Statistics Action For vpp-show-packettrace
+| | [Documentation]
+| | ... | Additional Statistics Action for show VPP packet trace.
+| |
+| | Run Keyword If | ${extended_debug}==${True}
+| | ... | Show Packet Trace On All Duts | ${nodes} | maximum=${100}
+
+| Additional Statistics Action For vpp-show-runtime
+| | [Documentation]
+| | ... | Additional Statistics Action for show VPP runtime.
+| |
+| | VPP Show Runtime On All DUTs | ${nodes}
+
+| Additional Statistics Action For vpp-show-stats
+| | [Documentation]
+| | ... | Additional Statistics Action for show VPP statistics.
+| |
+| | Show Statistics On All DUTs | ${nodes}
diff --git a/resources/libraries/robot/performance/performance_display.robot b/resources/libraries/robot/performance/performance_display.robot
new file mode 100644
index 0000000000..e8dfdbbfbd
--- /dev/null
+++ b/resources/libraries/robot/performance/performance_display.robot
@@ -0,0 +1,240 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Documentation
+| ... | Performance suite keywords - Displaying results as test messages.
+| ... | This includes checks to fail test.
+
+*** Keywords ***
+| Check NDRPDR interval validity
+| | [Documentation]
+| | ... | Extract loss ratio of lower bound of the interval.
+| | ... | Fail if it does not reach the allowed value.
+| |
+| | ... | *Arguments:*
+| | ... | - interval - Measured interval. Type: ReceiveRateInterval
+| | ... | - packet_loss_ratio - Accepted loss (0.0 for NDR). Type: float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Check NDRPDR interval validity \| \${result.pdr_interval} \
+| | ... | \| \${0.005} \|
+| |
+| | [Arguments] | ${interval} | ${packet_loss_ratio}=${0.0}
+| |
+| | ${lower_bound} = | Set Variable | ${interval.measured_low}
+| | ${lower_bound_lf} = | Set Variable | ${lower_bound.loss_fraction}
+| | Return From Keyword If | ${lower_bound_lf} <= ${packet_loss_ratio}
+| | Set Test Variable | \${rate_for_teardown} | ${lower_bound_lf}
+| | ${message}= | Catenate | SEPARATOR=${SPACE}
+| | ... | Minimal rate loss fraction ${lower_bound_lf}
+| | ... | does not reach target ${packet_loss_ratio}.
+| | ${message_zero} = | Set Variable | Zero packets forwarded!
+| | ${message_other} = | Set Variable | ${lower_bound.loss_count} packets lost.
+| | ${message} = | Set Variable If | ${lower_bound_lf} >= 1.0
+| | ... | ${message}${\n}${message_zero} | ${message}${\n}${message_other}
+| | Fail | ${message}
+
+| Display Reconfig Test Message
+| | [Documentation]
+| | ... | Display the number of packets lost (bidirectionally)
+| | ... | due to reconfiguration under traffic.
+| |
+| | ... | *Arguments:*
+| | ... | - result - Result of bidirectional measurtement.
+| | ... | Type: ReceiveRateMeasurement
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display Reconfig Test Message \| \${result} \|
+| |
+| | [Arguments] | ${result}
+| |
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${packet_rate} = | Evaluate | ${result.target_tr} * ${ppta}
+| | ${packet_loss} = | Set Variable | ${result.loss_count}
+| | ${time_loss} = | Evaluate | ${packet_loss} / ${packet_rate}
+| | Set Test Message | Packets lost due to reconfig: ${packet_loss}
+| | Set Test Message | ${\n}Implied time lost: ${time_loss} | append=yes
+
+| Display result of NDRPDR search
+| | [Documentation]
+| | ... | Display result of NDR+PDR search, both quantities, both bounds,
+| | ... | aggregate in units given by trasaction type, e.g. by default
+| | ... | in packet per seconds and Gbps total bandwidth
+| | ... | (for initial packet size).
+| | ... |
+| | ... | The bound to display is encoded as target rate, it is assumed
+| | ... | it is in transactions per second. Bidirectional traffic
+| | ... | transaction is understood as having 2 packets, for this purpose.
+| | ... |
+| | ... | Througput is calculated as:
+| | ... | Sum of measured rate over streams
+| | ... | Bandwidth is calculated as:
+| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
+| | ... | If the results contain latency data, display them for lower bounds.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - frame_size_num - L2 Frame Size [B]. Type: integer or float
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
+| | ... | *Arguments:*
+| | ... | - result - Measured result data. Aggregate rate, tps or pps.
+| | ... | Type: NdrPdrResult
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display result of NDRPDR search \| \${result} \|
+| |
+| | [Arguments] | ${result}
+| |
+| | Display single bound | NDR_LOWER
+| | ... | ${result.ndr_interval.measured_low.target_tr}
+| | ... | ${result.ndr_interval.measured_low.latency}
+| | Display single bound | NDR_UPPER
+| | ... | ${result.ndr_interval.measured_high.target_tr}
+| | Display single bound | PDR_LOWER
+| | ... | ${result.pdr_interval.measured_low.target_tr}
+| | ... | ${result.pdr_interval.measured_low.latency}
+| | Display single bound | PDR_UPPER
+| | ... | ${result.pdr_interval.measured_high.target_tr}
+
+| Display result of soak search
+| | [Documentation]
+| | ... | Display result of soak search, avg+-stdev, as upper/lower bounds.
+| | ... | See Display single bound for units used.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
+| | ... | string
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
+| | ... | *Arguments:*
+| | ... | - avg - Estimated average critical load [pps]. Type: float
+| | ... | - stdev - Standard deviation of critical load [pps]. Type: float
+| |
+| | ... | *Returns:*
+| | ... | - Lower and upper bound of critical load [pps]. Type: 2-tuple of float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display result of soak search \| \${100000} \| \${100} \|
+| |
+| | [Arguments] | ${avg} | ${stdev}
+| |
+| | ${avg} = | Convert To Number | ${avg}
+| | ${stdev} = | Convert To Number | ${stdev}
+| | ${lower} = | Evaluate | ${avg} - ${stdev}
+| | ${upper} = | Evaluate | ${avg} + ${stdev}
+| | Display single bound | PLRsearch lower bound | ${lower}
+| | Display single bound | PLRsearch upper bound | ${upper}
+| | Return From Keyword | ${lower} | ${upper}
+
+| Display single bound
+| | [Documentation]
+| | ... | Compute and display one bound of NDR+PDR (or soak) search result.
+| | ... | If the latency string is present, it is displayed as well.
+| | ... |
+| | ... | The bound to display is given as target transfer rate, it is assumed
+| | ... | it is in transactions per second. Bidirectional traffic
+| | ... | transaction is understood as having 2 packets, for this purpose.
+| | ... |
+| | ... | Pps values are aggregate in packet per seconds,
+| | ... | and Gbps total bandwidth (for initial packet size).
+| | ... |
+| | ... | Througput is calculated as:
+| | ... | Sum of measured rate over streams
+| | ... | Bandwidth is calculated as:
+| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
+| | ... | If the results contain latency data, display them for lower bounds.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
+| | ... | *Arguments:*
+| | ... | - text - Flavor text describing which bound is this. Type: string
+| | ... | - tps - Transaction rate [tps]. Type: float
+| | ... | - latency - Latency data to display if non-empty. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display single bound \| NDR lower bound \| \${12345.67} \
+| | ... | \| latency=\${EMPTY} \|
+| |
+| | [Arguments] | ${text} | ${tps} | ${latency}=${EMPTY}
+| |
+| | ${transaction_type} = | Get Transaction Type
+| | Run Keyword And Return If | """_cps""" in """${transaction_type}"""
+| | ... | Display single cps bound | ${text} | ${tps} | ${latency}
+| | Display single pps bound | ${text} | ${tps} | ${latency}
+
+| Display single cps bound
+| | [Documentation]
+| | ... | Display one bound of NDR+PDR search for CPS tests.
+| | ... | The bounds are expressed as transactions per second.
+| | ... | If the latency string is present, it is displayed as well.
+| |
+| | ... | *Arguments:*
+| | ... | - text - Flavor text describing which bound is this. Type: string
+| | ... | - tps - Transaction rate [tps]. Type: float
+| | ... | - latency - Latency data to display if non-empty. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display single cps bound \| NDR lower bound \| \${12345.67} \
+| | ... | \| latency=\${EMPTY} \|
+| |
+| | [Arguments] | ${text} | ${tps} | ${latency}=${EMPTY}
+| |
+| | Set Test Message | ${\n}${text}: ${tps} CPS | append=yes
+| | Return From Keyword If | not """${latency}"""
+| | Set Test Message | ${\n}LATENCY [min/avg/max/hdrh] per stream: ${latency}
+| | ... | append=yes
+
+| Display single pps bound
+| | [Documentation]
+| | ... | Display one pps bound of NDR+PDR search,
+| | ... | aggregate in packet per seconds and Gbps total bandwidth
+| | ... | (for initial packet size).
+| | ... |
+| | ... | The bound to display is given as target transfer rate, it is assumed
+| | ... | it is in transactions per second. Bidirectional traffic
+| | ... | transaction is understood as having 2 packets, for this purpose.
+| | ... |
+| | ... | Througput is calculated as:
+| | ... | Sum of measured rates over streams
+| | ... | Bandwidth is calculated as:
+| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
+| | ... | If the latency string is present, it is displayed as well.
+| |
+| | ... | *Arguments:*
+| | ... | - text - Flavor text describing which bound is this. Type: string
+| | ... | - tps - Transaction rate [tps]. Type: float
+| | ... | - latency - Latency data to display if non-empty. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Display single pps bound \| NDR lower bound \| \${12345.67} \
+| | ... | \| latency=\${EMPTY} \|
+| |
+| | [Arguments] | ${text} | ${tps} | ${latency}=${EMPTY}
+| |
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${pps} = | Evaluate | ${tps} * ${ppta}
+| | ${bandwidth} = | Evaluate | ${pps} * (${avg_frame_size}+20)*8 / 1e9
+| | Set Test Message | ${\n}${text}: ${pps} pps, | append=yes
+| | Set Test Message | ${bandwidth} Gbps (initial) | append=yes
+| | Return From Keyword If | not """${latency}"""
+| | Set Test Message | ${\n}LATENCY [min/avg/max/hdrh] per stream: ${latency}
+| | ... | append=yes
diff --git a/resources/libraries/robot/performance/performance_limits.robot b/resources/libraries/robot/performance/performance_limits.robot
deleted file mode 100644
index 332ed9368b..0000000000
--- a/resources/libraries/robot/performance/performance_limits.robot
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Documentation | Performance suite keywords - Handling NIC and TG limits.
-| Library | Collections
-| Variables | ${CURDIR}/../../python/Constants.py
-
-*** Keywords ***
-| Get Average Frame Size
-| | [Documentation]
-| | ... | Framesize can be either integer in case of a single packet
-| | ... | in stream, or set of packets in case of IMIX type or simmilar.
-| |
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize. Type: integer or string
-| | ... | - overhead - Overhead in bytes; default value: ${0}. Type: integer
-| |
-| | ... | *Returns:*
-| | ... | Average frame size including overhead. Type: float
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Get Average Frame Size \| IMIX_v4_1 \|
-| |
-| | [Arguments] | ${frame_size} | ${overhead}=${0}
-| |
-| | ${frame_size} = | Run Keyword If | '${frame_size}' == 'IMIX_v4_1'
-| | ... | Set Variable | ${353.83333}
-| | ... | ELSE
-| | ... | Convert To Number | ${frame_size}
-| | ${avg_frame_size} = | Evaluate | ${frame_size} + ${overhead}
-| | Return From Keyword | ${avg_frame_size}
-
-| Get Maximum Frame Size
-| | [Documentation]
-| | ... | Framesize can be either integer in case of a single packet
-| | ... | in stream, or set of packets in case of IMIX type or simmilar.
-| |
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize. Type: integer or string
-| | ... | - overhead - Overhead in bytes; default value: ${0}. Type: integer
-| |
-| | ... | *Returns:*
-| | ... | Maximum frame size including overhead. Type: float
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Get Maximum Frame Size \| IMIX_v4_1 \|
-| |
-| | [Arguments] | ${frame_size} | ${overhead}=${0}
-| |
-| | ${frame_size} = | Run Keyword If | '${frame_size}' == 'IMIX_v4_1'
-| | ... | Set Variable | ${1518}
-| | ... | ELSE
-| | ... | Convert To Number | ${frame_size}
-| | ${max_frame_size} = | Evaluate | ${frame_size} + ${overhead}
-| | Return From Keyword | ${max_frame_size}
-
-| Set Max Rate And Jumbo
-| | [Documentation]
-| | ... | Input framesize can be either integer in case of a single packet
-| | ... | in stream, or IMIX string defining mix of packets.
-| | ... | For jumbo frames detection, the maximal packet size is relevant.
-| | ... | For maximal transmit rate, the average packet size is relevant.
-| | ... | In both cases, encapsulation overhead (if any) has effect.
-| | ... | The maximal rate is computed from NIC name.
-| | ... | The implementation works by mapping from exact
-| | ... | whitelisted NIC names.
-| | ... | The mapping is hardcoded in nic_limits.yaml
-| | ... | TODO: Make the mapping from NIC names case insensistive.
-| |
-| | ... | TODO: Make pps limit also definable per NIC.
-| |
-| | ... | This keyword computes maximal unidirectional transmit rate
-| | ... | and jumbo boolean (some suites need that for configuration decisions).
-| | ... | To streamline suite autogeneration, both input and output values
-| | ... | are communicated as test (or broader scope) variables,
-| | ... | instead of explicit arguments and return values.
-| |
-| | ... | *Test (or broader scope) variables read:*
-| | ... | - nic_name - Name of bottleneck NIC. Type: string
-| | ... | - overhead - Overhead in bytes; default value: 0. Type: integer
-| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
-| | ... | string
-| |
-| | ... | *Test variables set:*
-| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
-| | ... | Type: float
-| | ... | - jumbo - Jumbo boolean, true if jumbo packet support has to be
-| | ... | enabled. Type: boolean
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Set Test Variable \| \${frame_size} \| IMIX_v4_1 \|
-| | ... | \| Set Max Rate And Jumbo \|
-| |
-| | # Negative overhead is possible, if DUT-DUT traffic is less encapsulated
-| | # than TG-DUT traffic.
-| | # TODO: Re-check overhead values in suites with both traffics encapsulated.
-| | # TODO: Improve layered setup to detect encap/decap and update overhead.
-| | ${overhead} = | Set Variable If | ${overhead} >= 0 | ${overhead} | ${0}
-| | ${pps_limit} = | Get From Dictionary
-| | ... | ${NIC_NAME_TO_PPS_LIMIT} | ${nic_name}
-| | ${bps_limit} = | Get From Dictionary
-| | ... | ${NIC_NAME_TO_BPS_LIMIT} | ${nic_name}
-| | # swo := size_with_overhead
-| | ${avg_swo} = | Get Average Frame Size | ${frame_size} | ${overhead}
-| | ${rate} = | Evaluate | ${bps_limit} / ((${avg_swo} + 20.0) * 8)
-| | ${max_rate} = | Set Variable If | ${rate} > ${pps_limit}
-| | ... | ${pps_limit} | ${rate}
-| | Set Test Variable | \${max_rate}
-| | Set Jumbo
-
-| Set Jumbo
-| | [Documentation]
-| | ... | For jumbo frames detection, the maximal packet size is relevant,
-| | ... | encapsulation overhead (if any) has effect.
-| |
-| | ... | This keyword computes jumbo boolean (some suites need that for
-| | ... | configuration decisions).
-| | ... | To streamline suite autogeneration, both input and output values
-| | ... | are communicated as test (or broader scope) variables,
-| | ... | instead of explicit arguments and return values.
-| |
-| | ... | *Test (or broader scope) variables read:*
-| | ... | - overhead - Overhead in bytes; default value: 0. Type: integer
-| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
-| | ... | string
-| |
-| | ... | *Test variables set:*
-| | ... | - jumbo - Jumbo boolean, true if jumbo packet support has to be
-| | ... | enabled. Type: boolean
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Set Jumnbo \|
-| |
-| | ${overhead} = | Set Variable If | ${overhead} >= 0 | ${overhead} | ${0}
-| | ${max_swo} = | Get Maximum Frame Size | ${frame_size} | ${overhead}
-| | ${jumbo} = | Set Variable If | ${max_swo} < 1522
-| | ... | ${False} | ${True}
-| | Set Test Variable | \${jumbo}
diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot
index b9c4dc08d1..ffafd40854 100644
--- a/resources/libraries/robot/performance/performance_utils.robot
+++ b/resources/libraries/robot/performance/performance_utils.robot
@@ -22,16 +22,116 @@
| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl
| Library | resources.libraries.python.Trace
| Variables | resources/libraries/python/Constants.py
+| Resource | resources/libraries/robot/performance/performance_actions.robot
+| Resource | resources/libraries/robot/performance/performance_display.robot
+| Resource | resources/libraries/robot/performance/performance_vars.robot
|
| Documentation
| ... | Performance suite keywords - utilities to find and verify NDR and PDR.
+| ... | See performance_vars.robot for values accessed via there.
-*** Variables ***
-| ${trial_duration}= | ${PERF_TRIAL_DURATION}
-| ${trial_multiplicity}= | ${PERF_TRIAL_MULTIPLICITY}
-| ${extended_debug}= | ${EXTENDED_DEBUG}
+# Library/suite scope variables are maybe defined in performance_vars.robot.
*** Keywords ***
+| Clear and show runtime counters with running traffic
+| | [Documentation]
+| | ... | Start traffic at specified rate then clear runtime counters on all
+| | ... | DUTs. Wait for specified amount of time and capture runtime counters
+| | ... | on all DUTs. Finally stop traffic.
+| |
+| | ... | TODO: Support resetter if this is not the first trial-ish action?
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Clear and show runtime counters with running traffic \|
+| |
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${runtime_duration} = | Get Runtime Duration
+| | ${runtime_rate} = | Get Runtime Rate
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | # Duration of -1 means we will stop traffic manually.
+| | Send traffic on tg
+| | ... | duration=${-1}
+| | ... | rate=${runtime_rate}
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | async_call=${True}
+| | ... | ppta=${ppta}
+| | ... | use_latency=${use_latency}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
+| | ... | duration_limit=${0.0}
+| | FOR | ${action} | IN | @{pre_run_stats}
+| | | Run Keyword | Additional Statistics Action For ${action}
+| | END
+| | Sleep | ${runtime_duration}
+| | FOR | ${action} | IN | @{post_run_stats}
+| | | Run Keyword | Additional Statistics Action For ${action}
+| | END
+| | Stop traffic on tg
+
+| Find critical load using PLRsearch
+| | [Documentation]
+| | ... | Find boundaries for troughput (of hardcoded target loss ratio)
+| | ... | using PLRsearch algorithm.
+| | ... | Display results as formatted test message.
+| | ... | Fail if computed lower bound is 110% of the minimal rate or less.
+| | ... | Input rates are understood as uni-directional,
+| | ... | reported result contains aggregate rates.
+| | ... | Currently, the min_rate value is hardcoded to match test teardowns.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - traffic_profile - Name of module defining traffc for measurements.
+| | ... | Type: string
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
+| | ... | string
+| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | Type: float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Find critical load using PLR search \|
+| |
+| | # Get values via performance_vars.
+| | ${max_rate} = | Get Max Rate
+| | ${min_rate} = | Get Min Rate
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${resetter} = | Get Resetter
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | ${average} | ${stdev} = | Perform soak search
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | minimum_transmit_rate=${min_rate}
+| | ... | maximum_transmit_rate=${max_rate}
+| | ... | plr_target=${1e-7}
+| | ... | tdpt=${0.1}
+| | ... | initial_count=${50}
+| | ... | ppta=${ppta}
+| | ... | resetter=${resetter}
+| | ... | timeout=${1800.0}
+| | ... | trace_enabled=${False}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_type=${transaction_type}
+| | ... | use_latency=${use_latency}
+| | ${lower} | ${upper} = | Display result of soak search
+| | ... | ${average} | ${stdev}
+| | Set Test Variable | \${rate for teardown} | ${lower}
+| | Should Not Be True | 1.1 * ${min_rate} > ${lower}
+| | ... | Lower bound ${lower} too small for unidirectional minimum ${min_rate}.
+
| Find NDR and PDR intervals using optimized search
| | [Documentation]
| | ... | Find boundaries for RFC2544 compatible NDR and PDR values
@@ -41,386 +141,243 @@
| | ... | Input rates are understood as uni-directional,
| | ... | reported result contains aggregate rates.
| | ... | Additional latency measurements are performed for smaller loads,
-| | ... | their results are also displayed.
+| | ... | even if latency stream is disabled in search. Their results
+| | ... | are also displayed.
| | ... | Finally, two measurements for runtime stats are done (not displayed).
| | ... | Currently, the min_rate value is hardcoded to 90kpps,
| | ... | allowing measurement at 10% of the discovered rate
| | ... | without breaking latency streams.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
| |
| | ... | *Test (or broader scope) variables read:*
| | ... | - traffic_profile - Name of module defining traffc for measurements.
| | ... | Type: string
| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
| | ... | string
-| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | - max_rate - Calculated maximal transmit rate [tps].
| | ... | Type: float
-| |
-| | ... | *Arguments:*
-| | ... | - packet_loss_ratio - Accepted loss during search. Type: float
-| | ... | - final_relative_width - Maximal width multiple of upper. Type: float
-| | ... | - final_trial_duration - Duration of final trials [s]. Type: float
-| | ... | - initial_trial_duration - Duration of initial trials [s]. Type: float
-| | ... | - intermediate phases - Number of intermediate phases [1].
-| | ... | Type: integer
-| | ... | - timeout - Fail if search duration is longer [s]. Type: float
-| | ... | - doublings - How many doublings to do when expanding [1].
-| | ... | Type: integer
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - latency_duration - Duration for latency-specific trials. Type: float
-| | ... | - latency - False to disable latency measurement; default value: True.
-| | ... | Type: boolean
+| | ... | - resetter - Callable to reset DUT state before each trial.
+| | ... | - transaction_scale - Number of ASTF transaction (zero if unlimited).
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
+| | ... | - disable_latency - If true, skip anything related to latency.
+| | ... | Useful if transaction_scale is high and TPS is low. Default: false.
| |
| | ... | *Example:*
| |
-| | ... | \| Find NDR and PDR intervals using optimized search \| \${0.005} \
-| | ... | \| \${0.005} \| \${30.0} \| \${1.0} \| \${2} \| \${600.0} \| \${2} \
-| | ... | \| \${2} \| ${5.0} \|
-| |
-| | [Arguments] | ${packet_loss_ratio}=${0.005}
-| | ... | ${final_relative_width}=${0.005} | ${final_trial_duration}=${30.0}
-| | ... | ${initial_trial_duration}=${1.0}
-| | ... | ${number_of_intermediate_phases}=${2} | ${timeout}=${720.0}
-| | ... | ${doublings}=${2} | ${traffic_directions}=${2}
-| | ... | ${latency_duration}=${PERF_TRIAL_LATENCY_DURATION}
-| | ... | ${latency}=${True}
-| |
-| | # Latency measurements will need more than 9000 pps.
-| | ${result} = | Perform optimized ndrpdr search | ${frame_size}
-| | ... | ${traffic_profile} | ${9001} | ${max_rate}
-| | ... | ${packet_loss_ratio} | ${final_relative_width}
-| | ... | ${final_trial_duration} | ${initial_trial_duration}
-| | ... | ${number_of_intermediate_phases} | timeout=${timeout}
-| | ... | doublings=${doublings} | traffic_directions=${traffic_directions}
-| | ... | latency=${latency}
+| | ... | \| Find NDR and PDR intervals using optimized search \|
+| |
+| | # Get values via performance_vars.
+| | ${disable_latency} = | Get Disable Latency
+| | ${max_rate} = | Get Max Rate
+| | ${min_rate} = | Get Min Rate
+| | # \${packet_loss_ratio} is used twice so it is worth a variable.
+| | ${packet_loss_ratio} = | Get Packet Loss Ratio
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${resetter} = | Get Resetter
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | ${result} = | Perform optimized ndrpdr search
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | minimum_transmit_rate=${min_rate}
+| | ... | maximum_transmit_rate=${max_rate}
+| | ... | packet_loss_ratio=${packet_loss_ratio}
+| | ... | final_relative_width=${0.005}
+| | ... | final_trial_duration=${30.0}
+| | ... | initial_trial_duration=${1.0}
+| | ... | number_of_intermediate_phases=${2}
+| | ... | timeout=${720.0}
+| | ... | doublings=${2}
+| | ... | ppta=${ppta}
+| | ... | resetter=${resetter}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
+| | ... | use_latency=${use_latency}
| | Display result of NDRPDR search | ${result}
| | Check NDRPDR interval validity | ${result.pdr_interval}
| | ... | ${packet_loss_ratio}
| | Check NDRPDR interval validity | ${result.ndr_interval}
-| | ${pdr_sum}= | Set Variable | ${result.pdr_interval.measured_low.target_tr}
-| | ${pdr_per_stream}= | Evaluate | ${pdr_sum} / float(${traffic_directions})
-| | ${ndr_sum}= | Set Variable | ${result.ndr_interval.measured_low.target_tr}
-| | ${ndr_per_stream}= | Evaluate | ${ndr_sum} / float(${traffic_directions})
-| | ${rate}= | Evaluate | 0.9 * ${pdr_per_stream}
-| | Run Keyword If | ${latency}
-| | ... | Measure and show latency at specified rate | Latency at 90% PDR:
-| | ... | ${latency_duration} | ${rate} | ${framesize}
-| | ... | ${traffic_profile} | ${traffic_directions}
-| | ${rate}= | Evaluate | 0.5 * ${pdr_per_stream}
-| | Run Keyword If | ${latency}
-| | ... | Measure and show latency at specified rate | Latency at 50% PDR:
-| | ... | ${latency_duration} | ${rate} | ${framesize}
-| | ... | ${traffic_profile} | ${traffic_directions}
-| | ${rate}= | Evaluate | 0.1 * ${pdr_per_stream}
-| | Run Keyword If | ${latency}
-| | ... | Measure and show latency at specified rate | Latency at 10% PDR:
-| | ... | ${latency_duration} | ${rate} | ${framesize}
-| | ... | ${traffic_profile} | ${traffic_directions}
-| | Run Keyword If | ${latency}
-| | ... | Measure and show latency at specified rate | Latency at 0% PDR:
-| | ... | ${latency_duration} | ${0} | ${framesize}
-| | ... | ${traffic_profile} | ${traffic_directions}
-| | # Finally, trials with runtime and other stats.
+| | ${pdr} = | Set Variable | ${result.pdr_interval.measured_low.target_tr}
+| | ${ndr} = | Set Variable | ${result.ndr_interval.measured_low.target_tr}
| | # We expect NDR and PDR to have different-looking stats.
| | Send traffic at specified rate
-| | ... | ${1.0} | ${pdr_per_stream} | ${framesize} | ${traffic_profile}
-| | ... | traffic_directions=${traffic_directions}
-| | Send traffic at specified rate
-| | ... | ${1.0} | ${ndr_per_stream} | ${framesize} | ${traffic_profile}
-| | ... | traffic_directions=${traffic_directions}
+| | ... | rate=${pdr}
+| | ... | trial_duration=${1.0}
+| | ... | trial_multiplicity=${1}
+| | ... | use_latency=${use_latency}
+| | ... | duration_limit=${1.0}
+| | Run Keyword If | ${ndr} != ${pdr}
+| | ... | Send traffic at specified rate
+| | ... | rate=${ndr}
+| | ... | trial_duration=${1.0}
+| | ... | trial_multiplicity=${1}
+| | ... | use_latency=${use_latency}
+| | ... | duration_limit=${1.0}
+| | Return From Keyword If | ${disable_latency}
+| | ${rate} = | Evaluate | 0.9 * ${pdr}
+| | Measure and show latency at specified rate | Latency at 90% PDR: | ${rate}
+| | ${rate} = | Evaluate | 0.5 * ${pdr}
+| | Measure and show latency at specified rate | Latency at 50% PDR: | ${rate}
+| | ${rate} = | Evaluate | 0.1 * ${pdr}
+| | Measure and show latency at specified rate | Latency at 10% PDR: | ${rate}
+| | Measure and show latency at specified rate | Latency at 0% PDR: | ${0.0}
| Find Throughput Using MLRsearch
| | [Documentation]
-| | ... | Find and return lower bound PDR (zero PLR by default)
+| | ... | Find and return lower bound NDR (zero PLR)
| | ... | aggregate throughput using MLRsearch algorithm.
| | ... | Input rates are understood as uni-directional.
| | ... | Currently, the min_rate value is hardcoded to match test teardowns.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
| |
| | ... | *Test (or broader scope) variables read:*
| | ... | - traffic_profile - Name of module defining traffc for measurements.
| | ... | Type: string
| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
| | ... | string
-| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | - max_rate - Calculated maximal transmit rate [tps].
| | ... | Type: float
-| |
-| | ... | *Arguments:*
-| | ... | - packet_loss_ratio - Accepted loss during search. Type: float
-| | ... | - final_relative_width - Maximal width multiple of upper. Type: float
-| | ... | - final_trial_duration - Duration of final trials [s]. Type: float
-| | ... | - initial_trial_duration - Duration of initial trials [s]. Type: float
-| | ... | - intermediate phases - Number of intermediate phases [1].
-| | ... | Type: integer
-| | ... | - timeout - Fail if search duration is longer [s]. Type: float
-| | ... | - doublings - How many doublings to do when expanding [1].
-| | ... | Type: integer
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - latency - True to enable latency measurement; default value: False.
-| | ... | Type: boolean
+| | ... | - resetter - Callable to reset DUT state before each trial.
+| | ... | - transaction_scale - Number of ASTF transaction (zero if unlimited).
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
| |
| | ... | *Returns:*
| | ... | - Lower bound for bi-directional throughput at given PLR. Type: float
| |
| | ... | *Example:*
| |
-| | ... | \| \${throughpt}= \| Find Throughput Using MLRsearch \| \${0} \
-| | ... | \| \${0.001} \| \${10.0}\| \${1.0} \| \${1} \| \${720.0} \| \${2} \
-| | ... | \| \${2} \|
-| |
-| | [Arguments] | ${packet_loss_ratio}=${0.0}
-| | ... | ${final_relative_width}=${0.001} | ${final_trial_duration}=${10.0}
-| | ... | ${initial_trial_duration}=${1.0}
-| | ... | ${number_of_intermediate_phases}=${1} | ${timeout}=${720.0}
-| | ... | ${doublings}=${2} | ${traffic_directions}=${2} | ${latency}=${False}
-| |
-| | ${result} = | Perform optimized ndrpdr search | ${frame_size}
-| | ... | ${traffic_profile} | ${10000} | ${max_rate}
-| | ... | ${packet_loss_ratio} | ${final_relative_width}
-| | ... | ${final_trial_duration} | ${initial_trial_duration}
-| | ... | ${number_of_intermediate_phases} | timeout=${timeout}
-| | ... | doublings=${doublings} | traffic_directions=${traffic_directions}
-| | ... | latency=${latency}
+| | ... | \| \${throughpt}= \| Find Throughput Using MLRsearch \|
+| |
+| | ${max_rate} = | Get Max Rate
+| | ${min_rate} = | Get Min Rate
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${resetter} = | Get Resetter
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | ${result} = | Perform optimized ndrpdr search
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | minimum_transmit_rate=${min_rate}
+| | ... | maximum_transmit_rate=${max_rate}
+| | ... | packet_loss_ratio=${0.0}
+| | ... | final_relative_width=${0.001}
+| | ... | final_trial_duration=${10.0}
+| | ... | initial_trial_duration=${1.0}
+| | ... | number_of_intermediate_phases=${1}
+| | ... | timeout=${720}
+| | ... | doublings=${2}
+| | ... | ppta=${ppta}
+| | ... | resetter=${resetter}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
+| | ... | use_latency=${use_latency}
| | Check NDRPDR interval validity | ${result.pdr_interval}
-| | ... | ${packet_loss_ratio}
+| | ... | ${0.0}
| | Return From Keyword | ${result.pdr_interval.measured_low.target_tr}
-| Find critical load using PLRsearch
-| | [Documentation]
-| | ... | Find boundaries for troughput (of given target loss ratio)
-| | ... | using PLRsearch algorithm.
-| | ... | Display results as formatted test message.
-| | ... | Fail if computed lower bound 110% of the minimal rate or less.
-| | ... | Input rates are understood as uni-directional,
-| | ... | reported result contains aggregate rates.
-| | ... | Currently, the min_rate value is hardcoded to match test teardowns.
-| |
-| | ... | *Test (or broader scope) variables read:*
-| | ... | - traffic_profile - Name of module defining traffc for measurements.
-| | ... | Type: string
-| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
-| | ... | string
-| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
-| | ... | Type: float
-| |
-| | ... | *Arguments:*
-| | ... | - packet_loss_ratio - Accepted loss during search. Type: float
-| | ... | - timeout - Stop when search duration is longer [s]. Type: float
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - latency - True to enable latency measurement; default value: False.
-| | ... | Type: boolean
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Find critical load using PLR search \| \${1e-7} \| \${120} \
-| | ... | \| \${2} \|
-| |
-| | [Arguments] | ${packet_loss_ratio}=${1e-7} | ${timeout}=${1800.0}
-| | ... | ${traffic_directions}=${2} | ${latency}=${False}
-| |
-| | ${min_rate} = | Set Variable | ${10000}
-| | ${average} | ${stdev} = | Perform soak search | ${frame_size}
-| | ... | ${traffic_profile} | ${min_rate} | ${max_rate}
-| | ... | ${packet_loss_ratio} | timeout=${timeout}
-| | ... | traffic_directions=${traffic_directions} | latency=${latency}
-| | ${lower} | ${upper} = | Display result of soak search
-| | ... | ${average} | ${stdev}
-| | Should Not Be True | 1.1 * ${traffic_directions} * ${min_rate} > ${lower}
-| | ... | Lower bound ${lower} too small for unidirectional minimum ${min_rate}.
-
-| Display single bound
-| | [Documentation]
-| | ... | Display one bound of NDR+PDR search,
-| | ... | in packet per seconds (total and per stream)
-| | ... | and Gbps total bandwidth (for initial packet size).
-| | ... | Througput is calculated as:
-| | ... | Sum of measured rates over streams
-| | ... | Bandwidth is calculated as:
-| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
-| | ... | The given result should contain latency data as well.
-| |
-| | ... | *Arguments:*
-| | ... | - text - Flavor text describing which bound is this. Type: string
-| | ... | - rate_total - Total (not per stream) measured Tr [pps]. Type: float
-| | ... | - frame_size - L2 Frame Size [B]. Type: integer
-| | ... | - latency - Latency data to display if non-empty. Type: string
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Display single bound \| NDR lower bound \| \${12345.67} \
-| | ... | \| \${64} \| latency=\${EMPTY} \|
-| |
-| | [Arguments] | ${text} | ${rate_total} | ${frame_size} | ${latency}=${EMPTY}
-| |
-| | ${bandwidth_total} = | Evaluate | ${rate_total} * (${frame_size}+20)*8 / 1e9
-| | Set Test Message | ${\n}${text}: ${rate_total} pps, | append=yes
-| | Set Test Message | ${bandwidth_total} Gbps (initial) | append=yes
-| | Return From Keyword If | not """${latency}"""
-| | Set Test Message | ${\n}LATENCY [min/avg/max/hdrh] per stream: ${latency}
-| | ... | append=yes
-
-| Display Reconfig Test Message
-| | [Documentation]
-| | ... | Display the number of packets lost (bidirectionally)
-| | ... | due to reconfiguration under traffic.
-| |
-| | ... | *Arguments:*
-| | ... | - result - Result of bidirectional measurtement.
-| | ... | Type: ReceiveRateMeasurement
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Display Reconfig Test Message \| \${result} \|
-| |
-| | [Arguments] | ${result}
-| |
-| | Set Test Message | Packets lost due to reconfig: ${result.loss_count}
-| | ${time_lost} = | Evaluate | ${result.loss_count} / ${result.target_tr}
-| | Set Test Message | ${\n}Implied time lost: ${time_lost} | append=yes
-
-| Display result of NDRPDR search
-| | [Documentation]
-| | ... | Display result of NDR+PDR search, both quantities, both bounds,
-| | ... | aggregate in packet per seconds
-| | ... | and Gbps total bandwidth (for initial packet size).
-| | ... | Througput is calculated as:
-| | ... | Sum of measured rate over streams
-| | ... | Bandwidth is calculated as:
-| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
-| | ... | The given result should contain latency data as well.
-| |
-| | ... | *Test (or broader scope) variables read:*
-| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
-| | ... | string
-| | ... | *Arguments:*
-| | ... | - result - Measured result data per stream [pps]. Type: NdrPdrResult
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Display result of NDRPDR search \| \${result} \|
-| |
-| | [Arguments] | ${result}
-| |
-| | ${frame_size} = | Get Average Frame Size | ${frame_size}
-| | Display single bound | NDR_LOWER
-| | ... | ${result.ndr_interval.measured_low.target_tr} | ${frame_size}
-| | ... | ${result.ndr_interval.measured_low.latency}
-| | Display single bound | NDR_UPPER
-| | ... | ${result.ndr_interval.measured_high.target_tr} | ${frame_size}
-| | Display single bound | PDR_LOWER
-| | ... | ${result.pdr_interval.measured_low.target_tr} | ${frame_size}
-| | ... | ${result.pdr_interval.measured_low.latency}
-| | Display single bound | PDR_UPPER
-| | ... | ${result.pdr_interval.measured_high.target_tr} | ${frame_size}
-
-| Display result of soak search
-| | [Documentation]
-| | ... | Display result of soak search, avg+-stdev, as upper/lower bounds,
-| | ... | in aggregate packets per seconds
-| | ... | and Gbps total bandwidth (for initial packet size).
-| | ... | Througput is calculated as:
-| | ... | Sum of measured rates over streams
-| | ... | Bandwidth is calculated as:
-| | ... | (Throughput * (L2 Frame Size + IPG) * 8)
-| |
-| | ... | *Test (or broader scope) variables read:*
-| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
-| | ... | string
-| | ... | *Arguments:*
-| | ... | - avg - Estimated average critical load [pps]. Type: float
-| | ... | - stdev - Standard deviation of critical load [pps]. Type: float
-| |
-| | ... | *Returns:*
-| | ... | - Lower and upper bound of critical load [pps]. Type: 2-tuple of float
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Display result of soak search \| \${100000} \| \${100} \|
-| |
-| | [Arguments] | ${avg} | ${stdev}
-| |
-| | ${frame_size} = | Get Average Frame Size | ${frame_size}
-| | ${avg} = | Convert To Number | ${avg}
-| | ${stdev} = | Convert To Number | ${stdev}
-| | ${lower} = | Evaluate | ${avg} - ${stdev}
-| | ${upper} = | Evaluate | ${avg} + ${stdev}
-| | Display single bound | PLRsearch lower bound | ${lower} | ${frame_size}
-| | Display single bound | PLRsearch upper bound | ${upper} | ${frame_size}
-| | Return From Keyword | ${lower} | ${upper}
-
-| Check NDRPDR interval validity
+| Measure and show latency at specified rate
| | [Documentation]
-| | ... | Extract loss ratio of lower bound of the interval.
-| | ... | Fail if it does not reach the allowed value.
+| | ... | Send traffic at specified rate, single trial.
+| | ... | Extract latency information and append it to text message.
+| | ... | The rate argument is int, so should not include "pps".
+| | ... | If the given rate is too low, a safe value is used instead.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
| |
| | ... | *Arguments:*
-| | ... | - interval - Measured interval. Type: ReceiveRateInterval
-| | ... | - packet_loss_ratio - Accepted loss (0.0 for NDR). Type: float
+| | ... | - message_prefix - Preface to test message addition. Type: string
+| | ... | - rate - Rate [tps] for sending packets.
+| | ... | Type: float
| |
| | ... | *Example:*
| |
-| | ... | \| Check NDRPDR interval validity \| \${result.pdr_interval} \
-| | ... | \| \${0.005} \|
-| |
-| | [Arguments] | ${interval} | ${packet_loss_ratio}=${0.0}
-| |
-| | ${lower_bound} = | Set Variable | ${interval.measured_low}
-| | ${lower_bound_lf} = | Set Variable | ${lower_bound.loss_fraction}
-| | Return From Keyword If | ${lower_bound_lf} <= ${packet_loss_ratio}
-| | ${message}= | Catenate | SEPARATOR=${SPACE}
-| | ... | Minimal rate loss fraction ${lower_bound_lf}
-| | ... | does not reach target ${packet_loss_ratio}.
-| | ${message_zero} = | Set Variable | Zero packets forwarded!
-| | ${message_other} = | Set Variable | ${lower_bound.loss_count} packets lost.
-| | ${message} = | Set Variable If | ${lower_bound_lf} >= 1.0
-| | ... | ${message}${\n}${message_zero} | ${message}${\n}${message_other}
-| | Fail | ${message}
+| | ... | \| Measure and show latency at specified rate \| Latency at 90% NDR \
+| | ... | \| ${10000000} \|
+| |
+| | [Arguments] | ${message_prefix} | ${rate}
+| |
+| | ${min_rate} = | Get Min Rate
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${real_rate} = | Evaluate | max(${rate}, ${min_rate})
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | Call Resetter
+| | Send traffic on tg
+| | ... | duration=${PERF_TRIAL_LATENCY_DURATION}
+| | ... | rate=${real_rate}
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | async_call=${False}
+| | ... | duration_limit=${PERF_TRIAL_LATENCY_DURATION}
+| | ... | ppta=${ppta}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
+| | ... | use_latency=${True}
+| | ${latency} = | Get Latency Int
+| | Set Test Message | ${\n}${message_prefix} ${latency} | append=${True}
-| Traffic should pass with maximum rate
+| Send ramp-up traffic
| | [Documentation]
-| | ... | Send traffic at maximum rate.
+| | ... | Do nothing unless positive ramp-up duration is specified.
+| | ... | Else perform one trial with appropriate rate and duration.
+| | ... | This is useful for tests that set DUT state via traffic.
+| | ... | Rate has to bee low enough so packets are not lost,
+| | ... | Duration has to be long enough to set all the state.
+| | ... | The trial results are discarded.
| |
| | ... | *Test (or broader scope) variables read:*
| | ... | - traffic_profile - Name of module defining traffic for measurements.
| | ... | Type: string
| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
| | ... | string
-| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | - ramp_up_duration - Suitable traffic duration [s].
| | ... | Type: float
-| |
-| | ... | *Arguments:*
-| | ... | - trial_duration - Duration of single trial [s]. Type: float
-| | ... | - fail_no_traffic - Whether to fail on zero receive count;
-| | ... | default value: True. Type: boolean
-| | ... | - trial_multiplicity - How many trials in this measurement.
-| | ... | Type: integer
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic;
-| | ... | default value: 2. Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG; default value: 1. Type: integer
-| | ... | - latency - True to enable latency measurement; default value: False.
-| | ... | Type: boolean
+| | ... | - ramp_up_rate - Suitable transmit rate [tps].
+| | ... | Type: float
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
| |
| | ... | *Example:*
| |
-| | ... | \| Traffic should pass with maximum rate \| \${1} \| \${False} \
-| | ... | \| \${10.0} \| \${2} \| \${0} \| \${1} \| \${True} \|
-| |
-| | [Arguments] | ${trial_duration}=${trial_duration}
-| | ... | ${fail_no_traffic}=${True}
-| | ... | ${trial_multiplicity}=${trial_multiplicity}
-| | ... | ${traffic_directions}=${2} | ${tx_port}=${0} | ${rx_port}=${1}
-| | ... | ${latency}=${False}
-| |
-| | ${results}= | Send traffic at specified rate
-| | ... | ${trial_duration} | ${max_rate} | ${frame_size}
-| | ... | ${traffic_profile} | ${trial_multiplicity}
-| | ... | ${traffic_directions} | ${tx_port} | ${rx_port} | latency=${latency}
-| | Set Test Message | ${\n}Maximum Receive Rate trial results
-| | Set Test Message | in packets per second: ${results}
-| | ... | append=yes
-| | Run Keyword If | ${fail_no_traffic} | Fail if no traffic forwarded
+| | ... | \| Send ramp-up traffic \|
+| |
+| | ${ramp_up_duration} = | Get Ramp Up Duration
+| | Run Keyword Unless | ${ramp_up_duration} > 0.0 | Return From Keyword
+| | ${ramp_up_rate} = | Get Ramp Up Rate
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | Send traffic on tg
+| | ... | duration=${ramp_up_duration}
+| | ... | rate=${ramp_up_rate}
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | async_call=${False}
+| | ... | duration_limit=${0.0}
+| | ... | ppta=${ppta}
+| | ... | use_latency=${use_latency}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
| Send traffic at specified rate
| | [Documentation]
@@ -428,178 +385,62 @@
| | ... | Then send traffic at specified rate, possibly multiple trials.
| | ... | Show various DUT stats, optionally also packet trace.
| | ... | Return list of measured receive rates.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
| |
| | ... | *Arguments:*
| | ... | - trial_duration - Duration of single trial [s]. Type: float
-| | ... | - rate - Target aggregate transmit rate [pps] / Connections per second
-| | ... | (CPS) for UDP/TCP flows. Type: float
-| | ... | - frame_size - L2 Frame Size [B]. Type: integer or string
-| | ... | - traffic_profile - Name of module defining traffc for measurements.
+| | ... | - rate - Target transmit rate [tps]. Type: float
| | ... | Type: string
| | ... | - trial_multiplicity - How many trials in this measurement.
-| | ... | Type: integer
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG; default value: 1. Type: integer
-| | ... | - extended_debug - True to enable extended debug.
| | ... | Type: boolean
-| | ... | - latency - True to enable latency measurement; default value: False.
+| | ... | - use_latency - Use latency stream in search; default value: False.
| | ... | Type: boolean
+| | ... | - duration_limit - Hard limit for trial duration, overriding duration
+| | ... | computed from transaction_scale. Default 0.0 means no limit.
| |
| | ... | *Example:*
| |
| | ... | \| Send traffic at specified rate \| \${1.0} \| ${4000000.0} \
-| | ... | \| \${64} \| 3-node-IPv4 \| \${10} \| \${2} \| \${0} \| \${1} \
-| | ... | \| ${False} \| ${True} \|
+| | ... | \| \${10} \| ${False} \| ${1.0} \|
| |
-| | [Arguments] | ${trial_duration} | ${rate} | ${frame_size}
-| | ... | ${traffic_profile} | ${trial_multiplicity}=${trial_multiplicity}
-| | ... | ${traffic_directions}=${2} | ${tx_port}=${0} | ${rx_port}=${1}
-| | ... | ${extended_debug}=${extended_debug} | ${latency}=${False}
-| |
-| | Set Test Variable | ${extended_debug}
-| | # Following setting of test variables is needed for some pre_stats actions.
-| | Set Test Variable | ${rate}
-| | Set Test Variable | ${traffic_directions}
-| | Set Test Variable | ${tx_port}
-| | Set Test Variable | ${rx_port}
+| | [Arguments] | ${trial_duration} | ${rate} | ${trial_multiplicity}
+| | ... | ${use_latency}=${False} | ${duration_limit}=${0.0}
| |
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | Set Test Variable | \${rate_for_teardown} | ${rate}
| | FOR | ${action} | IN | @{pre_stats}
| | | Run Keyword | Additional Statistics Action For ${action}
| | END
| | ${results} = | Create List
| | FOR | ${i} | IN RANGE | ${trial_multiplicity}
-| | | # The following line is skipping some default arguments,
-| | | # that is why subsequent arguments have to be named.
+| | | Call Resetter
| | | Send traffic on tg
-| | | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
-| | | ... | warmup_time=${0} | traffic_directions=${traffic_directions}
-| | | ... | tx_port=${tx_port} | rx_port=${rx_port} | latency=${latency}
-| | | ${rx} = | Get Received
-| | | ${rr} = | Evaluate | ${rx} / ${trial_duration}
-| | | Append To List | ${results} | ${rr}
+| | | ... | duration=${trial_duration}
+| | | ... | rate=${rate}
+| | | ... | frame_size=${frame_size}
+| | | ... | traffic_profile=${traffic_profile}
+| | | ... | async_call=${False}
+| | | ... | duration_limit=${duration_limit}
+| | | ... | ppta=${ppta}
+| | | ... | traffic_directions=${traffic_directions}
+| | | ... | transaction_duration=${transaction_duration}
+| | | ... | transaction_scale=${transaction_scale}
+| | | ... | transaction_type=${transaction_type}
+| | | ... | use_latency=${use_latency}
+| | | ${result}= | Get Measurement Result
+| | | # Out of several quantities for aborted traffic (duration stretching),
+| | | # the approximated receive rate is the best estimate we have.
+| | | Append To List | ${results} | ${result.approximated_receive_rate}
| | END
| | FOR | ${action} | IN | @{post_stats}
| | | Run Keyword | Additional Statistics Action For ${action}
| | END
| | Return From Keyword | ${results}
-| Measure and show latency at specified rate
-| | [Documentation]
-| | ... | Send traffic at specified rate, single trial.
-| | ... | Extract latency information and append it to text message.
-| | ... | The rate argument is int, so should not include "pps".
-| | ... | If the given rate is too low, a safe value is used instead.
-| |
-| | ... | *Arguments:*
-| | ... | - message_prefix - Preface to test message addition. Type: string
-| | ... | - trial_duration - Duration of single trial [s]. Type: float
-| | ... | - rate - Rate [pps] for sending packets in case of T-Rex stateless
-| | ... | mode or multiplier of profile CPS in case of T-Rex astf mode.
-| | ... | Type: float
-| | ... | - frame_size - L2 Frame Size [B]. Type: integer or string
-| | ... | - traffic_profile - Name of module defining traffic for measurements.
-| | ... | Type: string
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG; default value: 1. Type: integer
-| | ... | - safe_rate - To apply if rate is below this, as latency pps is fixed.
-| | ... | In pps. Type: integer.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Measure and show latency at specified rate \| Latency at 90% NDR \
-| | ... | \| \${1.0} \| ${10000000} \| \${64} \| 3-node-IPv4 \| \${2} \
-| | ... | \| \${0} \| \${1} \| ${9500} \|
-| |
-| | [Arguments] | ${message_prefix} | ${trial_duration} | ${rate}
-| | ... | ${frame_size} | ${traffic_profile} | ${traffic_directions}=${2}
-| | ... | ${tx_port}=${0} | ${rx_port}=${1} | ${safe_rate}=${9001}
-| |
-| | ${real_rate} = | Evaluate | max(${rate}, ${safe_rate})
-| | # The following line is skipping some default arguments,
-| | # that is why subsequent arguments have to be named.
-| | Send traffic on tg | ${trial_duration} | ${real_rate} | ${frame_size}
-| | ... | ${traffic_profile} | warmup_time=${0}
-| | ... | traffic_directions=${traffic_directions} | tx_port=${tx_port}
-| | ... | rx_port=${rx_port} | latency=${True}
-| | ${latency} = | Get Latency Int
-| | Set Test Message | ${\n}${message_prefix} ${latency} | append=${True}
-
-| Clear and show runtime counters with running traffic
-| | [Documentation]
-| | ... | Start traffic at specified rate then clear runtime counters on all
-| | ... | DUTs. Wait for specified amount of time and capture runtime counters
-| | ... | on all DUTs. Finally stop traffic
-| |
-| | ... | *Arguments:*
-| | ... | - duration - Duration of traffic run [s]. Type: integer
-| | ... | - rate - Rate [pps] for sending packets in case of T-Rex stateless
-| | ... | mode or multiplier of profile CPS in case of T-Rex astf mode.
-| | ... | Type: float
-| | ... | - frame_size - L2 Frame Size [B] or IMIX_v4_1. Type: integer or string
-| | ... | - traffic_profile - Name of module defining traffc for measurements.
-| | ... | Type: string
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG, default value: 1. Type: integer
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Clear and show runtime counters with running traffic \| \${10} \
-| | ... | \| ${4000000.0} \| \${64} \| 3-node-IPv4 \| \${2} \| \${0} \| \${1} \|
-| |
-| | [Arguments] | ${duration} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | ${traffic_directions}=${2} | ${tx_port}=${0} | ${rx_port}=${1}
-| |
-| | # Duration of -1 means we will stop traffic manually.
-| | Send traffic on tg | ${-1} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | warmup_time=${0} | async_call=${True} | latency=${False}
-| | ... | traffic_directions=${traffic_directions} | tx_port=${tx_port}
-| | ... | rx_port=${rx_port}
-| | FOR | ${action} | IN | @{pre_run_stats}
-| | | Run Keyword | Additional Statistics Action For ${action}
-| | END
-| | Sleep | ${duration}
-| | FOR | ${action} | IN | @{post_run_stats}
-| | | Run Keyword | Additional Statistics Action For ${action}
-| | END
-| | Stop traffic on tg
-
-| Send ramp-up traffic
-| | [Documentation]
-| | ... | Start ramp-up traffic at specified rate for defined duration.
-| |
-| | ... | *Arguments:*
-| | ... | - duration - Duration of traffic run [s]. Type: integer
-| | ... | - rate - Rate [pps] for sending packets in case of T-Rex stateless
-| | ... | mode or multiplier of profile CPS in case of T-Rex astf mode.
-| | ... | Type: float
-| | ... | - frame_size - L2 Frame Size [B] or IMIX_v4_1. Type: integer or string
-| | ... | - traffic_profile - Name of module defining traffc for measurements.
-| | ... | Type: string
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG, default value: 1. Type: integer
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Send ramp-up traffic \| \${10} \| ${400000.0} \| ${64} \
-| | ... | \| ${2} \| ${0} \| ${1} \|
-| |
-| | [Arguments] | ${duration}=${ramp_up_duration} | ${rate}=${ramp_up_rate}
-| | ... | ${frame_size}=${frame_size} | ${traffic_profile}=${traffic_profile}
-| | ... | ${traffic_directions}=${2} | ${tx_port}=${0} | ${rx_port}=${1}
-| |
-| | Send traffic on tg
-| | ... | ${duration} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | warmup_time=${0} | traffic_directions=${traffic_directions}
-| | ... | tx_port=${tx_port} | rx_port=${rx_port} | latency=${False}
-
| Start Traffic on Background
| | [Documentation]
| | ... | Start traffic at specified rate then return control to Robot.
@@ -612,27 +453,36 @@
| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
| | ... | string
| | ... | *Arguments:*
-| | ... | - rate - Rate [pps] for sending packets in case of T-Rex stateless
-| | ... | mode or multiplier of profile CPS in case of T-Rex astf mode.
+| | ... | - rate - Rate [tps] for sending packets.
| | ... | Type: float
-| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
-| | ... | Type: integer
-| | ... | - tx_port - TX port of TG; default value: 0. Type: integer
-| | ... | - rx_port - RX port of TG; default value: 1. Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Start Traffic on Background \| ${4000000.0} \| \${2} \| \${0} \
-| | ... | \| \${1} \|
+| | ... | \| Start Traffic on Background \| ${4000000.0} \|
| |
-| | [Arguments] | ${rate} | ${traffic_directions}=${2} | ${tx_port}=${0}
-| | ... | ${rx_port}=${1}
+| | [Arguments] | ${rate}
| |
+| | ${ppta} = | Get Packets Per Transaction Aggregated
+| | ${traffic_directions} = | Get Traffic Directions
+| | ${transaction_duration} = | Get Transaction Duration
+| | ${transaction_scale} = | Get Transaction Scale
+| | ${transaction_type} = | Get Transaction Type
+| | ${use_latency} = | Get Use Latency
+| | Call Resetter
| | # Duration of -1 means we will stop traffic manually.
-| | Send traffic on tg | ${-1} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | warmup_time=${0} | async_call=${True} | latency=${False}
-| | ... | traffic_directions=${traffic_directions} | tx_port=${tx_port}
-| | ... | rx_port=${rx_port}
+| | Send traffic on tg
+| | ... | duration=${-1}
+| | ... | rate=${rate}
+| | ... | frame_size=${frame_size}
+| | ... | traffic_profile=${traffic_profile}
+| | ... | async_call=${True}
+| | ... | duration_limit=${0.0}
+| | ... | ppta=${ppta}
+| | ... | traffic_directions=${traffic_directions}
+| | ... | transaction_duration=${transaction_duration}
+| | ... | transaction_scale=${transaction_scale}
+| | ... | transaction_type=${transaction_type}
+| | ... | use_latency=${use_latency}
| Stop Running Traffic
| | [Documentation]
@@ -649,75 +499,41 @@
| | ${result}= | Stop traffic on tg
| | Return From Keyword | ${result}
-| Additional Statistics Action For vpp-clear-stats
-| | [Documentation]
-| | ... | Additional Statistics Action for clear VPP statistics.
-| |
-| | Clear Statistics On All DUTs | ${nodes}
-
-| Additional Statistics Action For vpp-show-stats
-| | [Documentation]
-| | ... | Additional Statistics Action for show VPP statistics.
-| |
-| | Show Statistics On All DUTs | ${nodes}
-
-| Additional Statistics Action For vpp-clear-runtime
-| | [Documentation]
-| | ... | Additional Statistics Action for clear VPP runtime.
-| |
-| | VPP Clear Runtime On All DUTs | ${nodes}
-
-| Additional Statistics Action For vpp-show-runtime
-| | [Documentation]
-| | ... | Additional Statistics Action for show VPP runtime.
-| |
-| | VPP Show Runtime On All DUTs | ${nodes}
-
-| Additional Statistics Action For vpp-enable-packettrace
-| | [Documentation]
-| | ... | Additional Statistics Action for enable VPP packet trace.
-| |
-| | Run Keyword If | ${extended_debug}==${True}
-| | ... | VPP Enable Traces On All DUTs | ${nodes} | fail_on_error=${False}
-
-| Additional Statistics Action For vpp-show-packettrace
-| | [Documentation]
-| | ... | Additional Statistics Action for show VPP packet trace.
-| |
-| | Run Keyword If | ${extended_debug}==${True}
-| | ... | Show Packet Trace On All Duts | ${nodes} | maximum=${100}
-
-| Additional Statistics Action For vpp-enable-elog
-| | [Documentation]
-| | ... | Additional Statistics Action for enable VPP elog trace.
-| |
-| | VPP Enable Elog Traces On All DUTs | ${nodes}
-
-| Additional Statistics Action For vpp-show-elog
-| | [Documentation]
-| | ... | Additional Statistics Action for show VPP elog trace.
-| |
-| | Show Event Logger On All DUTs | ${nodes}
-
-| Additional Statistics Action For bash-perf-stat
+| Traffic should pass with maximum rate
| | [Documentation]
-| | ... | Additional Statistics Action for bash command "perf stat".
+| | ... | Send traffic at maximum rate.
+| | ... | Call \${resetter} (if defined) to reset DUT state before each trial.
+| | ... | Fail if no packets were forwarded.
| |
-| | Run Keyword If | ${extended_debug}==${True}
-| | ... | Perf Stat On All DUTs | ${nodes} | cpu_list=${cpu_alloc_str}
-
-| Additional Statistics Action For clear-show-runtime-with-traffic
-| | [Documentation]
-| | ... | Additional Statistics Action for clear and show runtime counters with
-| | ... | running traffic.
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - traffic_profile - Name of module defining traffic for measurements.
+| | ... | Type: string
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
+| | ... | string
+| | ... | - max_rate - Calculated maximal transmit rate [tps].
+| | ... | Type: float
+| | ... | - transaction_type - String identifier to determine how to count
+| | ... | transactions. Default is "packet".
| |
-| | Clear and show runtime counters with running traffic
-| | ... | ${trial_duration} | ${rate}
-| | ... | ${frame_size} | ${traffic_profile} | ${traffic_directions}
-| | ... | ${tx_port} | ${rx_port}
-
-| Additional Statistics Action For noop
-| | [Documentation]
-| | ... | Additional Statistics Action for no operation.
+| | ... | *Example:*
| |
-| | No operation
+| | ... | \| Traffic should pass with maximum rate \|
+| |
+| | ${max_rate} = | Get Max Rate
+| | ${transaction_type} = | Get Transaction Type
+| | ${trial_duration} = | Get Mrr Trial Duration
+| | ${trial_multiplicity} = | Get Mrr Trial Multiplicity
+| | ${use_latency} = | Get Use Latency
+| | # The following also sets \${rate_for_teardown}
+| | ${results} = | Send traffic at specified rate
+| | ... | rate=${max_rate}
+| | ... | trial_duration=${trial_duration}
+| | ... | trial_multiplicity=${trial_multiplicity}
+| | ... | use_latency=${use_latency}
+| | ... | duration_limit=${0.0}
+| | ${unit} = | Set Variable If | """_cps""" in """${transaction_type}"""
+| | ... | estimated connections per second | packets per second
+| | Set Test Message | ${\n}Maximum Receive Rate trial results
+| | Set Test Message | in ${unit}: ${results}
+| | ... | append=yes
+| | Fail if no traffic forwarded
diff --git a/resources/libraries/robot/performance/performance_vars.robot b/resources/libraries/robot/performance/performance_vars.robot
new file mode 100644
index 0000000000..130237ed82
--- /dev/null
+++ b/resources/libraries/robot/performance/performance_vars.robot
@@ -0,0 +1,522 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Documentation | Performance suite keywords - Handling of various values
+| ... | to allow autodetection, computation and overriding by suite variables.
+| Library | Collections
+| Variables | ${CURDIR}/../../python/Constants.py
+
+*** Variables ***
+| ${extended_debug}= | ${EXTENDED_DEBUG}
+
+*** Keywords ***
+| Get Disable Latency
+| | [Documentation]
+| | ... | If Get Use Latency returns true, return false.
+| | ... | Otherwise return value of \${disable_latency} variable,
+| | ... | or \${False} if not defined.
+| |
+| | ... | The return value controls whether latency trials in NDRPDR tests
+| | ... | are executed. For example, ASTF tests do not support latency
+| | ... | measurements yet, so executing the trials just wastes time.
+| | ... | Return type: bool.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${disable_latency} = \| Get Disable Latency \|
+| |
+| | ${use_latency} = | Get Use Latency
+| | Return From Keyword If | ${use_latency} | ${False}
+| | ${disable_latency} = | Get Variable Value | \${disable_latency} | ${False}
+| | Return From Keyword | ${disable_latency}
+
+| Get Max Rate
+| | [Documentation]
+| | ... | Return value of \${max_rate} variable,
+| | ... | fail if it is not defined.
+| | ... | Call this just before calling a Python keyword,
+| | ... | as those have restricted access to Robot variables.
+| |
+| | ... | The return value controls the maximal unidirectional packet rate.
+| | ... | The value is also usable for minimal TPS value for ASTF tests.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${max_rate} = \| Get Max Rate \|
+| |
+| | ${max_rate} = | Get Variable Value | \${max_rate} | ${0.0}
+| | Return From Keyword If | ${max_rate} | ${max_rate}
+| | Fail | \${max_rate} is not defined. Call Set Max Rate And Jumbo keyword.
+
+| Get Min Rate
+| | [Documentation]
+| | ... | Return a hardcoded value. This is an abstraction, useful in case
+| | ... | we start allowing various other overrides or computations.
+| | ... | Call this just before calling a Python keyword,
+| | ... | as those have restricted access to Robot variables.
+| |
+| | ... | The return value controls the minimal unidirectional packet rate.
+| | ... | The value is also usable for minimal TPS value for ASTF tests.
+| | ... | The current value is the smallest one permitted
+| | ... | by STL profiles with latency streams.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${min_rate} = \| Get Min Rate \|
+| |
+| | Return From Keyword | ${9001.0}
+
+| Get Mrr Trial Duration
+| | [Documentation]
+| | ... | Return value from Constants. This is an abstraction, useful in case
+| | ... | we start allowing various other overrides or computations.
+| | ... | Call this just before calling a Python keyword,
+| | ... | as those have restricted access to Robot variables.
+| |
+| | ... | The return value controls the duration of main trial measurement
+| | ... | for MRR type tests.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${mrr_trial_duration} = \| Get Mrr Trial Duration \|
+| |
+| | Return From Keyword | ${PERF_TRIAL_DURATION}
+
+| Get Mrr Trial Multiplicity
+| | [Documentation]
+| | ... | Return value from Constants. This is an abstraction, useful in case
+| | ... | we start allowing various other overrides or computations.
+| | ... | Call this just before calling a Python keyword,
+| | ... | as those have restricted access to Robot variables.
+| |
+| | ... | The return value controls the number of main trial measurement
+| | ... | for (B)MRR type tests.
+| | ... | Return type: integer.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${mrr_trial_multiplicity} = \| Get Mrr Trial Multiplicity \|
+| |
+| | Return From Keyword | ${PERF_TRIAL_MULTIPLICITY}
+
+| Get Packet Loss Ratio
+| | [Documentation]
+| | ... | Return a hardcoded value. This is an abstraction, useful in case
+| | ... | we start allowing various other overrides or computations.
+| | ... | Call this just before calling a Python keyword,
+| | ... | as those have restricted access to Robot variables.
+| |
+| | ... | The return value controls the default packet loss ration for PDR
+| | ... | in NDRPDR tests. Some other usages of MLRsearch (e.g. reconf tests)
+| | ... | may use a different value.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${packet_loss_ratio} = \| Get Packet Loss Ratio \|
+| |
+| | Return From Keyword | ${0.005}
+
+| Get Packets Per Transaction Aggregated
+| | [Documentation]
+| | ... | Return value of \${packets_per_transaction_aggregated};
+| | ... | if not defined, assume traffic is symmetric and compute
+| | ... | from unidirectional values.
+| |
+| | ... | The return value is used when reporting PPS values from TPS found
+| | ... | by some search (e.g. NDRPDR).
+| | ... | Return type: integer.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${ppta} = \| Get Packets Per Transaction Aggregated \|
+| |
+| | ${ppta} = | Get Variable Value | \${packets_per_transaction_aggregated}
+| | ... | ${0}
+| | Return From Keyword If | "${ppta}" != "0" | ${ppta}
+| | # TODO: Insert TCP computation from packet size here.
+| | ${pptad} = | Get Packets Per Transaction And Direction
+| | ${traffic_directions} = | Get Traffic Directions
+| | # We do not support ASTF profiles with multiple transactions, yet.
+| | ${ppta} = | Evaluate | ${pptad} * ${traffic_directions}
+| | Return From Keyword | ${ppta}
+
+| Get Packets Per Transaction And Direction
+| | [Documentation]
+| | ... | Return value of \${packets_per_transaction_and_direction},
+| | ... | or ${1} if not defined.
+| |
+| | ... | The return value is used when computing max rate (TPS),
+| | ... | so for asymmetric transaction use the more numerous direction.
+| | ... | Return type: integer.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${pptad} = \| Get Packets Per Transaction And Direction \|
+| |
+| | ${pptad} = | Get Variable Value | \${packets_per_transaction_and_direction}
+| | ... | ${1}
+| | Return From Keyword | ${pptad}
+
+| Get Ramp Up Duration
+| | [Documentation]
+| | ... | Return value of \${ramp_up_duration},
+| | ... | or ${0.0} if not defined.
+| |
+| | ... | The return value determines the required duration of ramp-up phase.
+| | ... | Typically used to prepare a specific state on DUT.
+| | ... | If the value is zero, ramp-up phase is skipped.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${ramp_up_duration} = \| Get Ramp Up Duration \|
+| |
+| | ${ramp_up_duration} = | Get Variable Value | \${ramp_up_duration} | ${0.0}
+| | Return From Keyword | ${ramp_up_duration}
+
+| Get Ramp Up Rate
+| | [Documentation]
+| | ... | Return value of \${ramp_up_rate},
+| | ... | if not defined return \${max_rate}.
+| |
+| | ... | The return value determines the rate for ramp-up phase.
+| | ... | Typically used to limit the rate when max rate
+| | ... | would lose packets in the ramp up phase, thus not setting
+| | ... | the DUT state correctly.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${ramp_up_rate} = \| Get Ramp Up Rate \|
+| |
+| | ${ramp_up_rate} = | Get Variable Value | \${ramp_up_rate} | ${0.0}
+| | Return From Keyword If | ${ramp_up_rate} | ${ramp_up_rate}
+| | Run Keyword And Return | Get Max Rate
+
+| Get Rate For Teardown
+| | [Documentation]
+| | ... | Return value of \${rate_for_teardown},
+| | ... | if not defined (or zero) return the min rate.
+| |
+| | ... | The return value determines the rate for teardown trial,
+| | ... | that is executed if a perf test fails.
+| | ... | The \${rate_for_teardown} is usually not defined in suite,
+| | ... | but search keywords set it in places where failure can occur,
+| | ... | so the trial is done at the rate interesting for the failure.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${rate_for_teardown} = \| Get Rate For Teardown \|
+| |
+| | ${rate_for_teardown} = | Get Variable Value | \${rate_for_teardown} | ${0.0}
+| | Return From Keyword If | ${rate_for_teardown} | ${rate_for_teardown}
+| | Run Keyword And Return | Get Min Rate
+
+| Get Resetter
+| | [Documentation]
+| | ... | Return value of \${resetter} variable,
+| | ... | or \${None} if not defined.
+| |
+| | ... | If not \${None}, the returned value is callable.
+| | ... | Its use is to reset DUT to initial conditions,
+| | ... | for example to remove NAT sessions created in the previous trial.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${resetter} = \| Get Resetter \|
+| |
+| | ${resetter} = | Get Variable Value | \${resetter} | ${None}
+| | Return From Keyword | ${resetter}
+
+| Get Runtime Duration
+| | [Documentation]
+| | ... | Return value of \${runtime_duration} variable,
+| | ... | if not defined return ${1.0}.
+| |
+| | ... | The return value controls the duration of runtime trial,
+| | ... | which also acts as a warmup. Usually one second is enough,
+| | ... | but some suites need longer time to set up state on DUT.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${runtime_duration} = \| Get Runtime Duration \|
+| |
+| | ${runtime_duration} = | Get Variable Value | \${runtime_duration} | ${1.0}
+| | Return From Keyword | ${runtime_duration}
+
+| Get Runtime Rate
+| | [Documentation]
+| | ... | Return value of \${runtime_rate} variable,
+| | ... | if not defined return the max rate.
+| |
+| | ... | The return value controls the rate (TPS unidir) of runtime trial,
+| | ... | which also acts as a warmup. No plans to ever use a different rate,
+| | ... | but keywords look better if access to such values is uniform.
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${runtime_rate} = \| Get Runtime Rate \|
+| |
+| | ${runtime_rate} = | Get Variable Value | \${runtime_rate} | ${0.0}
+| | Return From Keyword If | ${runtime_rate} | ${runtime_rate}
+| | Run Keyword And Return | Get Max Rate
+
+| Get Traffic Directions
+| | [Documentation]
+| | ... | Return value of \${traffic_directions},
+| | ... | or ${2} if not defined.
+| |
+| | ... | The return value used when parsing for measurement results.
+| | ... | This needs to be known already in profile driver,
+| | ... | as bidirectional parsing may fail on unidirectional traffic.
+| | ... | Return type: integer.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${traffic_directions} = \| Get Traffic Directions \|
+| |
+| | ${traffic_directions} = | Get Variable Value | \${traffic_directions} | ${2}
+| | Return From Keyword | ${traffic_directions}
+
+| Get Transaction Duration
+| | [Documentation]
+| | ... | Return value of \${transaction_duration} variable,
+| | ... | or \${0.0} if not defined.
+| |
+| | ... | The return value is the expected duration of single (ASTF) transaction
+| | ... | if it is not negligible for overall trial duration computation.
+| | ... | Most tests use very short transactions (without explicit delays),
+| | ... | so the zero default works (and suite saves one line
+| | ... | of Variables table).
+| | ... | Return type: float.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${transaction_duration} = \| Get Transaction Duration \|
+| |
+| | ${transaction_duration} = | Get Variable Value | \${transaction_duration}
+| | ... | ${0.0}
+| | Return From Keyword | ${transaction_duration}
+
+| Get Transaction Scale
+| | [Documentation]
+| | ... | Return value of \${transaction_scale} variable,
+| | ... | or \${0} if not defined.
+| |
+| | ... | Zero return value means the number of transactions is not limited,
+| | ... | which is true for most STL TRex profiles (transaction is a packet).
+| | ... | Nonzero return value means the number of transactions is fixed,
+| | ... | for example in stateful NAT scale tests.
+| | ... | Return type: integer.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${transaction_scale} = \| Get Transaction Scale \|
+| |
+| | ${transaction_scale} = | Get Variable Value | \${transaction_scale} | ${0}
+| | Return From Keyword | ${transaction_scale}
+
+| Get Transaction Type
+| | [Documentation]
+| | ... | Return value of \${transaction_type} variable,
+| | ... | or "packet" if not defined.
+| |
+| | ... | The return value describes the type of transaction
+| | ... | the test is executed. For example "packet" means a transaction
+| | ... | is just a single packet. For more sophisticated transactions,
+| | ... | the logic to determine the number of passed transactions
+| | ... | is different from merely counting the packets received from DUT.
+| | ... | Return type: string.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${transaction_type} = \| Get Transaction Type \|
+| |
+| | ${transaction_type} = | Get Variable Value | \${transaction_type} | packet
+| | Return From Keyword | ${transaction_type}
+
+| Get Use Latency
+| | [Documentation]
+| | ... | Return value of \${use_latency} variable,
+| | ... | if not defined return the value from Constants.
+| |
+| | ... | The return value controls whether latency streams are active
+| | ... | during the main search.
+| | ... | Return type: bool.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| \${use_latency} = \| Get Use Latency \|
+| |
+| | ${use_latency} = | Get Variable Value | ${use_latency} | ${PERF_USE_LATENCY}
+| | Return From Keyword | ${use_latency}
+
+| Set Jumbo
+| | [Documentation]
+| | ... | For jumbo frames detection, the maximal packet size is relevant,
+| | ... | encapsulation overhead (if any) has effect.
+| |
+| | ... | This keyword computes jumbo boolean (some suites need that for
+| | ... | configuration decisions).
+| | ... | To streamline suite autogeneration, both input and output values
+| | ... | are communicated as test (or broader scope) variables,
+| | ... | instead of explicit arguments and return values.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - overhead - Overhead in bytes; default value: 0. Type: integer
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
+| | ... | string
+| |
+| | ... | *Test variables set:*
+| | ... | - jumbo - Jumbo boolean, true if jumbo packet support has to be
+| | ... | enabled. Type: boolean
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set Jumbo \|
+| |
+| | # Already called by Set Max Rate And Jumbo, but some suites (e.g. device)
+| | # are calling this directly.
+| | Set Numeric Frame Sizes
+| | ${jumbo} = | Set Variable If | ${max_frame_size} < 1522
+| | ... | ${False} | ${True}
+| | Set Test Variable | \${jumbo}
+
+| Set Max Rate And Jumbo
+| | [Documentation]
+| | ... | Input framesize can be either integer in case of a single packet
+| | ... | in stream, or IMIX string defining mix of packets.
+| | ... | For jumbo frames detection, the maximal packet size is relevant.
+| | ... | For maximal transmit rate, the average packet size is relevant.
+| | ... | In both cases, encapsulation overhead (if any) has effect.
+| | ... | The maximal rate is computed from NIC name.
+| | ... | The implementation works by mapping from exact
+| | ... | whitelisted NIC names.
+| | ... | The mapping is hardcoded in nic_limits.yaml
+| | ... | TODO: Make the mapping from NIC names case insensistive.
+| |
+| | ... | This keyword computes maximal unidirectional transmit rate
+| | ... | and jumbo boolean (some suites need that for configuration decisions).
+| | ... | To streamline suite autogeneration, both input and output values
+| | ... | are communicated as test (or broader scope) variables,
+| | ... | instead of explicit arguments and return values.
+| |
+| | ... | If this keyword detects the test is interested in (unidirectional)
+| | ... | transactons per second maximal rate (tps), that is returned (not pps).
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - nic_name - Name of bottleneck NIC. Type: string
+| | ... | - overhead - Overhead in bytes; default value: 0. Type: integer
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: integer or
+| | ... | string
+| | ... | - packets_per_transaction_and_direction - Pps-tps conversion.
+| | ... | Optional, default 1.
+| |
+| | ... | *Test variables set:*
+| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | This never exceeds bandwidth on TG-DUT nor DUT-DUT links.
+| | ... | Type: float
+| | ... | - jumbo - Jumbo boolean, true if jumbo packet support has to be
+| | ... | enabled. Type: boolean
+| | ... | avg_frame_size - Average frame size including overhead. Type: float
+| | ... | max_frame_size - Maximal frame size including overhead. Type: float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set Max Rate And Jumbo \|
+| |
+| | # TODO: Re-check overhead values in suites with both traffics encapsulated.
+| | # TODO: Improve layered setup to detect encap/decap and update overhead.
+| | ${pps_limit} = | Get From Dictionary
+| | ... | ${NIC_NAME_TO_PPS_LIMIT} | ${nic_name}
+| | ${bps_limit} = | Get From Dictionary
+| | ... | ${NIC_NAME_TO_BPS_LIMIT} | ${nic_name}
+| | Set Numeric Frame Sizes
+| | ${rate} = | Evaluate | ${bps_limit} / ((${avg_frame_size} + 20.0) * 8)
+| | ${max_rate} = | Set Variable If | ${rate} > ${pps_limit}
+| | ... | ${pps_limit} | ${rate}
+| | ${pptad} = | Get Packets Per Transaction And Direction
+| | ${max_rate} = | Evaluate | ${max_rate} / ${pptad}
+| | Set Test Variable | \${max_rate}
+| | Set Jumbo
+
+| Set Numeric Frame Sizes
+| | [Documentation]
+| | ... | Framesize can be either integer in case of a single packet
+| | ... | in stream, or set of packets in case of IMIX type or simmilar.
+| | ... | For jumbo decisions, we need a numeric size of the biggest packet.
+| | ... | For max rate decisions, we need a numeric average packet size.
+| | ... | This keyword computes both and sets them as test variables.
+| |
+| | ... | Each suite sets a value named \${overhead},
+| | ... | which describes by how many bytes the frames on DUT-DUT link
+| | ... | are larger (due to encapsulation) than those
+| | ... | on the primary TG-DUT link. But for some suites that value
+| | ... | can be negaive (if TG-DUT is encapsulated more heavily).
+| | ... | For calculations in this keyword, we need largest sizes
+| | ... | across links, so zero is used if \${overhead} is negative.
+| |
+| | ... | *Test variables read:*
+| | ... | - frame_size - Framesize. Type: integer or string
+| | ... | - overhead - Overhead in bytes; default value: ${0}. Type: integer
+| |
+| | ... | *Test variables set*
+| | ... | avg_frame_size - Average frame size including overhead. Type: float
+| | ... | max_frame_size - Maximal frame size including overhead. Type: float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set Numeric Frame Sizes \|
+| |
+| | ${max_overhead} = | Set Variable If | ${overhead} >= 0 | ${overhead} | ${0}
+| | ${bare_avg_frame_size} = | Run Keyword If | '${frame_size}' == 'IMIX_v4_1'
+| | ... | Set Variable | ${353.83333}
+| | ... | ELSE
+| | ... | Convert To Number | ${frame_size}
+| | ${avg_frame_size} = | Evaluate | $bare_avg_frame_size + $max_overhead
+| | Set Test Variable | \${avg_frame_size}
+| | ${bare_max_frame_size} = | Run Keyword If | '${frame_size}' == 'IMIX_v4_1'
+| | ... | Set Variable | ${1518}
+| | ... | ELSE
+| | ... | Convert To Number | ${frame_size}
+| | ${max_frame_size} = | Evaluate | $bare_max_frame_size + $max_overhead
+| | Set Test Variable | ${max_frame_size}
+
+| Set Rates For Policer
+| | [Documentation]
+| | ... | Policer tests need these values,
+| | ... | currently computed from \${avg_frame_size}.
+| | ... | TODO: Verify the units match and computation is correct.
+| |
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - avg_frame_size - Average L2 Frame Size [B]. Type: float
+| | ... | Set by Set Max Rate And Jumbo keyword.
+| |
+| | ... | *Test variables set:*
+| | ... | - eb - Excess burst rate for policer. Type: float
+| | ... | - cb - Committed burst rate for policer. Type: float
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set Rates For Policer \|
+| |
+| | Set Test Variable | \${eb} | ${avg_frame_size}
+| | Set Test Variable | \${cb} | ${avg_frame_size}
diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot
index cf6b599a29..fdc4da475e 100644
--- a/resources/libraries/robot/shared/default.robot
+++ b/resources/libraries/robot/shared/default.robot
@@ -58,7 +58,6 @@
| Resource | resources/libraries/robot/overlay/lisp.robot
| Resource | resources/libraries/robot/overlay/lispgpe.robot
| Resource | resources/libraries/robot/overlay/lisp_api.robot
-| Resource | resources/libraries/robot/performance/performance_limits.robot
| Resource | resources/libraries/robot/performance/performance_utils.robot
| Resource | resources/libraries/robot/shared/interfaces.robot
| Resource | resources/libraries/robot/shared/container.robot
@@ -74,6 +73,26 @@
| ${cpu_alloc_str}= | ${0}
*** Keywords ***
+# TODO: Sort keywords alphabetically.
+
+| Call Resetter
+| | [Documentation]
+| | ... | Check for a presence of test variable \${resetter}.
+| | ... | If it exists (and not None), call the resetter (as a Python callable).
+| | ... | This is usually used to reset any state on DUT before next trial.
+| |
+| | ... | TODO: Move to a more specific library if needed.
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Call Resetter \|
+| |
+| | ${resetter} = | Get Resetter
+| | # See http://robotframework.org/robotframework/3.1.2/libraries/BuiltIn.html
+| | # #Evaluating%20expressions for $variable (without braces) syntax.
+| | # Parens are there to perform the call.
+| | Run Keyword If | $resetter | Evaluate | $resetter()
+
| Configure crypto device on all DUTs
| | [Documentation] | Verify if Crypto QAT device virtual functions are
| | ... | initialized on all DUTs. If parameter force_init is set to True, then
diff --git a/resources/libraries/robot/shared/test_teardown.robot b/resources/libraries/robot/shared/test_teardown.robot
index 93c4574c83..09ebd9d01e 100644
--- a/resources/libraries/robot/shared/test_teardown.robot
+++ b/resources/libraries/robot/shared/test_teardown.robot
@@ -64,11 +64,21 @@
| Additional Test Tear Down Action For performance
| | [Documentation]
| | ... | Additional teardown for tests which uses performance measurement.
-| |
-| | Run Keyword If Test Failed
-| | ... | Send traffic at specified rate | ${1.0} | 10000
-| | ... | ${frame_size} | ${traffic_profile} | trial_multiplicity=${1}
-| | ... | extended_debug=${True}
+| | ... | Optionally, call \${resetter} (if defined) to reset DUT state.
+| |
+| | ... | TODO: Document what test variables are required or optional.
+| |
+| | Run Keyword If Test Passed | Return From Keyword
+| | ${use_latency} = | Get Use Latency
+| | ${rate_for_teardown} = | Get Rate For Teardown
+| | Call Resetter
+| | Set Test Variable | \${extended_debug} | ${True}
+| | Send traffic at specified rate
+| | ... | trial_duration=${1.0}
+| | ... | rate=${rate_for_teardown}
+| | ... | trial_multiplicity=${1}
+| | ... | use_latency=${use_latency}
+| | ... | duration_limit=${1.0}
| Additional Test Tear Down Action For packet_trace
| | [Documentation]
diff --git a/resources/tools/presentation/conf.py b/resources/tools/presentation/conf.py
index 553220448c..8e0fcd8d86 100644
--- a/resources/tools/presentation/conf.py
+++ b/resources/tools/presentation/conf.py
@@ -46,7 +46,7 @@ source_suffix = [u'.rst', u'.md']
master_doc = u'index'
# General information about the project.
-report_week = u'44'
+report_week = u'51'
project = u'FD.io CSIT-2009.{week}'.format(week=report_week)
copyright = u'2020, FD.io'
author = u'FD.io CSIT'
@@ -86,6 +86,10 @@ rst_epilog = u"""
.. _FD.io test executor dpdk performance job 3n-skx: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-3n-skx
.. _FD.io test executor dpdk performance job 2n-skx: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-2n-skx
.. _FD.io test executor dpdk performance job 2n-clx: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-2n-clx
+.. _FD.io test executor dpdk performance job 2n-dnv: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-2n-dnv
+.. _FD.io test executor dpdk performance job 3n-dnv: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-3n-dnv
+.. _FD.io test executor dpdk performance job 3n-tsh: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-3n-tsh
+.. _FD.io test executor dpdk performance job 2n-zn2: https://jenkins.fd.io/job/csit-dpdk-perf-report-iterative-{srelease}-2n-zn2
.. _FD.io test executor vpp performance job 3n-hsw: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-3n-hsw
.. _FD.io test executor vpp performance job 3n-skx: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-3n-skx
.. _FD.io test executor vpp performance job 2n-skx: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-2n-skx
@@ -93,6 +97,7 @@ rst_epilog = u"""
.. _FD.io test executor vpp performance job 3n-dnv: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-3n-dnv
.. _FD.io test executor vpp performance job 2n-dnv: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-2n-dnv
.. _FD.io test executor vpp performance job 2n-clx: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-2n-clx
+.. _FD.io test executor vpp performance job 2n-zn2: https://jenkins.fd.io/job/csit-vpp-perf-report-iterative-{srelease}-2n-zn2
.. _FD.io test executor vpp device jobs using Ubuntu: https://jenkins.fd.io/view/csit/job/csit-vpp-device-{srelease}-ubuntu1804-1n-skx
.. _FD.io VPP compile job: https://jenkins.fd.io/view/vpp/job/vpp-merge-{srelease}-ubuntu1804-x86_64/
.. _CSIT Testbed Setup: https://git.fd.io/csit/tree/resources/tools/testbed-setup/README.md?h={release}
diff --git a/resources/tools/presentation/generator_alerts.py b/resources/tools/presentation/generator_alerts.py
index da45d75891..156e99ccc0 100644
--- a/resources/tools/presentation/generator_alerts.py
+++ b/resources/tools/presentation/generator_alerts.py
@@ -352,7 +352,9 @@ class Alerting:
device = u""
try:
groups = re.search(
- re.compile(r'((vpp|dpdk)-\dn-(skx|clx|hsw|tsh|dnv)-.*)'),
+ re.compile(
+ r'((vpp|dpdk)-\dn-(skx|clx|hsw|tsh|dnv|zn2)-.*)'
+ ),
test_set
)
test_set_short = groups.group(1)
@@ -365,14 +367,9 @@ class Alerting:
build, version, passed, failed, failed_tests = \
self._get_compressed_failed_tests(alert, test_set)
if build is None:
- ret_code, build_nr, _ = get_last_completed_build_number(
- self._spec.environment[u"urls"][u"URL[JENKINS,CSIT]"],
- alert[u"urls"][idx].split(u'/')[-1])
- if ret_code != 0:
- build_nr = u''
text += (
f"\n\nNo input data available for {test_set_short}. "
- f"See CSIT build {alert[u'urls'][idx]}/{build_nr} for more "
+ f"See CSIT job {alert[u'urls'][idx]} for more "
f"information.\n"
)
continue
diff --git a/resources/tools/presentation/generator_plots.py b/resources/tools/presentation/generator_plots.py
index cae334ade9..869d2ca21e 100644
--- a/resources/tools/presentation/generator_plots.py
+++ b/resources/tools/presentation/generator_plots.py
@@ -380,54 +380,66 @@ def plot_perf_box_name(plot, input_data):
multiplier = 1.0
y_vals = OrderedDict()
test_type = u""
- for job in data:
- for build in job:
- for test in build:
- if y_vals.get(test[u"parent"], None) is None:
- y_vals[test[u"parent"]] = list()
- try:
- if test[u"type"] in (u"NDRPDR", ):
- test_type = u"NDRPDR"
-
- if u"-pdr" in plot_title:
- ttype = u"PDR"
- elif u"-ndr" in plot_title:
- ttype = u"NDR"
- else:
- raise RuntimeError(
- u"Wrong title. No information about test type. "
- u"Add '-ndr' or '-pdr' to the test title."
- )
- y_vals[test[u"parent"]].append(
- test[value][ttype][u"LOWER"] * multiplier
- )
-
- elif test[u"type"] in (u"SOAK", ):
- y_vals[test[u"parent"]].\
- append(test[u"throughput"][u"LOWER"])
- test_type = u"SOAK"
+ 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
+ if y_vals.get(test[u"parent"], None) is None:
+ y_vals[test[u"parent"]] = list()
+ try:
+ if test[u"type"] in (u"NDRPDR", u"CPS"):
+ test_type = test[u"type"]
+
+ if u"-pdr" in plot_title:
+ ttype = u"PDR"
+ elif u"-ndr" in plot_title:
+ ttype = u"NDR"
+ else:
+ raise RuntimeError(
+ u"Wrong title. No information about test "
+ u"type. Add '-ndr' or '-pdr' to the test "
+ u"title."
+ )
- elif test[u"type"] in (u"HOSTSTACK", ):
- if u"LDPRELOAD" in test[u"tags"]:
y_vals[test[u"parent"]].append(
- float(test[u"result"][u"bits_per_second"]) / 1e3
+ test[value][ttype][u"LOWER"] * multiplier
)
- elif u"VPPECHO" in test[u"tags"]:
- y_vals[test[u"parent"]].append(
- (float(test[u"result"][u"client"][u"tx_data"])
- * 8 / 1e3) /
- ((float(test[u"result"][u"client"][u"time"]) +
- float(test[u"result"][u"server"][u"time"])) /
- 2)
- )
- test_type = u"HOSTSTACK"
- else:
- continue
+ elif test[u"type"] in (u"SOAK",):
+ y_vals[test[u"parent"]]. \
+ append(test[u"throughput"][u"LOWER"])
+ test_type = u"SOAK"
+
+ elif test[u"type"] in (u"HOSTSTACK",):
+ if u"LDPRELOAD" in test[u"tags"]:
+ y_vals[test[u"parent"]].append(
+ float(
+ test[u"result"][u"bits_per_second"]
+ ) / 1e3
+ )
+ elif u"VPPECHO" in test[u"tags"]:
+ y_vals[test[u"parent"]].append(
+ (float(
+ test[u"result"][u"client"][u"tx_data"]
+ ) * 8 / 1e3) /
+ ((float(
+ test[u"result"][u"client"][u"time"]
+ ) +
+ float(
+ test[u"result"][u"server"][u"time"])
+ ) / 2)
+ )
+ test_type = u"HOSTSTACK"
- except (KeyError, TypeError):
- y_vals[test[u"parent"]].append(None)
+ else:
+ continue
+
+ except (KeyError, TypeError):
+ y_vals[test[u"parent"]].append(None)
# Add None to the lists with missing data
max_len = 0
@@ -479,6 +491,8 @@ def plot_perf_box_name(plot, input_data):
if layout.get(u"title", None):
if test_type in (u"HOSTSTACK", ):
layout[u"title"] = f"<b>Bandwidth:</b> {layout[u'title']}"
+ elif test_type in (u"CPS", ):
+ layout[u"title"] = f"<b>CPS:</b> {layout[u'title']}"
else:
layout[u"title"] = f"<b>Throughput:</b> {layout[u'title']}"
if y_max:
@@ -536,37 +550,43 @@ def plot_tsa_name(plot, input_data):
multiplier = 1.0
y_vals = OrderedDict()
- for job in data:
- for build in job:
- for test in build:
- if y_vals.get(test[u"parent"], None) is None:
- y_vals[test[u"parent"]] = {
- u"1": list(),
- u"2": list(),
- u"4": list()
- }
- try:
- if test[u"type"] not in (u"NDRPDR",):
- continue
-
- if u"-pdr" in plot_title:
- ttype = u"PDR"
- elif u"-ndr" in plot_title:
- ttype = u"NDR"
- else:
- continue
-
- if u"1C" in test[u"tags"]:
- y_vals[test[u"parent"]][u"1"]. \
- append(test[value][ttype][u"LOWER"] * multiplier)
- elif u"2C" in test[u"tags"]:
- y_vals[test[u"parent"]][u"2"]. \
- append(test[value][ttype][u"LOWER"] * multiplier)
- elif u"4C" in test[u"tags"]:
- y_vals[test[u"parent"]][u"4"]. \
- append(test[value][ttype][u"LOWER"] * multiplier)
- except (KeyError, TypeError):
- pass
+ 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 re.match(reg_ex, str(test_id).lower()):
+ if y_vals.get(test[u"parent"], None) is None:
+ y_vals[test[u"parent"]] = {
+ u"1": list(),
+ u"2": list(),
+ u"4": list()
+ }
+ try:
+ if test[u"type"] not in (u"NDRPDR", u"CPS"):
+ continue
+
+ if u"-pdr" in plot_title:
+ ttype = u"PDR"
+ elif u"-ndr" in plot_title:
+ ttype = u"NDR"
+ else:
+ continue
+
+ if u"1C" in test[u"tags"]:
+ y_vals[test[u"parent"]][u"1"].append(
+ test[value][ttype][u"LOWER"] * multiplier
+ )
+ elif u"2C" in test[u"tags"]:
+ y_vals[test[u"parent"]][u"2"].append(
+ test[value][ttype][u"LOWER"] * multiplier
+ )
+ elif u"4C" in test[u"tags"]:
+ y_vals[test[u"parent"]][u"4"].append(
+ test[value][ttype][u"LOWER"] * multiplier
+ )
+ except (KeyError, TypeError):
+ pass
if not y_vals:
logging.warning(f"No data for the plot {plot.get(u'title', u'')}")
@@ -682,7 +702,7 @@ def plot_tsa_name(plot, input_data):
x_vals = [1, 2, 4]
# Limits:
- if u"-gbps" not in plot_title:
+ if u"-gbps" not in plot_title and u"-cps-" not in plot_title:
nic_limit /= 1e6
lnk_limit /= 1e6
pci_limit /= 1e6
diff --git a/resources/tools/presentation/generator_report.py b/resources/tools/presentation/generator_report.py
index 0712b78ef0..142c264bcd 100644
--- a/resources/tools/presentation/generator_report.py
+++ b/resources/tools/presentation/generator_report.py
@@ -195,8 +195,10 @@ def generate_pdf_report(release, spec, report_week):
plots.extend(
get_files(spec.environment[u"paths"][u"DIR[STATIC,DPDK]"], u"html")
)
+ pdf_plots = list()
for plot in plots:
file_name = f"{plot.rsplit(u'.', 1)[0]}.pdf"
+ pdf_plots.append(file_name)
logging.info(f"Converting {plot} to {file_name}")
execute_command(convert_plots.format(html=plot, pdf=file_name))
@@ -224,6 +226,10 @@ def generate_pdf_report(release, spec, report_week):
for cmd in cmds:
execute_command(cmd)
+ # Delete temporary pdf files:
+ for plot in pdf_plots:
+ execute_command(f"rm {plot}")
+
logging.info(u" Done.")
diff --git a/resources/tools/presentation/input_data_parser.py b/resources/tools/presentation/input_data_parser.py
index 1a8b5bf98d..268a73620f 100644
--- a/resources/tools/presentation/input_data_parser.py
+++ b/resources/tools/presentation/input_data_parser.py
@@ -229,9 +229,17 @@ class ExecutionChecker(ResultVisitor):
r'Latency at 50% PDR:.*\[\'(.*)\', \'(.*)\'\].*\n'
r'Latency at 10% PDR:.*\[\'(.*)\', \'(.*)\'\].*\n'
)
+ REGEX_CPS_MSG_INFO = re.compile(
+ r'NDR_LOWER:\s(\d+.\d+)\s.*\s.*\n.*\n.*\n'
+ r'PDR_LOWER:\s(\d+.\d+)\s.*\s.*\n.*\n.*'
+ )
+ REGEX_PPS_MSG_INFO = re.compile(
+ r'NDR_LOWER:\s(\d+.\d+)\s.*\s(\d+.\d+)\s.*\n.*\n.*\n'
+ r'PDR_LOWER:\s(\d+.\d+)\s.*\s(\d+.\d+)\s.*\n.*\n.*'
+ )
REGEX_MRR_MSG_INFO = re.compile(r'.*\[(.*)\]')
- # TODO: Remove when not needed
+ # Needed for CPS and PPS tests
REGEX_NDRPDR_LAT_BASE = re.compile(
r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n.*\n'
r'LATENCY.*\[\'(.*)\', \'(.*)\'\]'
@@ -244,18 +252,7 @@ class ExecutionChecker(ResultVisitor):
r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
r'Latency.*\[\'(.*)\', \'(.*)\'\]'
)
- # TODO: Remove when not needed
- REGEX_NDRPDR_LAT_LONG = re.compile(
- r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n.*\n'
- r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
- r'Latency.*\[\'(.*)\', \'(.*)\'\]'
- )
+
REGEX_VERSION_VPP = re.compile(
r"(return STDOUT Version:\s*|"
r"VPP Version:\s*|VPP version:\s*)(.*)"
@@ -271,8 +268,7 @@ class ExecutionChecker(ResultVisitor):
r'tx\s(\d*),\srx\s(\d*)'
)
REGEX_BMRR = re.compile(
- r'Maximum Receive Rate trial results'
- r' in packets per second: \[(.*)\]'
+ r'Maximum Receive Rate trial results .*: \[(.*)\]'
)
REGEX_RECONF_LOSS = re.compile(
r'Packets lost due to reconfig: (\d*)'
@@ -392,12 +388,56 @@ class ExecutionChecker(ResultVisitor):
except (AttributeError, IndexError, ValueError, KeyError):
return u"Test Failed."
+ def _get_data_from_cps_test_msg(self, msg):
+ """Get info from message of NDRPDR CPS tests.
+
+ :param msg: Message to be processed.
+ :type msg: str
+ :returns: Processed message or "Test Failed." if a problem occurs.
+ :rtype: str
+ """
+
+ groups = re.search(self.REGEX_CPS_MSG_INFO, msg)
+ if not groups or groups.lastindex != 2:
+ return u"Test Failed."
+
+ try:
+ return (
+ f"1. {(float(groups.group(1)) / 1e6):5.2f}\n"
+ f"2. {(float(groups.group(2)) / 1e6):5.2f}"
+ )
+ except (AttributeError, IndexError, ValueError, KeyError):
+ return u"Test Failed."
+
+ def _get_data_from_pps_test_msg(self, msg):
+ """Get info from message of NDRPDR PPS tests.
+
+ :param msg: Message to be processed.
+ :type msg: str
+ :returns: Processed message or "Test Failed." if a problem occurs.
+ :rtype: str
+ """
+
+ groups = re.search(self.REGEX_PPS_MSG_INFO, msg)
+ if not groups or groups.lastindex != 4:
+ return u"Test Failed."
+
+ try:
+ return (
+ f"1. {(float(groups.group(1)) / 1e6):5.2f} "
+ f"{float(groups.group(2)):5.2f}\n"
+ f"2. {(float(groups.group(3)) / 1e6):5.2f} "
+ f"{float(groups.group(4)):5.2f}"
+ )
+ except (AttributeError, IndexError, ValueError, KeyError):
+ return u"Test Failed."
+
def _get_data_from_perf_test_msg(self, msg):
"""Get info from message of NDRPDR performance tests.
:param msg: Message to be processed.
:type msg: str
- :returns: Processed message or original message if a problem occurs.
+ :returns: Processed message or "Test Failed." if a problem occurs.
:rtype: str
"""
@@ -816,10 +856,7 @@ class ExecutionChecker(ResultVisitor):
},
}
- # TODO: Rewrite when long and base are not needed
- groups = re.search(self.REGEX_NDRPDR_LAT_LONG, msg)
- if groups is None:
- groups = re.search(self.REGEX_NDRPDR_LAT, msg)
+ groups = re.search(self.REGEX_NDRPDR_LAT, msg)
if groups is None:
groups = re.search(self.REGEX_NDRPDR_LAT_BASE, msg)
if groups is None:
@@ -1060,9 +1097,18 @@ class ExecutionChecker(ResultVisitor):
if test.status == u"PASS":
if u"NDRPDR" in tags:
- test_result[u"msg"] = self._get_data_from_perf_test_msg(
- test.message).replace(u'\n', u' |br| ').\
- replace(u'\r', u'').replace(u'"', u"'")
+ if u"TCP_PPS" in tags or u"UDP_PPS" in tags:
+ test_result[u"msg"] = self._get_data_from_pps_test_msg(
+ test.message).replace(u'\n', u' |br| '). \
+ replace(u'\r', u'').replace(u'"', u"'")
+ elif u"TCP_CPS" in tags or u"UDP_CPS" in tags:
+ test_result[u"msg"] = self._get_data_from_cps_test_msg(
+ test.message).replace(u'\n', u' |br| '). \
+ replace(u'\r', u'').replace(u'"', u"'")
+ else:
+ test_result[u"msg"] = self._get_data_from_perf_test_msg(
+ test.message).replace(u'\n', u' |br| ').\
+ replace(u'\r', u'').replace(u'"', u"'")
elif u"MRR" in tags or u"FRMOBL" in tags or u"BMRR" in tags:
test_result[u"msg"] = self._get_data_from_mrr_test_msg(
test.message).replace(u'\n', u' |br| ').\
@@ -1110,25 +1156,16 @@ class ExecutionChecker(ResultVisitor):
if u"DEVICETEST" in tags:
test_result[u"type"] = u"DEVICETEST"
elif u"NDRPDR" in tags:
- test_result[u"type"] = u"NDRPDR"
+ if u"TCP_CPS" in tags or u"UDP_CPS" in tags:
+ test_result[u"type"] = u"CPS"
+ else:
+ test_result[u"type"] = u"NDRPDR"
test_result[u"throughput"], test_result[u"status"] = \
self._get_ndrpdr_throughput(test.message)
test_result[u"gbps"], test_result[u"status"] = \
self._get_ndrpdr_throughput_gbps(test.message)
test_result[u"latency"], test_result[u"status"] = \
self._get_ndrpdr_latency(test.message)
- elif u"SOAK" in tags:
- test_result[u"type"] = u"SOAK"
- test_result[u"throughput"], test_result[u"status"] = \
- self._get_plr_throughput(test.message)
- elif u"HOSTSTACK" in tags:
- test_result[u"type"] = u"HOSTSTACK"
- test_result[u"result"], test_result[u"status"] = \
- self._get_hoststack_data(test.message, tags)
- elif u"TCP" in tags:
- test_result[u"type"] = u"TCP"
- groups = re.search(self.REGEX_TCP, test.message)
- test_result[u"result"] = int(groups.group(2))
elif u"MRR" in tags or u"FRMOBL" in tags or u"BMRR" in tags:
if u"MRR" in tags:
test_result[u"type"] = u"MRR"
@@ -1150,6 +1187,18 @@ class ExecutionChecker(ResultVisitor):
groups = re.search(self.REGEX_MRR, test.message)
test_result[u"result"][u"receive-rate"] = \
float(groups.group(3)) / float(groups.group(1))
+ elif u"SOAK" in tags:
+ test_result[u"type"] = u"SOAK"
+ test_result[u"throughput"], test_result[u"status"] = \
+ self._get_plr_throughput(test.message)
+ elif u"HOSTSTACK" in tags:
+ test_result[u"type"] = u"HOSTSTACK"
+ test_result[u"result"], test_result[u"status"] = \
+ self._get_hoststack_data(test.message, tags)
+ elif u"TCP" in tags:
+ test_result[u"type"] = u"TCP"
+ groups = re.search(self.REGEX_TCP, test.message)
+ test_result[u"result"] = int(groups.group(2))
elif u"RECONF" in tags:
test_result[u"type"] = u"RECONF"
test_result[u"result"] = None
diff --git a/resources/tools/presentation/run_report.sh b/resources/tools/presentation/run_report.sh
index 4279501f3b..7b4351edc9 100755
--- a/resources/tools/presentation/run_report.sh
+++ b/resources/tools/presentation/run_report.sh
@@ -38,7 +38,7 @@ export PYTHONPATH=`pwd`:`pwd`/../../../:`pwd`/../../libraries/python
python pal.py \
--specification specification.yaml \
--release ${RELEASE} \
- --week "44" \
+ --week "51" \
--logging INFO \
--force
diff --git a/resources/tools/presentation/specification.yaml b/resources/tools/presentation/specification.yaml
index 445b03df9b..5c617192b7 100644
--- a/resources/tools/presentation/specification.yaml
+++ b/resources/tools/presentation/specification.yaml
@@ -29,6 +29,7 @@
DIR[DTR,PERF,DPDK,3N,HSW]: "{DIR[DTR]}/dpdk_performance_results_3n_hsw"
DIR[DTR,PERF,DPDK,3N,SKX]: "{DIR[DTR]}/dpdk_performance_results_3n_skx"
DIR[DTR,PERF,DPDK,2N,SKX]: "{DIR[DTR]}/dpdk_performance_results_2n_skx"
+ DIR[DTR,PERF,DPDK,2N,ZN2]: "{DIR[DTR]}/dpdk_performance_results_2n_zn2"
DIR[DTR,PERF,DPDK,2N,CLX]: "{DIR[DTR]}/dpdk_performance_results_2n_clx"
DIR[DTR,PERF,DPDK,2N,DNV]: "{DIR[DTR]}/dpdk_performance_results_2n_dnv"
DIR[DTR,PERF,DPDK,3N,DNV]: "{DIR[DTR]}/dpdk_performance_results_3n_dnv"
@@ -37,6 +38,7 @@
DIR[DTR,PERF,VPP,3N,HSW]: "{DIR[DTR]}/vpp_performance_results_3n_hsw"
DIR[DTR,PERF,VPP,3N,SKX]: "{DIR[DTR]}/vpp_performance_results_3n_skx"
DIR[DTR,PERF,VPP,2N,SKX]: "{DIR[DTR]}/vpp_performance_results_2n_skx"
+ DIR[DTR,PERF,VPP,2N,ZN2]: "{DIR[DTR]}/vpp_performance_results_2n_zn2"
DIR[DTR,PERF,VPP,2N,CLX]: "{DIR[DTR]}/vpp_performance_results_2n_clx"
DIR[DTR,PERF,VPP,3N,TSH]: "{DIR[DTR]}/vpp_performance_results_3n_tsh"
DIR[DTR,PERF,VPP,3N,DNV]: "{DIR[DTR]}/vpp_performance_results_3n_dnv"
@@ -45,6 +47,7 @@
DIR[DTR,MRR,VPP,3N,HSW]: "{DIR[DTR]}/vpp_mrr_results_3n_hsw"
DIR[DTR,MRR,VPP,3N,SKX]: "{DIR[DTR]}/vpp_mrr_results_3n_skx"
DIR[DTR,MRR,VPP,2N,SKX]: "{DIR[DTR]}/vpp_mrr_results_2n_skx"
+ DIR[DTR,MRR,VPP,2N,ZN2]: "{DIR[DTR]}/vpp_mrr_results_2n_zn2"
DIR[DTR,MRR,VPP,2N,CLX]: "{DIR[DTR]}/vpp_mrr_results_2n_clx"
DIR[DTR,MRR,VPP,3N,TSH]: "{DIR[DTR]}/vpp_mrr_results_3n_tsh"
DIR[DTR,MRR,VPP,3N,DNV]: "{DIR[DTR]}/vpp_mrr_results_3n_dnv"
@@ -57,6 +60,7 @@
DIR[DTC,PERF,VPP,3N,HSW]: "{DIR[DTC]}/vpp_performance_configuration_3n_hsw"
DIR[DTC,PERF,VPP,3N,SKX]: "{DIR[DTC]}/vpp_performance_configuration_3n_skx"
DIR[DTC,PERF,VPP,2N,SKX]: "{DIR[DTC]}/vpp_performance_configuration_2n_skx"
+ DIR[DTC,PERF,VPP,2N,ZN2]: "{DIR[DTC]}/vpp_performance_configuration_2n_zn2"
DIR[DTC,PERF,VPP,2N,CLX]: "{DIR[DTC]}/vpp_performance_configuration_2n_clx"
DIR[DTC,PERF,VPP,3N,TSH]: "{DIR[DTC]}/vpp_performance_configuration_3n_tsh"
DIR[DTC,PERF,VPP,3N,DNV]: "{DIR[DTC]}/vpp_performance_configuration_3n_dnv"
@@ -65,6 +69,7 @@
DIR[DTC,MRR,VPP,3N,HSW]: "{DIR[DTC]}/vpp_mrr_configuration_3n_hsw"
DIR[DTC,MRR,VPP,3N,SKX]: "{DIR[DTC]}/vpp_mrr_configuration_3n_skx"
DIR[DTC,MRR,VPP,2N,SKX]: "{DIR[DTC]}/vpp_mrr_configuration_2n_skx"
+ DIR[DTC,MRR,VPP,2N,ZN2]: "{DIR[DTC]}/vpp_mrr_configuration_2n_zn2"
DIR[DTC,MRR,VPP,2N,CLX]: "{DIR[DTC]}/vpp_mrr_configuration_2n_clx"
DIR[DTC,MRR,VPP,3N,TSH]: "{DIR[DTC]}/vpp_mrr_configuration_3n_tsh"
DIR[DTC,MRR,VPP,3N,DNV]: "{DIR[DTC]}/vpp_mrr_configuration_3n_dnv"
@@ -77,6 +82,7 @@
DIR[DTO,PERF,VPP,3N,HSW]: "{DIR[DTO]}/vpp_performance_operational_data_3n_hsw"
DIR[DTO,PERF,VPP,3N,SKX]: "{DIR[DTO]}/vpp_performance_operational_data_3n_skx"
DIR[DTO,PERF,VPP,2N,SKX]: "{DIR[DTO]}/vpp_performance_operational_data_2n_skx"
+ DIR[DTO,PERF,VPP,2N,ZN2]: "{DIR[DTO]}/vpp_performance_operational_data_2n_zn2"
DIR[DTO,PERF,VPP,2N,CLX]: "{DIR[DTO]}/vpp_performance_operational_data_2n_clx"
DIR[DTO,PERF,VPP,3N,TSH]: "{DIR[DTO]}/vpp_performance_operational_data_3n_tsh"
DIR[DTO,PERF,VPP,3N,DNV]: "{DIR[DTO]}/vpp_performance_operational_data_3n_dnv"
@@ -255,16 +261,16 @@
- 44 # rls2009 NDRPDR iter env 5
- 46 # rls2009 NDRPDR iter env 5
- 48 # rls2009 NDRPDR iter env 5
- - 51 # rls2009 NDRPDR iter NAT44 env 5
- - 52 # rls2009 NDRPDR iter NAT44 env 5
- - 53 # rls2009 NDRPDR iter NAT44 env 5
- - 54 # rls2009 NDRPDR iter NAT44 env 5
- - 55 # rls2009 NDRPDR iter NAT44 env 5
- - 56 # rls2009 NDRPDR iter NAT44 env 5
- - 57 # rls2009 NDRPDR iter NAT44 env 5
- - 58 # rls2009 NDRPDR iter NAT44 env 5
- - 59 # rls2009 NDRPDR iter NAT44 env 5
- - 60 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
+ - 111 # rls2009 NDRPDR iter NAT44 env 5
+ - 112 # rls2009 NDRPDR iter NAT44 env 5
+ - 113 # rls2009 NDRPDR iter NAT44 env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
plot-vpp-hdrh-lat-2n-skx:
csit-vpp-perf-report-iterative-2009-2n-skx:
@@ -272,7 +278,7 @@
plot-vpp-hdrh-lat-2n-skx-nat44:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 51 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
plot-vpp-soak-2n-skx:
csit-vpp-perf-report-iterative-2009-2n-skx:
@@ -326,6 +332,34 @@
csit-dpdk-perf-report-iterative-2009-2n-skx:
- 4 # NDRPDR iter env5
+ # 2n-zn2
+
+ plot-vpp-throughput-lat-tsa-2n-zn2:
+ csit-vpp-perf-report-iterative-2009-2n-zn2:
+ - 17 # rls2009 NDRPDR iter env 5
+ - 18 # rls2009 NDRPDR iter env 5
+ - 31 # rls2009 NDRPDR iter env 5
+ - 33 # rls2009 NDRPDR iter env 5
+ - 34 # rls2009 NDRPDR iter env 5
+
+ plot-vpp-hdrh-lat-2n-zn2:
+ csit-vpp-perf-report-iterative-2009-2n-zn2:
+ - 18 # rls2009 NDRPDR iter env 5
+
+ plot-dpdk-throughput-latency-2n-zn2:
+ csit-dpdk-perf-report-iterative-2009-2n-zn2:
+ - 16 # NDRPDR iter env5
+ - 21 # NDRPDR iter env5
+ - 22 # NDRPDR iter env5
+ - 23 # NDRPDR iter env5
+ - 24 # NDRPDR iter env5
+ - 25 # NDRPDR iter env5
+ - 29 # NDRPDR iter env5
+
+ plot-dpdk-hdrh-lat-2n-zn2:
+ csit-dpdk-perf-report-iterative-2009-2n-zn2:
+ - 16 # NDRPDR iter env5
+
# 2n-clx
plot-vpp-throughput-lat-tsa-2n-clx:
@@ -333,18 +367,32 @@
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 117 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
+ - 122 # rls2009 NDRPDR iter NAT44 env 5
+ - 123 # rls2009 NDRPDR iter NAT44 env 5
+ - 126 # rls2009 NDRPDR iter NAT44 env 5
plot-vpp-hdrh-lat-2n-clx:
csit-vpp-perf-report-iterative-2009-2n-clx:
- 36 # rls2009 NDRPDR iter env 5
+ plot-vpp-hdrh-lat-2n-clx-nat44:
+ csit-vpp-perf-report-iterative-2009-2n-clx:
+ - 123 # rls2009 NDRPDR iter NAT44 env 5
+
plot-vpp-nfv-2n-clx-ndrpdr:
csit-vpp-perf-report-iterative-2009-2n-clx:
- 37 # rls2009 nf-density iter env 5
@@ -400,20 +448,23 @@
# 3n-tsh
plot-vpp-throughput-lat-tsa-3n-tsh:
- # TODO: Add:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- 14 # rls2009 NDRPDR iter env 5
- 20 # rls2009 NDRPDR iter env 5
- 21 # rls2009 NDRPDR iter env 5
- 22 # rls2009 NDRPDR iter env 5
- 23 # rls2009 NDRPDR iter env 5
+ - 28 # rls2009 NDRPDR iter env 5
+ - 30 # rls2009 NDRPDR iter env 5
+ - 33 # rls2009 NDRPDR iter env 5
+ - 38 # rls2009 NDRPDR iter env 5
+ - 41 # rls2009 NDRPDR iter env 5
plot-vpp-hdrh-lat-3n-tsh:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- 14 # rls2009 NDRPDR iter env 5
plot-dpdk-throughput-latency-3n-tsh:
- # TODO: Add:
csit-dpdk-perf-report-iterative-2009-3n-tsh:
- 1 # NDRPDR iter env5
- 2 # NDRPDR iter env5
@@ -424,6 +475,7 @@
- 7 # NDRPDR iter env5
- 9 # NDRPDR iter env5
- 10 # NDRPDR iter env5
+ - 11 # NDRPDR iter env5
plot-dpdk-hdrh-lat-3n-tsh:
csit-dpdk-perf-report-iterative-2009-3n-tsh:
@@ -497,16 +549,16 @@
- 44 # rls2009 NDRPDR iter env 5
- 46 # rls2009 NDRPDR iter env 5
- 48 # rls2009 NDRPDR iter env 5
- - 51 # rls2009 NDRPDR iter NAT44 env 5
- - 52 # rls2009 NDRPDR iter NAT44 env 5
- - 53 # rls2009 NDRPDR iter NAT44 env 5
- - 54 # rls2009 NDRPDR iter NAT44 env 5
- - 55 # rls2009 NDRPDR iter NAT44 env 5
- - 56 # rls2009 NDRPDR iter NAT44 env 5
- - 57 # rls2009 NDRPDR iter NAT44 env 5
- - 58 # rls2009 NDRPDR iter NAT44 env 5
- - 59 # rls2009 NDRPDR iter NAT44 env 5
- - 60 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
+ - 111 # rls2009 NDRPDR iter NAT44 env 5
+ - 112 # rls2009 NDRPDR iter NAT44 env 5
+ - 113 # rls2009 NDRPDR iter NAT44 env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
vpp-nic-comparison-3n-skx-mrr:
csit-vpp-perf-report-iterative-2009-3n-skx:
@@ -514,7 +566,7 @@
vpp-nic-comparison-2n-skx-mrr:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
# Results
@@ -557,7 +609,6 @@
- 37 # rls2009 NDRPDR cov 3n-hsw-vhost-02
vpp-perf-results-3n-skx:
- # TODO: Add:
csit-vpp-perf-report-coverage-2009-3n-skx:
- 36 # rls2009 NDRPDR cov 3n-skx-crypto-00
- 3 # rls2009 NDRPDR cov 3n-skx-crypto-01
@@ -568,6 +619,7 @@
- 8 # rls2009 NDRPDR cov 3n-skx-ip4-02
- 9 # rls2009 NDRPDR cov 3n-skx-ip4-03
- 10 # rls2009 NDRPDR cov 3n-skx-ip4-04
+ - 38 # rls2009 NDRPDR cov 3n-skx-ip4-05
- 12 # rls2009 NDRPDR cov 3n-skx-ip4-06
- 39 # rls2009 NDRPDR cov 3n-skx-ip4-07
- 14 # rls2009 NDRPDR cov 3n-skx-ip4tun-00
@@ -582,13 +634,18 @@
- 23 # rls2009 NDRPDR cov 3n-skx-l2-03
- 24 # rls2009 NDRPDR cov 3n-skx-l2-04
- 41 # rls2009 NDRPDR cov 3n-skx-l2-05
+ - 42 # rls2009 NDRPDR cov 3n-skx-l2-06
- 43 # rls2009 NDRPDR cov 3n-skx-l2-07
- 28 # rls2009 NDRPDR cov 3n-skx-l2-08
- 44 # rls2009 NDRPDR cov 3n-skx-l2-09
- 45 # rls2009 NDRPDR cov 3n-skx-l2-10
- 46 # rls2009 NDRPDR cov 3n-skx-memif-00
- 47 # rls2009 NDRPDR cov 3n-skx-srv6-00
+ - 48 # rls2009 NDRPDR cov 3n-skx-srv6-01
+ - 49 # rls2009 NDRPDR cov 3n-skx-vhost-00
+ - 50 # rls2009 NDRPDR cov 3n-skx-vhost-01
- 51 # rls2009 NDRPDR cov 3n-skx-vhost-02
+ - 54 # rls2009 NDRPDR cov 3n-skx-vhost-03
vpp-perf-results-2n-skx:
csit-vpp-perf-report-coverage-2009-2n-skx:
@@ -597,7 +654,9 @@
- 10 # rls2009 NDRPDR cov 2n-skx-ip4-02
- 20 # rls2009 NDRPDR cov 2n-skx-ip4-03
- 21 # rls2009 NDRPDR cov 2n-skx-ip4-04
- - 13 # rls2009 NDRPDR cov 2n-skx-ip4-05
+ - 31 # rls2009 NDRPDR cov 2n-skx-ip4-05
+ - 32 # rls2009 NDRPDR cov 2n-skx-ip4-06
+ - 33 # rls2009 NDRPDR cov 2n-skx-ip4-07
- 22 # rls2009 NDRPDR cov 2n-skx-ip6-00
- 23 # rls2009 NDRPDR cov 2n-skx-ip6-01
- 24 # rls2009 NDRPDR cov 2n-skx-l2-00
@@ -608,6 +667,10 @@
- 29 # rls2009 NDRPDR cov 2n-skx-vhost-01
- 30 # rls2009 NDRPDR cov 2n-skx-vts-00
+ vpp-perf-results-2n-zn2:
+ csit-vpp-perf-report-iterative-2009-2n-zn2:
+ - 18 # rls2009 NDRPDR iter env 5
+
vpp-perf-results-2n-clx:
csit-vpp-perf-report-coverage-2009-2n-clx:
- 2 # rls2009 NDRPDR cov 2n-clx-ip4-00
@@ -615,7 +678,9 @@
- 4 # rls2009 NDRPDR cov 2n-clx-ip4-02
- 5 # rls2009 NDRPDR cov 2n-clx-ip4-03
- 6 # rls2009 NDRPDR cov 2n-clx-ip4-04
- - 7 # rls2009 NDRPDR cov 2n-clx-ip4-05
+ - 23 # rls2009 NDRPDR cov 2n-clx-ip4-05
+ - 24 # rls2009 NDRPDR cov 2n-clx-ip4-06
+ - 25 # rls2009 NDRPDR cov 2n-clx-ip4-07
- 22 # rls2009 NDRPDR cov 2n-clx-ip6-00
- 9 # rls2009 NDRPDR cov 2n-clx-ip6-01
- 17 # rls2009 NDRPDR cov 2n-clx-l2-00
@@ -661,15 +726,19 @@
vpp-mrr-results-2n-skx:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
+
+ vpp-mrr-results-2n-zn2:
+ csit-vpp-perf-report-iterative-2009-2n-zn2:
+ - 15 # rls2009 MRR iter env 5
vpp-mrr-results-2n-clx:
csit-vpp-perf-report-iterative-2009-2n-clx:
- - 78 # rls2009 MRR iter env 5
+ - 125 # rls2009 MRR iter env 5
vpp-mrr-results-3n-tsh:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- - 15 # rls2006 MRR iter env 5
+ - 15 # rls2009 MRR iter env 5
vpp-mrr-results-3n-dnv:
csit-vpp-perf-report-iterative-2009-3n-dnv:
@@ -695,6 +764,10 @@
csit-dpdk-perf-report-iterative-2009-2n-skx:
- 4 # NDRPDR iter env5
+ dpdk-perf-results-2n-zn2:
+ csit-dpdk-perf-report-iterative-2009-2n-zn2:
+ - 16 # NDRPDR iter env5
+
dpdk-perf-results-2n-clx:
csit-dpdk-perf-report-iterative-2009-2n-clx:
- 4 # NDRPDR iter env5
@@ -787,6 +860,12 @@
- 18 # rls2005 NDRPDR iter env 5
- 19 # rls2005 NDRPDR iter env 5
- 41 # rls2005 NDRPDR iter env 5
+ - 43 # rls2005 NDRPDR iter env 5
+ - 44 # rls2005 NDRPDR iter env 5
+ - 45 # rls2005 NDRPDR iter env 5
+ - 46 # rls2005 NDRPDR iter env 5
+ - 48 # rls2005 NDRPDR iter env 5
+ - 49 # rls2005 NDRPDR iter env 5
vpp-performance-changes-3n-skx-cmp:
csit-vpp-perf-report-iterative-2009-3n-skx:
- 26 # rls2009 NDRPDR iter env 5
@@ -844,16 +923,16 @@
- 44 # rls2009 NDRPDR iter env 5
- 46 # rls2009 NDRPDR iter env 5
- 48 # rls2009 NDRPDR iter env 5
- - 51 # rls2009 NDRPDR iter NAT44 env 5
- - 52 # rls2009 NDRPDR iter NAT44 env 5
- - 53 # rls2009 NDRPDR iter NAT44 env 5
- - 54 # rls2009 NDRPDR iter NAT44 env 5
- - 55 # rls2009 NDRPDR iter NAT44 env 5
- - 56 # rls2009 NDRPDR iter NAT44 env 5
- - 57 # rls2009 NDRPDR iter NAT44 env 5
- - 58 # rls2009 NDRPDR iter NAT44 env 5
- - 59 # rls2009 NDRPDR iter NAT44 env 5
- - 60 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
+ - 111 # rls2009 NDRPDR iter NAT44 env 5
+ - 112 # rls2009 NDRPDR iter NAT44 env 5
+ - 113 # rls2009 NDRPDR iter NAT44 env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
vpp-performance-changes-2n-clx-h1:
csit-vpp-perf-report-iterative-2005-2n-clx:
@@ -894,13 +973,23 @@
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 117 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
+ - 122 # rls2009 NDRPDR iter NAT44 env 5
+ - 123 # rls2009 NDRPDR iter NAT44 env 5
+ - 126 # rls2009 NDRPDR iter NAT44 env 5
vpp-performance-changes-2n-dnv-h1:
csit-vpp-perf-verify-2001-2n-dnv:
@@ -1000,14 +1089,23 @@
- 12 # rls2005 NDRPDR iter env 5
- 24 # rls2005 NDRPDR iter env 5
- 27 # rls2005 NDRPDR iter env 5
+ - 29 # rls2005 NDRPDR iter env 5
+ - 31 # rls2005 NDRPDR iter env 5
+ - 39 # rls2005 NDRPDR iter env 5
+ - 40 # rls2005 NDRPDR iter env 5
+ - 42 # rls2005 NDRPDR iter env 5
vpp-performance-changes-3n-tsh-cmp:
- # TODO: Add:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- 14 # rls2009 NDRPDR iter env 5
- 20 # rls2009 NDRPDR iter env 5
- 21 # rls2009 NDRPDR iter env 5
- 22 # rls2009 NDRPDR iter env 5
- 23 # rls2009 NDRPDR iter env 5
+ - 28 # rls2009 NDRPDR iter env 5
+ - 30 # rls2009 NDRPDR iter env 5
+ - 33 # rls2009 NDRPDR iter env 5
+ - 38 # rls2009 NDRPDR iter env 5
+ - 41 # rls2009 NDRPDR iter env 5
vpp-soak-vs-ndr-2n-skx-ref:
csit-vpp-perf-report-iterative-2009-2n-skx:
@@ -1045,11 +1143,11 @@
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
vpp-soak-vs-ndr-2n-clx-cmp:
@@ -1061,11 +1159,11 @@
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
- 33 # rls2009 soak env 5
@@ -1110,7 +1208,7 @@
- 20 # rls2005 MRR iter env 5
vpp-performance-changes-2n-skx-mrr-cmp:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
vpp-performance-changes-2n-clx-mrr-h1:
csit-vpp-perf-verify-2001-2n-clx:
@@ -1123,7 +1221,7 @@
- 77 # rls2005 MRR iter env 5
vpp-performance-changes-2n-clx-mrr-cmp:
csit-vpp-perf-report-iterative-2009-2n-clx:
- - 78 # rls2009 MRR iter env 5
+ - 125 # rls2009 MRR iter env 5
vpp-performance-changes-2n-dnv-mrr-h1:
csit-vpp-perf-verify-2001-2n-dnv:
@@ -1156,7 +1254,7 @@
- 13 # rls2005 MRR iter env 5
vpp-performance-changes-3n-tsh-mrr-cmp:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- - 15 # rls2006 MRR iter env 5
+ - 15 # rls2009 MRR iter env 5
dpdk-performance-changes-3n-hsw-h1:
csit-dpdk-perf-verify-2001-3n-hsw:
@@ -1398,7 +1496,6 @@
csit-dpdk-perf-report-iterative-2005-3n-tsh:
- 5 # NDRPDR sel
dpdk-performance-changes-3n-tsh-cmp:
- # TODO: Add:
csit-dpdk-perf-report-iterative-2009-3n-tsh:
- 1 # NDRPDR iter env5
- 2 # NDRPDR iter env5
@@ -1409,6 +1506,7 @@
- 7 # NDRPDR iter env5
- 9 # NDRPDR iter env5
- 10 # NDRPDR iter env5
+ - 11 # NDRPDR iter env5
# Compare testbeds
@@ -1449,28 +1547,38 @@
- 44 # rls2009 NDRPDR iter env 5
- 46 # rls2009 NDRPDR iter env 5
- 48 # rls2009 NDRPDR iter env 5
- - 51 # rls2009 NDRPDR iter NAT44 env 5
- - 52 # rls2009 NDRPDR iter NAT44 env 5
- - 53 # rls2009 NDRPDR iter NAT44 env 5
- - 54 # rls2009 NDRPDR iter NAT44 env 5
- - 55 # rls2009 NDRPDR iter NAT44 env 5
- - 56 # rls2009 NDRPDR iter NAT44 env 5
- - 57 # rls2009 NDRPDR iter NAT44 env 5
- - 58 # rls2009 NDRPDR iter NAT44 env 5
- - 59 # rls2009 NDRPDR iter NAT44 env 5
- - 60 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
+ - 111 # rls2009 NDRPDR iter NAT44 env 5
+ - 112 # rls2009 NDRPDR iter NAT44 env 5
+ - 113 # rls2009 NDRPDR iter NAT44 env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
vpp-compare-testbeds-skx-clx-cmp:
csit-vpp-perf-report-iterative-2009-2n-clx:
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 117 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
+ - 122 # rls2009 NDRPDR iter NAT44 env 5
+ - 123 # rls2009 NDRPDR iter NAT44 env 5
+ - 126 # rls2009 NDRPDR iter NAT44 env 5
vpp-compare-testbeds-hsw-clx-ref:
csit-vpp-perf-report-iterative-2009-3n-hsw:
@@ -1489,11 +1597,11 @@
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
@@ -1506,17 +1614,17 @@
vpp-compare-testbeds-mrr-skx-clx-ref:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
vpp-compare-testbeds-mrr-skx-clx-cmp:
csit-vpp-perf-report-iterative-2009-2n-clx:
- - 78 # rls2009 MRR iter env 5
+ - 125 # rls2009 MRR iter env 5
vpp-compare-testbeds-mrr-hsw-clx-ref:
csit-vpp-perf-report-iterative-2009-3n-hsw:
- 23 # rls2009 MRR iter env 5
vpp-compare-testbeds-mrr-hsw-clx-cmp:
csit-vpp-perf-report-iterative-2009-2n-clx:
- - 78 # rls2009 MRR iter env 5
+ - 125 # rls2009 MRR iter env 5
dpdk-compare-testbeds-ref:
csit-dpdk-perf-report-iterative-2009-3n-hsw:
@@ -1600,7 +1708,7 @@
- 24 # rls2009 MRR iter env 5
vpp-compare-topologies-mrr-cmp:
csit-vpp-perf-report-iterative-2009-2n-skx:
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
dpdk-compare-topologies-ref:
csit-dpdk-perf-report-iterative-2009-3n-skx:
@@ -1825,6 +1933,116 @@
hoverlabel:
namelength: -1
+ plot-throughput-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>Packet 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
+
+ plot-cps:
+ 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>Connection Rate [Mcps]</b>"
+ titlefont:
+ size: 14
+ gridcolor: "rgb(230, 230, 230)"
+ hoverformat: ".4r"
+ tickformat: ".3s"
+ 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
+
plot-throughput-speedup-analysis:
titlefont:
size: 16
@@ -1921,6 +2139,198 @@
},
]
+ plot-throughput-speedup-analysis-gbps:
+ titlefont:
+ size: 16
+ xaxis:
+ title: "<b>Number of Cores [Qty]</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(238, 238, 238)"
+ tickmode: "linear"
+ tickfont:
+ size: 14
+ zeroline: False
+ yaxis:
+ title: "<b>Packet Throughput [Gbps]</b>"
+ titlefont:
+ size: 14
+ type: "linear"
+ gridcolor: "rgb(230, 230, 230)"
+ hoverformat: ".4s"
+ linecolor: "rgb(220, 220, 220)"
+ linewidth: 1
+ showgrid: True
+ showline: True
+ showticklabels: True
+ tickcolor: "rgb(220, 220, 220)"
+ tickformat: ".4s"
+ tickfont:
+ size: 14
+ zeroline: True
+ rangemode: "tozero"
+ range: [0,100]
+ legend:
+ orientation: "h"
+ font:
+ size: 14
+ xanchor: "left"
+ yanchor: "top"
+ x: 0
+ y: -0.2
+ bgcolor: "rgba(255, 255, 255, 0)"
+ bordercolor: "rgba(255, 255, 255, 0)"
+ traceorder: "normal" # "grouped" does not work: bug https://github.com/plotly/plotly.js/issues/1913
+ autosize: False
+ margin:
+ 't': 50
+ 'b': 150
+ 'l': 85
+ 'r': 10
+ showlegend: True
+ width: 700
+ height: 700
+ paper_bgcolor: "#fff"
+ plot_bgcolor: "#fff"
+ hoverlabel:
+ namelength: -1
+ annotations: [
+ {
+ text: "_ _ __",
+ align: "left",
+ showarrow: False,
+ xref: "paper",
+ yref: "paper",
+ xanchor: "left",
+ yanchor: "top",
+ x: 0,
+ y: -0.13,
+ font: {
+ family: "Consolas, Courier New",
+ size: 13
+ },
+ },
+ {
+ text: " Perfect Measured",
+ align: "left",
+ showarrow: False,
+ xref: "paper",
+ yref: "paper",
+ xanchor: "left",
+ yanchor: "top",
+ x: 0,
+ y: -0.15,
+ font: {
+ family: "Consolas, Courier New",
+ size: 13
+ },
+ },
+ ]
+
+ plot-throughput-speedup-analysis-cps:
+ titlefont:
+ size: 16
+ xaxis:
+ title: "<b>Number of Cores [Qty]</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(238, 238, 238)"
+ tickmode: "linear"
+ tickfont:
+ size: 14
+ zeroline: False
+ yaxis:
+ title: "<b>Connection Rate [Mcps]</b>"
+ titlefont:
+ size: 14
+ type: "linear"
+ gridcolor: "rgb(230, 230, 230)"
+ hoverformat: ".4s"
+ linecolor: "rgb(220, 220, 220)"
+ linewidth: 1
+ showgrid: True
+ showline: True
+ showticklabels: True
+ tickcolor: "rgb(220, 220, 220)"
+ tickformat: ".4s"
+ tickfont:
+ size: 14
+ zeroline: True
+ rangemode: "tozero"
+ range: [0,100]
+ legend:
+ orientation: "h"
+ font:
+ size: 14
+ xanchor: "left"
+ yanchor: "top"
+ x: 0
+ y: -0.2
+ bgcolor: "rgba(255, 255, 255, 0)"
+ bordercolor: "rgba(255, 255, 255, 0)"
+ traceorder: "normal" # "grouped" does not work: bug https://github.com/plotly/plotly.js/issues/1913
+ autosize: False
+ margin:
+ 't': 50
+ 'b': 150
+ 'l': 85
+ 'r': 10
+ showlegend: True
+ width: 700
+ height: 700
+ paper_bgcolor: "#fff"
+ plot_bgcolor: "#fff"
+ hoverlabel:
+ namelength: -1
+ annotations: [
+ {
+ text: "_ _ __",
+ align: "left",
+ showarrow: False,
+ xref: "paper",
+ yref: "paper",
+ xanchor: "left",
+ yanchor: "top",
+ x: 0,
+ y: -0.13,
+ font: {
+ family: "Consolas, Courier New",
+ size: 13
+ },
+ },
+ {
+ text: " Perfect Measured",
+ align: "left",
+ showarrow: False,
+ xref: "paper",
+ yref: "paper",
+ xanchor: "left",
+ yanchor: "top",
+ x: 0,
+ y: -0.15,
+ font: {
+ family: "Consolas, Courier New",
+ size: 13
+ },
+ },
+ ]
+
plot-latency:
titlefont:
size: 16
@@ -2279,13 +2689,18 @@
- 53 # NDRPDR sel 2001.0-4
- 54 # NDRPDR sel 2001.0-4
- 49 # MRR sel env 4
- # TODO: Add:
csit-vpp-perf-report-iterative-2009-3n-skx:
- 17 # rls2005 MRR iter env 5
- 13 # rls2005 NDRPDR iter env 5
- 18 # rls2005 NDRPDR iter env 5
- 19 # rls2005 NDRPDR iter env 5
- 41 # rls2005 NDRPDR iter env 5
+ - 43 # rls2005 NDRPDR iter env 5
+ - 44 # rls2005 NDRPDR iter env 5
+ - 45 # rls2005 NDRPDR iter env 5
+ - 46 # rls2005 NDRPDR iter env 5
+ - 48 # rls2005 NDRPDR iter env 5
+ - 49 # rls2005 NDRPDR iter env 5
- 24 # rls2009 MRR iter env 5
- 26 # rls2009 NDRPDR iter env 5
- 27 # rls2009 NDRPDR iter env 5
@@ -2297,7 +2712,6 @@
- 38 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- # TODO: Add:
csit-vpp-perf-report-coverage-2009-3n-skx:
- 36 # rls2009 NDRPDR cov 3n-skx-crypto-00
- 3 # rls2009 NDRPDR cov 3n-skx-crypto-01
@@ -2308,6 +2722,7 @@
- 8 # rls2009 NDRPDR cov 3n-skx-ip4-02
- 9 # rls2009 NDRPDR cov 3n-skx-ip4-03
- 10 # rls2009 NDRPDR cov 3n-skx-ip4-04
+ - 38 # rls2009 NDRPDR cov 3n-skx-ip4-05
- 12 # rls2009 NDRPDR cov 3n-skx-ip4-06
- 39 # rls2009 NDRPDR cov 3n-skx-ip4-07
- 14 # rls2009 NDRPDR cov 3n-skx-ip4tun-00
@@ -2322,13 +2737,18 @@
- 23 # rls2009 NDRPDR cov 3n-skx-l2-03
- 24 # rls2009 NDRPDR cov 3n-skx-l2-04
- 41 # rls2009 NDRPDR cov 3n-skx-l2-05
+ - 42 # rls2009 NDRPDR cov 3n-skx-l2-06
- 43 # rls2009 NDRPDR cov 3n-skx-l2-07
- 28 # rls2009 NDRPDR cov 3n-skx-l2-08
- 44 # rls2009 NDRPDR cov 3n-skx-l2-09
- 45 # rls2009 NDRPDR cov 3n-skx-l2-10
- 46 # rls2009 NDRPDR cov 3n-skx-memif-00
- 47 # rls2009 NDRPDR cov 3n-skx-srv6-00
+ - 48 # rls2009 NDRPDR cov 3n-skx-srv6-01
+ - 49 # rls2009 NDRPDR cov 3n-skx-vhost-00
+ - 50 # rls2009 NDRPDR cov 3n-skx-vhost-01
- 51 # rls2009 NDRPDR cov 3n-skx-vhost-02
+ - 54 # rls2009 NDRPDR cov 3n-skx-vhost-03
csit-vpp-perf-verify-2001-2n-skx:
- 101 # MRR sel - old
@@ -2363,7 +2783,7 @@
- 23 # rls2005 NDRPDR iter env 5
- 24 # rls2005 NDRPDR iter env 5
- 25 # rls2005 NDRPDR iter env 5
- - 26 # rls2009 MRR iter env 5
+ - 120 # rls2009 MRR iter env 5
- 35 # rls2009 NDRPDR iter env 5
- 36 # rls2009 NDRPDR iter env 5
- 37 # rls2009 NDRPDR iter env 5
@@ -2374,16 +2794,16 @@
- 44 # rls2009 NDRPDR iter env 5
- 46 # rls2009 NDRPDR iter env 5
- 48 # rls2009 NDRPDR iter env 5
- - 51 # rls2009 NDRPDR iter NAT44 env 5
- - 52 # rls2009 NDRPDR iter NAT44 env 5
- - 53 # rls2009 NDRPDR iter NAT44 env 5
- - 54 # rls2009 NDRPDR iter NAT44 env 5
- - 55 # rls2009 NDRPDR iter NAT44 env 5
- - 56 # rls2009 NDRPDR iter NAT44 env 5
- - 57 # rls2009 NDRPDR iter NAT44 env 5
- - 58 # rls2009 NDRPDR iter NAT44 env 5
- - 59 # rls2009 NDRPDR iter NAT44 env 5
- - 60 # rls2009 NDRPDR iter NAT44 env 5
+ - 110 # rls2009 NDRPDR iter NAT44 env 5
+ - 111 # rls2009 NDRPDR iter NAT44 env 5
+ - 112 # rls2009 NDRPDR iter NAT44 env 5
+ - 113 # rls2009 NDRPDR iter NAT44 env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
- 38 # rls2009 nf-density iter env 5
- 41 # rls2009 nf-density iter env 5
- 45 # rls2009 nf-density iter env 5
@@ -2413,7 +2833,9 @@
- 10 # rls2009 NDRPDR cov 2n-skx-ip4-02
- 20 # rls2009 NDRPDR cov 2n-skx-ip4-03
- 21 # rls2009 NDRPDR cov 2n-skx-ip4-04
- - 13 # rls2009 NDRPDR cov 2n-skx-ip4-05
+ - 31 # rls2009 NDRPDR cov 2n-skx-ip4-05
+ - 32 # rls2009 NDRPDR cov 2n-skx-ip4-06
+ - 33 # rls2009 NDRPDR cov 2n-skx-ip4-07
- 22 # rls2009 NDRPDR cov 2n-skx-ip6-00
- 23 # rls2009 NDRPDR cov 2n-skx-ip6-01
- 24 # rls2009 NDRPDR cov 2n-skx-l2-00
@@ -2458,17 +2880,27 @@
- 22 # rls2005 NDRPDR iter env 5
- 23 # rls2005 NDRPDR iter env 5
- 24 # rls2005 NDRPDR iter env 5
- - 78 # rls2009 MRR iter env 5
+ - 125 # rls2009 MRR iter env 5
- 36 # rls2009 NDRPDR iter env 5
- 39 # rls2009 NDRPDR iter env 5
- 40 # rls2009 NDRPDR iter env 5
- - 42 # rls2009 NDRPDR iter env 5
- 65 # rls2009 NDRPDR iter env 5
- 66 # rls2009 NDRPDR iter env 5
- 79 # rls2009 NDRPDR iter env 5
- 82 # rls2009 NDRPDR iter env 5
+ - 88 # rls2009 NDRPDR iter env 5
- 89 # rls2009 NDRPDR iter env 5
- 90 # rls2009 NDRPDR iter env 5
+ - 114 # rls2009 NDRPDR iter NAT44 env 5
+ - 115 # rls2009 NDRPDR iter NAT44 env 5
+ - 116 # rls2009 NDRPDR iter NAT44 env 5
+ - 117 # rls2009 NDRPDR iter NAT44 env 5
+ - 118 # rls2009 NDRPDR iter NAT44 env 5
+ - 119 # rls2009 NDRPDR iter NAT44 env 5
+ - 121 # rls2009 NDRPDR iter NAT44 env 5
+ - 122 # rls2009 NDRPDR iter NAT44 env 5
+ - 123 # rls2009 NDRPDR iter NAT44 env 5
+ - 126 # rls2009 NDRPDR iter NAT44 env 5
- 37 # rls2009 nf-density iter env 5
- 43 # rls2009 nf-density iter env 5
- 69 # rls2009 nf-density iter env 5
@@ -2498,7 +2930,9 @@
- 4 # rls2009 NDRPDR cov 2n-clx-ip4-02
- 5 # rls2009 NDRPDR cov 2n-clx-ip4-03
- 6 # rls2009 NDRPDR cov 2n-clx-ip4-04
- - 7 # rls2009 NDRPDR cov 2n-clx-ip4-05
+ - 23 # rls2009 NDRPDR cov 2n-clx-ip4-05
+ - 24 # rls2009 NDRPDR cov 2n-clx-ip4-06
+ - 25 # rls2009 NDRPDR cov 2n-clx-ip4-07
- 22 # rls2009 NDRPDR cov 2n-clx-ip6-00
- 9 # rls2009 NDRPDR cov 2n-clx-ip6-01
- 17 # rls2009 NDRPDR cov 2n-clx-l2-00
@@ -2509,6 +2943,14 @@
- 15 # rls2009 NDRPDR cov 2n-clx-vhost-01
- 16 # rls2009 NDRPDR cov 2n-clx-vts-00
+ csit-vpp-perf-report-iterative-2009-2n-zn2:
+ - 15 # rls2009 MRR iter env 5
+ - 17 # rls2009 NDRPDR iter env 5
+ - 18 # rls2009 NDRPDR iter env 5
+ - 31 # rls2009 NDRPDR iter env 5
+ - 33 # rls2009 NDRPDR iter env 5
+ - 34 # rls2009 NDRPDR iter env 5
+
csit-vpp-perf-verify-2001-3n-tsh:
- 9 # MRR sel
csit-vpp-perf-report-iterative-2005-3n-tsh:
@@ -2526,20 +2968,29 @@
- 29 # NDRPDR sel 2001.0-4
- 31 # NDRPDR sel 2001.0-4
- 27 # MRR sel env 4
- # TODO: Add:
csit-vpp-perf-report-iterative-2009-3n-tsh:
- 8 # rls2005 NDRPDR iter env 5
- 11 # rls2005 NDRPDR iter env 5
- 12 # rls2005 NDRPDR iter env 5
- 24 # rls2005 NDRPDR iter env 5
- 27 # rls2005 NDRPDR iter env 5
+ - 29 # rls2005 NDRPDR iter env 5
+ - 31 # rls2005 NDRPDR iter env 5
+ - 39 # rls2005 NDRPDR iter env 5
+ - 40 # rls2005 NDRPDR iter env 5
+ - 42 # rls2005 NDRPDR iter env 5
- 13 # rls2005 MRR iter env 5
- 14 # rls2009 NDRPDR iter env 5
- 20 # rls2009 NDRPDR iter env 5
- 21 # rls2009 NDRPDR iter env 5
- 22 # rls2009 NDRPDR iter env 5
- 23 # rls2009 NDRPDR iter env 5
- - 15 # rls2006 MRR iter env 5
+ - 28 # rls2009 NDRPDR iter env 5
+ - 30 # rls2009 NDRPDR iter env 5
+ - 33 # rls2009 NDRPDR iter env 5
+ - 38 # rls2009 NDRPDR iter env 5
+ - 41 # rls2009 NDRPDR iter env 5
+ - 15 # rls2009 MRR iter env 5
csit-vpp-perf-verify-2001-3n-dnv:
- 5 # NDRPDR sel
@@ -2806,6 +3257,15 @@
- 12 # NDRPDR iter env5
- 13 # NDRPDR iter env5
+ csit-dpdk-perf-report-iterative-2009-2n-zn2:
+ - 16 # NDRPDR iter env5
+ - 21 # NDRPDR iter env5
+ - 22 # NDRPDR iter env5
+ - 23 # NDRPDR iter env5
+ - 24 # NDRPDR iter env5
+ - 25 # NDRPDR iter env5
+ - 29 # NDRPDR iter env5
+
# csit-dpdk-perf-verify-2001-2n-dnv:
# - 9 # NDRPDR sel
# - 10 # NDRPDR sel
@@ -2851,7 +3311,6 @@
- 18 # NDRPDR sel
csit-dpdk-perf-report-iterative-2005-3n-tsh:
- 5 # NDRPDR sel
- # TODO: Add:
csit-dpdk-perf-report-iterative-2009-3n-tsh:
- 1 # NDRPDR iter env5
- 2 # NDRPDR iter env5
@@ -2862,6 +3321,7 @@
- 7 # NDRPDR iter env5
- 9 # NDRPDR iter env5
- 10 # NDRPDR iter env5
+ - 11 # NDRPDR iter env5
csit-vpp-device-2009-ubuntu1804-1n-skx:
- 131 # rls2009 env 5
@@ -5576,6 +6036,24 @@
- "parent"
- "msg"
+# Detailed Test Results - VPP Performance Results 2n-zn2
+- type: "table"
+ title: "Detailed Test Results - VPP Performance Results 2n-zn2"
+ algorithm: "table_merged_details"
+ output-file: "{DIR[DTR,PERF,VPP,2N,ZN2]}/"
+ columns:
+ - title: " |prein| Test Name |preout| "
+ data: "data name"
+ - title: " |prein| Throughput: |br| 1. Mpps Gbps (NDR) |br| 2. Mpps Gbps (PDR) |br| |br| One-Way Latency Percentiles in uSec at %PDR load, |br| one set per each direction: |br| 3. P50 P90 P99 P50 P90 P99 (10% PDR) |br| 4. P50 P90 P99 P50 P90 P99 (50% PDR) |br| 5. P50 P90 P99 P50 P90 P99 (90% PDR) |preout| "
+ data: "data msg"
+ data: "vpp-perf-results-2n-zn2"
+ filter: "all"
+ remove-ndr: False
+ parameters:
+ - "name"
+ - "parent"
+ - "msg"
+
# Detailed Test Results - VPP Performance Results 2n-clx
- type: "table"
title: "Detailed Test Results - VPP Performance Results 2n-clx"
@@ -5695,6 +6173,23 @@
- "name"
- "conf-history"
+# Test configuration - VPP Performance Test Configs 2n-zn2
+- type: "table"
+ title: "Test configuration - VPP Performance Test Configs 2n-zn2"
+ algorithm: "table_merged_details"
+ output-file: "{DIR[DTC,PERF,VPP,2N,ZN2]}/"
+ columns:
+ - title: " |prein| Test Name |preout| "
+ data: "data name"
+ - title: " |prein| VPP API Test Commands History - Commands Used Per Test Case |preout| "
+ data: "data conf-history"
+ data: "vpp-perf-results-2n-zn2"
+ filter: "all"
+ parameters:
+ - "parent"
+ - "name"
+ - "conf-history"
+
# Test configuration - VPP Performance Test Configs 2n-clx
- type: "table"
title: "Test configuration - VPP Performance Test Configs 2n-clx"
@@ -5787,6 +6282,14 @@
data: "vpp-perf-results-2n-skx"
filter: "all"
+# Test Operational Data - VPP Performance Operational Data 2n-zn2
+- type: "table"
+ title: "Test Operational Data - VPP Performance Operational Data 2n-zn2"
+ algorithm: "table_oper_data_html"
+ output-file: "{DIR[DTO,PERF,VPP,2N,ZN2]}/"
+ data: "vpp-perf-results-2n-zn2"
+ filter: "all"
+
# Test Operational Data - VPP Performance Operational Data 2n-clx
- type: "table"
title: "Test Operational Data - VPP Performance Operational Data 2n-clx"
@@ -5870,6 +6373,23 @@
- "parent"
- "msg"
+# Detailed Test Results - VPP MRR Results 2n-zn2
+- type: "table"
+ title: "Detailed Test Results - VPP MRR Results 2n-zn2"
+ algorithm: "table_merged_details"
+ output-file: "{DIR[DTR,MRR,VPP,2N,ZN2]}/"
+ columns:
+ - title: " |prein| Test Name |preout| "
+ data: "data name"
+ - title: " |prein| Maximum Receive Rate trial [Mpps] |preout| "
+ data: "data msg"
+ data: "vpp-mrr-results-2n-zn2"
+ filter: "all"
+ parameters:
+ - "name"
+ - "parent"
+ - "msg"
+
# Detailed Test Results - VPP MRR Results 2n-clx
- type: "table"
title: "Detailed Test Results - VPP MRR Results 2n-clx"
@@ -5989,6 +6509,23 @@
- "name"
- "conf-history"
+# Test configuration - VPP MRR Test Configs 2n-zn2
+- type: "table"
+ title: "Test configuration - VPP MRR Test Configs 2n-zn2"
+ algorithm: "table_merged_details"
+ output-file: "{DIR[DTC,MRR,VPP,2N,ZN2]}/"
+ columns:
+ - title: " |prein| Test Name |preout| "
+ data: "data name"
+ - title: " |prein| VPP API Test Commands History - Commands Used Per Test Case |preout| "
+ data: "data conf-history"
+ data: "vpp-mrr-results-2n-zn2"
+ filter: "all"
+ parameters:
+ - "parent"
+ - "name"
+ - "conf-history"
+
# Test configuration - VPP MRR Test Configs 2n-clx
- type: "table"
title: "Test configuration - VPP MRR Test Configs 2n-clx"
@@ -6917,6 +7454,24 @@
- "parent"
- "msg"
+# Detailed Test Results - DPDK Performance Results 2n-zn2
+- type: "table"
+ title: "Detailed Test Results - DPDK Performance Results 2n-zn2"
+ algorithm: "table_merged_details"
+ output-file: "{DIR[DTR,PERF,DPDK,2N,SKX]}/dpdk_performance_results_2n_zn2"
+ columns:
+ - title: " |prein| Test Name |preout| "
+ data: "data name"
+ - title: " |prein| Throughput: |br| 1. Mpps Gbps (NDR) |br| 2. Mpps Gbps (PDR) |br| |br| One-Way Latency Percentiles in uSec at %PDR load, |br| one set per each direction: |br| 3. P50 P90 P99 P50 P90 P99 (10% PDR) |br| 4. P50 P90 P99 P50 P90 P99 (50% PDR) |br| 5. P50 P90 P99 P50 P90 P99 (90% PDR) |preout| "
+ data: "data msg"
+ data: "dpdk-perf-results-2n-zn2"
+ filter: "all"
+ remove-ndr: False
+ parameters:
+ - "name"
+ - "parent"
+ - "msg"
+
# Detailed Test Results - DPDK Performance Results 2n-clx
- type: "table"
title: "Detailed Test Results - DPDK Performance Results 2n-clx"
@@ -6998,6 +7553,7 @@
- "{DIR[DTR,PERF,VPP,2N,SKX]}"
- "{DIR[DTR,PERF,VPP,3N,SKX]}"
- "{DIR[DTR,PERF,VPP,2N,CLX]}"
+ - "{DIR[DTR,PERF,VPP,2N,ZN2]}"
- "{DIR[DTR,PERF,VPP,3N,HSW]}"
- "{DIR[DTR,PERF,VPP,3N,TSH]}"
- "{DIR[DTR,PERF,VPP,2N,DNV]}"
@@ -7006,6 +7562,7 @@
- "vpp-perf-results-2n-skx"
- "vpp-perf-results-3n-skx"
- "vpp-perf-results-2n-clx"
+ - "vpp-perf-results-2n-zn2"
- "vpp-perf-results-3n-hsw"
- "vpp-perf-results-3n-tsh"
- "vpp-perf-results-2n-dnv"
@@ -7031,6 +7588,7 @@
- "2n-skx"
- "3n-skx"
- "2n-clx"
+ - "2n-zn2"
- "3n-hsw"
- "3n-tsh"
- "2n-dnv"
@@ -7054,6 +7612,7 @@
- "{DIR[DTC,PERF,VPP,2N,SKX]}"
- "{DIR[DTC,PERF,VPP,3N,SKX]}"
- "{DIR[DTC,PERF,VPP,2N,CLX]}"
+ - "{DIR[DTC,PERF,VPP,2N,ZN2]}"
- "{DIR[DTC,PERF,VPP,3N,HSW]}"
- "{DIR[DTC,PERF,VPP,3N,TSH]}"
- "{DIR[DTC,PERF,VPP,2N,DNV]}"
@@ -7062,6 +7621,7 @@
- "vpp-perf-results-2n-skx"
- "vpp-perf-results-3n-skx"
- "vpp-perf-results-2n-clx"
+ - "vpp-perf-results-2n-zn2"
- "vpp-perf-results-3n-hsw"
- "vpp-perf-results-3n-tsh"
- "vpp-perf-results-2n-dnv"
@@ -7087,6 +7647,7 @@
- "2n-skx"
- "3n-skx"
- "2n-clx"
+ - "2n-zn2"
- "3n-hsw"
- "3n-tsh"
- "2n-dnv"
@@ -7110,6 +7671,7 @@
- "{DIR[DTO,PERF,VPP,2N,SKX]}"
- "{DIR[DTO,PERF,VPP,3N,SKX]}"
- "{DIR[DTO,PERF,VPP,2N,CLX]}"
+ - "{DIR[DTO,PERF,VPP,2N,ZN2]}"
- "{DIR[DTO,PERF,VPP,3N,HSW]}"
- "{DIR[DTO,PERF,VPP,3N,TSH]}"
- "{DIR[DTO,PERF,VPP,2N,DNV]}"
@@ -7118,6 +7680,7 @@
- "vpp-perf-results-2n-skx"
- "vpp-perf-results-3n-skx"
- "vpp-perf-results-2n-clx"
+ - "vpp-perf-results-2n-zn2"
- "vpp-perf-results-3n-hsw"
- "vpp-perf-results-3n-tsh"
- "vpp-perf-results-2n-dnv"
@@ -7143,6 +7706,7 @@
- "2n-skx"
- "3n-skx"
- "2n-clx"
+ - "2n-zn2"
- "3n-hsw"
- "3n-tsh"
- "2n-dnv"
@@ -7166,6 +7730,7 @@
- "{DIR[DTR,MRR,VPP,2N,SKX]}"
- "{DIR[DTR,MRR,VPP,3N,SKX]}"
- "{DIR[DTR,MRR,VPP,2N,CLX]}"
+ - "{DIR[DTR,MRR,VPP,2N,ZN2]}"
- "{DIR[DTR,MRR,VPP,3N,HSW]}"
- "{DIR[DTR,MRR,VPP,3N,TSH]}"
- "{DIR[DTR,MRR,VPP,2N,DNV]}"
@@ -7174,6 +7739,7 @@
- "vpp-mrr-results-2n-skx"
- "vpp-mrr-results-3n-skx"
- "vpp-mrr-results-2n-clx"
+ - "vpp-mrr-results-2n-zn2"
- "vpp-mrr-results-3n-hsw"
- "vpp-mrr-results-3n-tsh"
- "vpp-mrr-results-2n-dnv"
@@ -7199,6 +7765,7 @@
- "2n-skx"
- "3n-skx"
- "2n-clx"
+ - "2n-zn2"
- "3n-hsw"
- "3n-tsh"
- "2n-dnv"
@@ -7222,6 +7789,7 @@
- "{DIR[DTC,MRR,VPP,2N,SKX]}"
- "{DIR[DTC,MRR,VPP,3N,SKX]}"
- "{DIR[DTC,MRR,VPP,2N,CLX]}"
+ - "{DIR[DTC,MRR,VPP,2N,ZN2]}"
- "{DIR[DTC,MRR,VPP,3N,HSW]}"
- "{DIR[DTC,MRR,VPP,3N,TSH]}"
- "{DIR[DTC,MRR,VPP,2N,DNV]}"
@@ -7230,6 +7798,7 @@
- "vpp-mrr-results-2n-skx"
- "vpp-mrr-results-3n-skx"
- "vpp-mrr-results-2n-clx"
+ - "vpp-mrr-results-2n-zn2"
- "vpp-mrr-results-3n-hsw"
- "vpp-mrr-results-3n-tsh"
- "vpp-mrr-results-2n-dnv"
@@ -7255,6 +7824,7 @@
- "2n-skx"
- "3n-skx"
- "2n-clx"
+ - "2n-zn2"
- "3n-hsw"
- "3n-tsh"
- "2n-dnv"
@@ -7319,6 +7889,16 @@
filter: "all"
data-start-level: 4
+# DPDK Performance Results 2n-zn2
+- type: "file"
+ title: "DPDK Performance Results 2n-zn2"
+ algorithm: "file_test_results"
+ output-file: "{DIR[DTR,PERF,DPDK,2N,ZN2]}"
+ dir-tables: "{DIR[DTR,PERF,DPDK,2N,ZN2]}"
+ data: "dpdk-perf-results-2n-zn2"
+ filter: "all"
+ data-start-level: 4
+
# DPDK Performance Results 2n-clx
- type: "file"
title: "DPDK Performance Results 2n-clx"
@@ -11340,65 +11920,85 @@
title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr"
layout: "plot-throughput"
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# layout: "plot-throughput"
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ layout: "plot-throughput"
- type: "plot"
title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr"
@@ -11430,65 +12030,85 @@
title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr"
layout: "plot-throughput"
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# layout: "plot-throughput"
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ layout: "plot-throughput"
- type: "plot"
title: "Throughput: 2n-skx-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr"
@@ -13846,38 +14466,6 @@
title: "3n-tsh-x520-64b-1t1c-vhost-base-ixgbe-pdr"
layout: "plot-throughput"
-#- type: "plot"
-# title: "Throughput: 3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-ndr"
-# data: "plot-vpp-throughput-lat-tsa-3n-tsh"
-# include:
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-1Lbvpplacp-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-1Lbvpplacp-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# layout:
-# title: "3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-pdr"
-# data: "plot-vpp-throughput-lat-tsa-3n-tsh"
-# include:
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-1Lbvpplacp-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-1Lbvpplacp-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# - "Tests.Vpp.Perf.Vm Vhost.10Ge2P1X520-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-1t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
-# layout:
-# title: "3n-tsh-x520-64b-1t1c-link-bonding-vhost-base-ixgbe-pdr"
-# layout: "plot-throughput"
-
- type: "plot"
title: "Throughput: 2n-skx-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr"
algorithm: "plot_perf_box_name"
@@ -14236,65 +14824,85 @@
title: "2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr"
layout: "plot-throughput-speedup-analysis"
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "22n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
- type: "plot"
title: "Speedup: 2n-skx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa"
@@ -14326,65 +14934,85 @@
title: "2n-skx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr"
layout: "plot-throughput-speedup-analysis"
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-skx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "22n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-skx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-skx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
- type: "plot"
title: "Speedup: 2n-skx-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa"
@@ -17440,65 +18068,85 @@
title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr"
layout: "plot-throughput"
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# layout: "plot-throughput"
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ layout: "plot-throughput"
- type: "plot"
title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr"
@@ -17530,65 +18178,85 @@
title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr"
layout: "plot-throughput"
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# layout: "plot-throughput"
-#
-#- type: "plot"
-# title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# algorithm: "plot_perf_box_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# layout: "plot-throughput"
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ layout: "plot-cps"
+
+- type: "plot"
+ title: "Throughput: 2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ layout: "plot-throughput"
- type: "plot"
title: "Throughput: 2n-clx-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr"
@@ -18527,22 +19195,6 @@
layout: "plot-throughput-speedup-analysis"
- type: "plot"
- title: "Speedup: 2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
- algorithm: "plot_tsa_name"
- output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
- data: "plot-vpp-throughput-lat-tsa-2n-clx"
- include:
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
- - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
- layout:
- title: "2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr"
- layout: "plot-throughput-speedup-analysis"
-
-- type: "plot"
title: "Speedup: 2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa"
algorithm: "plot_tsa_name"
output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa"
@@ -18572,65 +19224,101 @@
title: "2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr"
layout: "plot-throughput-speedup-analysis"
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "22n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
-# layout: "plot-throughput-speedup-analysis"
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-features-ip4routing-base-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
- type: "plot"
title: "Speedup: 2n-clx-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa"
@@ -18662,65 +19350,85 @@
title: "2n-clx-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr"
layout: "plot-throughput-speedup-analysis"
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
-#
-#- type: "plot"
-# title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
-# algorithm: "plot_tsa_name"
-# output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
-# data: "plot-vpp-throughput-lat-tsa-2n-clx"
-# include:
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
-# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
-# layout:
-# title: "22n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
-# layout: "plot-throughput-speedup-analysis"
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis-cps"
+
+- type: "plot"
+ title: "Speedup: 2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-clx"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+ layout:
+ title: "2n-clx-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
- type: "plot"
title: "Speedup: 2n-clx-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa"
@@ -19412,8 +20120,6 @@
title: "2n-clx-xxv710-114b-vts-l2switching-base-[avf,dpdk]-pdr"
layout: "plot-throughput-speedup-analysis"
-################################################################################
-
# Packet Throughput - DPDK
# 2n-clx-xxv710
@@ -19516,6 +20222,2454 @@
title: "2n-clx-x710-64b-4t2c-base-pdr"
layout: "plot-throughput"
+###############################################################################
+
+# 2n-zn2
+
+# Packet Throughput
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-memif-base-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-memif-base-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-memif-base-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-2t1c-rdma-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-eth-2memif-1dcr-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-avf-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-avf-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-ip4routing-base-scale-[avf,dpdk]-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-scale-avf-rnd-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-base-scale-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-ip4routing-scale-dpdk-rnd-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-ndr"
+ layout: "plot-throughput"
+
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-ndr"
+# layout: "plot-throughput"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+# layout: "plot-cps"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+# layout: "plot-throughput"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+# layout: "plot-cps"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+# layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.64b-2t1c-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-nat44det-ip4routing-stl-bidir-avf-pdr"
+ layout: "plot-throughput"
+
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-stl-unidir-avf-pdr"
+# layout: "plot-throughput"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+# layout: "plot-cps"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+# layout: "plot-throughput"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+# layout: "plot-cps"
+#
+#- type: "plot"
+# title: "Throughput: 2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+# algorithm: "plot_perf_box_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-2t1c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-2t1c-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+# layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-features-ip4routing-base-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-rdma-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-rdma-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ip4base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip4Base-Ndrpdr.64B-2t1c-rdma-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Ndrpdr.64B-2t1c-rdma-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ip4base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-2t1c-rdma-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ethip4-ip4scale-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-rdma-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-2t1c-rdma-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-2t1c-rdma-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-2t1c-rdma-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-2t1c-rdma-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-ethip4-features-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-78b-2t1c-ip6routing-base-scale-[avf,dpdk]-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-avf-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-2t1c-ip6routing-base-scale-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-rdma-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-rdma-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip6Base-Ndrpdr.78B-2t1c-rdma-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Base-Ndrpdr.78B-2t1c-rdma-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale20K-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale200K-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale2M-Ndrpdr.78B-2t1c-rdma-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-78b-2t1c-rdma-ip6routing-base-scale-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Patch-Ndrpdr.64B-2t1c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Xcbase-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Patch-Ndrpdr.64B-2t1c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Xcbase-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Patch-Ndrpdr.64B-2t1c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Xcbase-Ndrpdr.64B-2t1c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Patch-Ndrpdr.64B-2t1c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Xcbase-Ndrpdr.64B-2t1c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Patch-Ndrpdr.64B-2t1c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Patch-Ndrpdr.64B-2t1c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Patch-Ndrpdr.64B-2t1c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Ndrpdr.64B-2t1c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Patch-Ndrpdr.64B-2t1c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Ndrpdr.64B-2t1c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-l2switching-base-scale-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Patch-Ndrpdr.64B-2t1c-rdma-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Patch-Ndrpdr.64B-2t1c-rdma-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2switching-base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-2t1c-rdma-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2switching-scale-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-avf-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-avf-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-2t1c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-avf-vpp-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-2t1c-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-vhost-base-dpdk-vpp-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-2t1c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-rdma-l2-vhost-vppl2xc-base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-ndr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-[avf,dpdk]-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "Throughput: 2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-dpdk-pdr"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-2t1c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-114b-2t1c-vts-l2switching-base-[avf,dpdk]-pdr"
+ layout: "plot-throughput"
+
+################################################################################
+
+# Packet Speedup
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-memif-base-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-memif-base-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-memif-base-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-memif-base-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-memif-base-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-memif-base-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-memif-base-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-memif-base-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-memif-base-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-memif-base-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-memif-base-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-memif-base-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2memif-1dcr-ndrpdr"
+ - "Tests.Vpp.Perf.Container Memif.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Eth-2Memif-1Dcr-Ndrpdr.64B-.t.c-rdma-ethip4-ip4base-eth-2memif-1dcr-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2-eth-2memif-1dcr-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-avf-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-avf-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-10Ge2P1X710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-ip4routing-base-scale-[avf,dpdk]-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-base-scale-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-base-scale-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-avf-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-scale-avf-rnd-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-ethip4-ip4scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-base-scale-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-ip4routing-scale-dpdk-rnd-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-features-ip4routing-base-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-ndr"
+# layout: "plot-throughput-speedup-analysis"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-ndr"
+# layout: "plot-throughput-speedup-analysis-cps"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-ndr"
+# layout: "plot-throughput-speedup-analysis"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-ndr"
+# layout: "plot-throughput-speedup-analysis-cps"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-ndr"
+# layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-avf-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Avf-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-features-ip4routing-base-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr"
+ - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.64b-.t.c-avf-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-nat44det-ip4routing-stl-bidir-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-stl-unidir-avf-pdr"
+# layout: "plot-throughput-speedup-analysis"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-cps-avf-pdr"
+# layout: "plot-throughput-speedup-analysis-cps"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-udp-stf-pps-avf-pdr"
+# layout: "plot-throughput-speedup-analysis"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-cps-avf-pdr"
+# layout: "plot-throughput-speedup-analysis-cps"
+#
+#- type: "plot"
+# title: "Speedup: 2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+# algorithm: "plot_tsa_name"
+# output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr-tsa"
+# data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+# include:
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr"
+# - "tests.vpp.perf.ip4.2n1l-25ge2p1xxv710-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.64b-.t.c-avf-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr"
+# layout:
+# title: "2n-zn2-xxv710-64b-nat44ed-ip4routing-tcp-stf-pps-avf-pdr"
+# layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-ethip4-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-25Ge2P1Xxv710-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-features-ip4routing-base-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ip4base-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ip4base-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-rdma-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-rdma-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ip4base-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ip4base-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ip4base-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip4Base-Ndrpdr.64B-.t.c-rdma-dot1q-ip4base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Base-Ndrpdr.64B-.t.c-rdma-ethip4-ip4base-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ip4base-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale20K-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale20k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale200K-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale200k-rnd-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4-Ip4Scale2M-Rnd-Ndrpdr.64B-.t.c-rdma-ethip4-ip4scale2m-rnd-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ethip4-ip4scale-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ethip4-features-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ethip4-features-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-rdma-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-rdma-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ethip4-features-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-ethip4-features-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-ethip4-features-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sf-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Iacl50Sl-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sf-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-Ethip4Udp-Ip4Base-Oacl50Sl-10Kflows-Ndrpdr.64B-.t.c-rdma-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1-p1-s1-Ndrpdr.64B-.t.c-rdma-ethip4udp-nat44det-h1-p1-s1-ndrpdr"
+ - "Tests.Vpp.Perf.Ip4.2N1L-100Ge2P1Cx556A-Rdma-ethip4udp-nat44det-h1024-p63-s64512-Ndrpdr.64B-.t.c-rdma-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-ethip4-features-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale2m-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-10Ge2P1X710-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-78b-ip6routing-base-scale-[avf,dpdk]-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-ip6routing-base-scale-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-avf-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-avf-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Avf-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-avf-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-ip6routing-base-scale-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-25Ge2P1Xxv710-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-78b-ip6routing-base-scale-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-rdma-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-rdma-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-Ip6Base-Ndrpdr.78B-.t.c-rdma-dot1q-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Base-Ndrpdr.78B-.t.c-rdma-ethip6-ip6base-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale20K-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale20k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale200K-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale200k-ndrpdr"
+ - "Tests.Vpp.Perf.Ip6.2N1L-100Ge2P1Cx556A-Rdma-Ethip6-Ip6Scale2M-Ndrpdr.78B-.t.c-rdma-ethip6-ip6scale2m-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-78b-rdma-ip6routing-base-scale-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-l2switching-base-scale-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-l2switching-base-scale-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Patch-Ndrpdr.64B-.t.c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Xcbase-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-l2switching-base-scale-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-l2switching-base-scale-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-l2switching-base-scale-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Patch-Ndrpdr.64B-.t.c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Xcbase-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-l2switching-base-scale-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Patch-Ndrpdr.64B-.t.c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Xcbase-Ndrpdr.64B-.t.c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-l2switching-base-scale-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Patch-Ndrpdr.64B-.t.c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Xcbase-Ndrpdr.64B-.t.c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-10Ge2P1X710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-l2switching-base-scale-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Patch-Ndrpdr.64B-.t.c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Patch-Ndrpdr.64B-.t.c-avf-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-scale-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-avf-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-scale-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Patch-Ndrpdr.64B-.t.c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Ndrpdr.64B-.t.c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Patch-Ndrpdr.64B-.t.c-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Ndrpdr.64B-.t.c-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-25Ge2P1Xxv710-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-l2switching-base-scale-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2switching-base-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2switching-base-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Patch-Ndrpdr.64B-.t.c-rdma-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2switching-base-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2switching-base-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2switching-base-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Gbp-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-gbp-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Patch-Ndrpdr.64B-.t.c-rdma-eth-l2patch-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2switching-base-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2switching-scale-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale10Kmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale10kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale100Kmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale100kmaclrn-ndrpdr"
+ - "Tests.Vpp.Perf.L2.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdscale1Mmaclrn-Ndrpdr.64B-.t.c-rdma-eth-l2bdscale1mmaclrn-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2switching-scale-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-avf-ndr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-avf-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-avf-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-avf-pdr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-avf-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-avf-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-avf-vpp-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-avf-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Avf-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-.t.c-avf-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-avf-vpp-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-dpdk-ndr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-dpdk-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-dpdk-pdr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-dpdk-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-25Ge2P1Xxv710-Ethip4-Ip4Base-Eth-2Vhostvr1024-1Vm-Vppip4-Ndrpdr.64B-.t.c-ethip4-ip4base-eth-2vhostvr1024-1vm-vppip4-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-vhost-base-dpdk-vpp-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2-vhost-base-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2-vhost-base-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-2t1c-l2-vhost-vppl2xc-base-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Dot1Q-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Xcbase-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-eth-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ - "Tests.Vpp.Perf.Vm Vhost.2N1L-100Ge2P1Cx556A-Rdma-Eth-L2Bdbasemaclrn-Eth-2Vhostvr1024-1Vm-Vppl2Xc-Ndrpdr.64B-.t.c-rdma-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr"
+ layout:
+ title: "2n-zn2-cx556a-64b-rdma-l2-vhost-vppl2xc-base-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-ndr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-ndr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-114b-vts-l2switching-base-[avf,dpdk]-ndr"
+ layout: "plot-throughput-speedup-analysis"
+
+- type: "plot"
+ title: "Speedup: 2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-pdr-tsa"
+ algorithm: "plot_tsa_name"
+ output-file: "{DIR[STATIC,VPP]}/2n-zn2-xxv710-114b-vts-l2switching-base-dpdk-pdr-tsa"
+ data: "plot-vpp-throughput-lat-tsa-2n-zn2"
+ include:
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2N1L-25Ge2P1Xxv710-Avf-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-avf-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Noacl-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermit-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr"
+ - "Tests.Vpp.Perf.Vts.2n1l-25Ge2P1Xxv710-Ethip4Vxlan-L2Bdbasemaclrn-Eth-Iacldstbase-Aclpermitreflect-2Vhostvr1024-1Vm-Ndrpdr.114B-.t.c-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-114b-vts-l2switching-base-[avf,dpdk]-pdr"
+ layout: "plot-throughput-speedup-analysis"
+
+# Packet Throughput - DPDK
+
+# 2n-zn2-xxv710
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-xxv710-64b-2t1c-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-xxv710-64b-2t1c-base-ndr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-eth-l2xcbase-testpmd-ndrpdr.64b-2t1c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-ethip4-ip4base-l3fwd-ndrpdr.64b-2t1c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-xxv710-64b-4t2c-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-xxv710-64b-4t2c-base-ndr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-eth-l2xcbase-testpmd-ndrpdr.64b-4t2c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-ethip4-ip4base-l3fwd-ndrpdr.64b-4t2c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-4t2c-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-xxv710-64b-2t1c-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-xxv710-64b-2t1c-base-pdr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-eth-l2xcbase-testpmd-ndrpdr.64b-2t1c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-ethip4-ip4base-l3fwd-ndrpdr.64b-2t1c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-2t1c-base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-xxv710-64b-4t2c-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-xxv710-64b-4t2c-base-pdr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-eth-l2xcbase-testpmd-ndrpdr.64b-4t2c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-25ge2p1xxv710-ethip4-ip4base-l3fwd-ndrpdr.64b-4t2c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-xxv710-64b-4t2c-base-pdr"
+ layout: "plot-throughput"
+
+# 2n-zn2-x710
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-x710-64b-2t1c-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-x710-64b-2t1c-base-ndr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-eth-l2xcbase-testpmd-ndrpdr.64b-2t1c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-ethip4-ip4base-l3fwd-ndrpdr.64b-2t1c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-x710-64b-4t2c-base-ndr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-x710-64b-4t2c-base-ndr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-eth-l2xcbase-testpmd-ndrpdr.64b-4t2c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-ethip4-ip4base-l3fwd-ndrpdr.64b-4t2c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-4t2c-base-ndr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-x710-64b-2t1c-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-x710-64b-2t1c-base-pdr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-eth-l2xcbase-testpmd-ndrpdr.64b-2t1c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-ethip4-ip4base-l3fwd-ndrpdr.64b-2t1c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-2t1c-base-pdr"
+ layout: "plot-throughput"
+
+- type: "plot"
+ title: "DPDK Throughput: 2n-zn2-x710-64b-4t2c-base-pdr"
+ algorithm: "plot_perf_box_name"
+ output-file: "{DIR[STATIC,DPDK]}/2n-zn2-x710-64b-4t2c-base-pdr"
+ data: "plot-dpdk-throughput-latency-2n-zn2"
+ include:
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-eth-l2xcbase-testpmd-ndrpdr.64b-4t2c-eth-l2xcbase-testpmd-ndrpdr"
+ - "tests.dpdk.perf.2n1l-10ge2p1x710-ethip4-ip4base-l3fwd-ndrpdr.64b-4t2c-ethip4-ip4base-l3fwd-ndrpdr"
+ layout:
+ title: "2n-zn2-x710-64b-4t2c-base-pdr"
+ layout: "plot-throughput"
+
################################################################################
- type: "plot"
@@ -19541,6 +22695,17 @@
layout: "plot-hdrh-latency-by-percentile"
- type: "plot"
+ title: "Latency by percentile: 2n-zn2"
+ algorithm: "plot_hdrh_lat_by_percentile"
+ output-file: "{DIR[STATIC,VPP]}/hdrh-lat-percentile-2n-zn2"
+ output-file-links: "{DIR[LAT,VPP]}/2n_zn2.rst"
+ target-links: "../../_static/vpp"
+ data: "plot-vpp-hdrh-lat-2n-zn2"
+ filter: "'2T1C' and 'NIC_Intel-XXV710'"
+ layout:
+ layout: "plot-hdrh-latency-by-percentile"
+
+- type: "plot"
title: "Latency by percentile: 3n-skx"
algorithm: "plot_hdrh_lat_by_percentile"
output-file: "{DIR[STATIC,VPP]}/hdrh-lat-percentile-3n-skx"
@@ -19563,6 +22728,17 @@
layout: "plot-hdrh-latency-by-percentile"
- type: "plot"
+ title: "Latency by percentile: 2n-clx-nat44"
+ algorithm: "plot_hdrh_lat_by_percentile"
+ output-file: "{DIR[STATIC,VPP]}/hdrh-lat-percentile-2n-clx"
+ output-file-links: "{DIR[LAT,VPP]}/2n_clx.rst"
+ target-links: "../../_static/vpp"
+ data: "plot-vpp-hdrh-lat-2n-clx-nat44"
+ filter: "'2T1C' and 'NIC_Intel-XXV710'"
+ layout:
+ layout: "plot-hdrh-latency-by-percentile"
+
+- type: "plot"
title: "Latency by percentile: 3n-hsw"
algorithm: "plot_hdrh_lat_by_percentile"
output-file: "{DIR[STATIC,VPP]}/hdrh-lat-percentile-3n-hsw"
@@ -19618,6 +22794,17 @@
layout: "plot-hdrh-latency-by-percentile"
- type: "plot"
+ title: "Latency by percentile: DPDK 2n-zn2"
+ algorithm: "plot_hdrh_lat_by_percentile"
+ output-file: "{DIR[STATIC,DPDK]}/hdrh-lat-percentile-2n-zn2"
+ output-file-links: "{DIR[LAT,DPDK]}/2n_zn2.rst"
+ target-links: "../../_static/dpdk"
+ data: "plot-dpdk-hdrh-lat-2n-zn2"
+ filter: "'2T1C' and 'NIC_Intel-XXV710'"
+ layout:
+ layout: "plot-hdrh-latency-by-percentile"
+
+- type: "plot"
title: "Latency by percentile: DPDK 3n-hsw"
algorithm: "plot_hdrh_lat_by_percentile"
output-file: "{DIR[STATIC,DPDK]}/hdrh-lat-percentile-3n-hsw"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.16.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.16.yaml
index 55dee36edc..660e33ee53 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.16.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.16.yaml
@@ -3,9 +3,21 @@
hostname: "t1-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.17.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.17.yaml
index 9159af66e4..48e5083332 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.17.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.17.yaml
@@ -3,9 +3,21 @@
hostname: "t1-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.18.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.18.yaml
index cda286675f..f823ed6406 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.18.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.18.yaml
@@ -3,9 +3,21 @@
hostname: "t1-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.20.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.20.yaml
index 6df8fd1970..68af6e81f7 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.20.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.20.yaml
@@ -3,9 +3,21 @@
hostname: "t2-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.21.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.21.yaml
index daa0eb14ce..0d43874ae3 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.21.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.21.yaml
@@ -3,9 +3,21 @@
hostname: "t2-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.22.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.22.yaml
index 49945304b6..797606a353 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.22.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.22.yaml
@@ -3,9 +3,21 @@
hostname: "t2-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.24.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.24.yaml
index e8c7e98267..25bb536f81 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.24.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.24.yaml
@@ -3,9 +3,21 @@
hostname: "t3-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.25.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.25.yaml
index e102a55631..db02aa7816 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.25.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.25.yaml
@@ -3,9 +3,21 @@
hostname: "t3-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.26.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.26.yaml
index 7cfae3635e..0e97bd0fd2 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.26.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.26.yaml
@@ -3,9 +3,21 @@
hostname: "t3-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-17,19-35"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-17,19-35"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-17,19-35"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,18"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.28.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.28.yaml
index 34e03fec7b..46a08bc373 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.28.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.28.yaml
@@ -33,6 +33,25 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
fingerprint.network.disallow_link_local: true
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.29.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.29.yaml
index 53eea0d12d..7d71f6af62 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.29.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.29.yaml
@@ -33,5 +33,24 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.30.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.30.yaml
index 5b8133ef84..e563a17d4a 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.30.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.30.yaml
@@ -34,7 +34,25 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
fingerprint.network.disallow_link_local: true
nomad_retry_servers: [ "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "both"
+consul_retry_servers:
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.32.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.32.yaml
index fe5c37935e..4f6c65a26c 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.32.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.32.yaml
@@ -34,6 +34,24 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_retry_servers: [ "10.30.51.33", "10.30.51.30" ]
nomad_servers: [ "10.30.51.32:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "both"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.33.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.33.yaml
index ef8ced7262..18fd62b0dc 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.33.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.33.yaml
@@ -34,6 +34,24 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_retry_servers: [ "10.30.51.32", "10.30.51.30" ]
nomad_servers: [ "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "both"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.34.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.34.yaml
index d0afca9164..3f4cf574ce 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.34.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.34.yaml
@@ -34,6 +34,25 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_retry_servers: [ "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.35.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.35.yaml
index 75980daf86..2ee23fa60a 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.35.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.35.yaml
@@ -34,6 +34,25 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_retry_servers: [ "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.36.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.36.yaml
index 3469427eac..f57c8df45f 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.36.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.36.yaml
@@ -3,13 +3,19 @@
hostname: "s17-t33-sut1"
grub:
+ audit: "0"
+ intel_iommu: "on"
isolcpus: "1-15,17-31,33-47,49-63"
+ nmi_watchdog: "0"
nohz_full: "1-15,17-31,33-47,49-63"
+ nosoftlockup: True
+ processor.max_cstate: "1"
rcu_nocbs: "1-15,17-31,33-47,49-63"
sysctl:
kernel:
watchdog_cpumask: "0,16,32,48"
vm:
- nr_hugepages: 4096
- max_map_count: 20000
+ nr_hugepages: 32768
+
+inventory_ipmi_hostname: '10.30.50.36'
cpu_microarchitecture: "taishan"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.37.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.37.yaml
index 64a56a8ebb..90fe27e275 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.37.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.37.yaml
@@ -3,13 +3,19 @@
hostname: "s18-t33-sut2"
grub:
+ audit: "0"
+ intel_iommu: "on"
isolcpus: "1-15,17-31,33-47,49-63"
+ nmi_watchdog: "0"
nohz_full: "1-15,17-31,33-47,49-63"
+ nosoftlockup: True
+ processor.max_cstate: "1"
rcu_nocbs: "1-15,17-31,33-47,49-63"
sysctl:
kernel:
watchdog_cpumask: "0,16,32,48"
vm:
- nr_hugepages: 4096
- max_map_count: 20000
+ nr_hugepages: 32768
+
+inventory_ipmi_hostname: '10.30.50.37'
cpu_microarchitecture: "taishan"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.39.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.39.yaml
index 41b3ed2238..7e27795128 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.39.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.39.yaml
@@ -33,9 +33,31 @@ nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
- driver.raw_exec.enable: 0
+ driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33"
+ - "10.32.8.14"
+ - "10.32.8.15"
+ - "10.32.8.16" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.40.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.40.yaml
index a91ed66a33..7b98b3e72b 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.40.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.40.yaml
@@ -33,9 +33,31 @@ nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
- driver.raw_exec.enable: 0
+ driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33"
+ - "10.32.8.14"
+ - "10.32.8.15"
+ - "10.32.8.16" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.44.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.44.yaml
index d84043903e..2b06831186 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.44.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.44.yaml
@@ -3,9 +3,21 @@
hostname: "s3-t21-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.45.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.45.yaml
index be5e1c686d..9818f826c9 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.45.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.45.yaml
@@ -3,9 +3,21 @@
hostname: "s4-t21-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.46.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.46.yaml
index fff2a68bac..24be5e2e54 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.46.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.46.yaml
@@ -3,9 +3,21 @@
hostname: "s11-t31-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.47.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.47.yaml
index 5ed6a9c6b6..7b59ff1606 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.47.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.47.yaml
@@ -3,9 +3,21 @@
hostname: "s12-t31-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.48.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.48.yaml
index 3f13d1431a..d69fd03edc 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.48.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.48.yaml
@@ -3,9 +3,21 @@
hostname: "s13-t31-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.49.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.49.yaml
index 629044d0bc..62ef6da2ce 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.49.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.49.yaml
@@ -3,9 +3,21 @@
hostname: "s19-t33t34-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
index 0904fca6de..cd7a739b6e 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml
@@ -3,11 +3,24 @@
hostname: "s1-t11-sut1"
grub:
- nr_hugepages: 65536
-
+ hugepagesz: "2M"
+ nr_hugepages: 32768
inventory_ipmi_hostname: "10.30.50.47"
cpu_microarchitecture: "skylake"
+# User management.
+users:
+ - username: localadmin
+ groups: [adm, sudo]
+ password: "$6$FIsbVDQR$5D0wgufOd2FtnmOiRNsGlgg6Loh.0x3dWSj72DSQnqisSyE9DROfgSgA6s0yxDwz4Jd5SRTXiTKuRYuSQ5POI1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+ - username: testuser
+ groups: [adm, sudo]
+ password: "$6$zpBUdQ4q$P2zKclumvCndWujgP/qQ8eMk3YZk7ESAom04Fqp26hJH2jWkMXEX..jqxzMdDLJKiDaDHIaSkQMVjHzd3cRLs1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+
# Nomad settings.
nomad_certificates:
- src: "{{ vault_nomad_v1_ca_file }}"
@@ -27,3 +40,21 @@ nomad_options:
docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
index f003f0d84d..447f6a98f6 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml
@@ -3,11 +3,24 @@
hostname: "s2-t12-sut1"
grub:
- nr_hugepages: 65536
-
+ hugepagesz: "2M"
+ nr_hugepages: 32768
inventory_ipmi_hostname: "10.30.50.48"
cpu_microarchitecture: "skylake"
+# User management.
+users:
+ - username: localadmin
+ groups: [adm, sudo]
+ password: "$6$FIsbVDQR$5D0wgufOd2FtnmOiRNsGlgg6Loh.0x3dWSj72DSQnqisSyE9DROfgSgA6s0yxDwz4Jd5SRTXiTKuRYuSQ5POI1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+ - username: testuser
+ groups: [adm, sudo]
+ password: "$6$zpBUdQ4q$P2zKclumvCndWujgP/qQ8eMk3YZk7ESAom04Fqp26hJH2jWkMXEX..jqxzMdDLJKiDaDHIaSkQMVjHzd3cRLs1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+
# Nomad settings.
nomad_certificates:
- src: "{{ vault_nomad_v1_ca_file }}"
@@ -27,3 +40,21 @@ nomad_options:
docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.52.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.52.yaml
index 2522ecb5f7..4a4ccc0d91 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.52.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.52.yaml
@@ -3,9 +3,21 @@
hostname: "s5-t22-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.53.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.53.yaml
index 05a38626f9..f0a50bfb71 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.53.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.53.yaml
@@ -3,9 +3,21 @@
hostname: "s6-t22-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.54.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.54.yaml
index cde66d0bb2..b51eed468f 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.54.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.54.yaml
@@ -3,9 +3,21 @@
hostname: "s7-t23-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.55.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.55.yaml
index bd45f3ad43..4b144fa69b 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.55.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.55.yaml
@@ -3,9 +3,21 @@
hostname: "s8-t23-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
index f16e3dcdbf..613c9b110c 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml
@@ -3,9 +3,21 @@
hostname: "s9-t24-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
index d36d47f97a..52ec3d9911 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml
@@ -3,9 +3,21 @@
hostname: "s10-t24-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.58.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.58.yaml
index ab9f66616f..8971b4a7bb 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.58.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.58.yaml
@@ -3,9 +3,21 @@
hostname: "s14-t32-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.59.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.59.yaml
index 8e5c583f38..ed39581e30 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.59.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.59.yaml
@@ -3,9 +3,21 @@
hostname: "s15-t32-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.60.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.60.yaml
index e68ae5beda..1e3a49cf1d 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.60.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.60.yaml
@@ -3,9 +3,21 @@
hostname: "s16-t32-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.65.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.65.yaml
index 30a8bc0525..6e9d5333e4 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.65.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.65.yaml
@@ -33,9 +33,28 @@ nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
- driver.raw_exec.enable: 0
+ driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.66.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.66.yaml
index 3bb4c32a41..0e133d40c0 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.66.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.66.yaml
@@ -33,9 +33,28 @@ nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
- driver.raw_exec.enable: 0
+ driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.67.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.67.yaml
index b65abe4638..bedbbabd16 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.67.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.67.yaml
@@ -33,9 +33,28 @@ nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
- driver.raw_exec.enable: 0
+ driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.68.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.68.yaml
index a5410850a3..ce4026115a 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.68.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.68.yaml
@@ -36,6 +36,25 @@ nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: false
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.69.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.69.yaml
index dfbe5a876b..0ebda86285 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.69.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.69.yaml
@@ -1,17 +1,22 @@
---
# file: host_vars/10.30.51.69.yaml
-hostname: "s27-t13-sut1"
+hostname: "s27-t34-sut1"
grub:
- isolcpus: "1-111,113-223"
- nohz_full: "1-111,113-223"
- rcu_nocbs: "1-111,113-223"
+ audit: "0"
+ intel_iommu: "on"
+ isolcpus: "1-27,29-55"
+ nmi_watchdog: "0"
+ nohz_full: "1-27,29-55"
+ nosoftlockup: True
+ processor.max_cstate: "1"
+ rcu_nocbs: "1-27,29-55"
sysctl:
kernel:
- watchdog_cpumask: "0,112"
+ watchdog_cpumask: "0,28"
vm:
- nr_hugepages: 57344
- max_map_count: 20000
+ nr_hugepages: 57344
+ max_map_count: 20000
inventory_ipmi_hostname: "10.30.50.69"
cpu_microarchitecture: "thunderx2"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.70.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.70.yaml
index da603c28ce..22107c4f1a 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.70.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.70.yaml
@@ -5,6 +5,7 @@ hostname: "s55-t36-sut1"
inventory_ipmi_hostname: "10.30.50.70"
vfs_data_file: "csit-initialize-vfs-tx2.sh"
grub:
+ hugepagesz: "2M"
nr_hugepages: 65536
cpu_microarchitecture: "thunderx2"
@@ -43,3 +44,21 @@ nomad_options:
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.71.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.71.yaml
index b5fb9cc4ec..f8b7c92df4 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.71.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.30.51.71.yaml
@@ -5,6 +5,7 @@ hostname: "s56-t37-sut1"
inventory_ipmi_hostname: "10.30.50.71"
vfs_data_file: "csit-initialize-vfs-tx2.sh"
grub:
+ hugepagesz: "2M"
nr_hugepages: 65536
cpu_microarchitecture: "thunderx2"
@@ -43,3 +44,21 @@ nomad_options:
driver.whitelist: "docker,raw_exec,exec"
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
nomad_cpu_total_compute: "40000"
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.10.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.10.yaml
index 7f7860b5f3..05f1a19576 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.10.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.10.yaml
@@ -3,9 +3,21 @@
hostname: "s28-t26t35-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.11.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.11.yaml
index 0ada8f08e3..c6cb68cb5d 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.11.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.11.yaml
@@ -3,9 +3,21 @@
hostname: "s29-t26-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-5"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-5"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-5"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.12.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.12.yaml
index 4e9302314a..5d350647a9 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.12.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.12.yaml
@@ -3,9 +3,21 @@
hostname: "s30-t35-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-5"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-5"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-5"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.13.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.13.yaml
index 9cd28df16b..aff600265c 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.13.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.13.yaml
@@ -3,9 +3,21 @@
hostname: "s31-t35-sut2"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-5"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-5"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-5"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.14.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.14.yaml
index 3f426b79ec..dd2a2f5b95 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.14.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.14.yaml
@@ -28,13 +28,36 @@ nomad_certificates:
nomad_datacenter: "yul1"
nomad_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
-nomad_node_role: "both"
+nomad_node_role: "client"
nomad_node_class: "s5ci"
nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: true
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
fingerprint.network.disallow_link_local: true
nomad_retry_servers: [ "10.30.51.30", "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+nomad_volumes:
+ - name: "prod-volume-data1-1"
+ path: "/data"
+ read_only: false
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.15.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.15.yaml
index e91dcda023..7e103cf8c7 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.15.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.15.yaml
@@ -28,13 +28,36 @@ nomad_certificates:
nomad_datacenter: "yul1"
nomad_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
-nomad_node_role: "both"
+nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: true
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
fingerprint.network.disallow_link_local: true
nomad_retry_servers: [ "10.30.51.30", "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647" ]
+nomad_volumes:
+ - name: "prod-volume-data2-1"
+ path: "/data"
+ read_only: false
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.16.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.16.yaml
index d7aac45a66..e1b47cae15 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.16.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.16.yaml
@@ -28,13 +28,32 @@ nomad_certificates:
nomad_datacenter: "yul1"
nomad_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
-nomad_node_role: "both"
+nomad_node_role: "client"
nomad_node_class: "builder"
nomad_options:
driver.raw_exec.enable: 1
docker.cleanup.image: true
docker.privileged.enabled: true
+ docker.volumes.enabled: true
driver.whitelist: "docker,raw_exec,exec"
fingerprint.network.disallow_link_local: true
nomad_retry_servers: [ "10.30.51.30", "10.30.51.32", "10.30.51.33" ]
nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647", "10.30.51.30:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.17.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.17.yaml
new file mode 100644
index 0000000000..6a4e238bdc
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.17.yaml
@@ -0,0 +1,59 @@
+---
+# file: host_vars/10.32.8.17.yaml
+
+hostname: "s57-nomad"
+inventory_ipmi_hostname: "10.30.55.17"
+
+# User management.
+users:
+ - username: localadmin
+ groups: [adm, sudo]
+ password: "$6$FIsbVDQR$5D0wgufOd2FtnmOiRNsGlgg6Loh.0x3dWSj72DSQnqisSyE9DROfgSgA6s0yxDwz4Jd5SRTXiTKuRYuSQ5POI1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+ - username: testuser
+ groups: [adm, sudo]
+ password: "$6$zpBUdQ4q$P2zKclumvCndWujgP/qQ8eMk3YZk7ESAom04Fqp26hJH2jWkMXEX..jqxzMdDLJKiDaDHIaSkQMVjHzd3cRLs1"
+ ssh_key:
+ - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgObJFDIMmPwQhhkjAynvlbwpM5yeSewyaE7vTLaFf4uFz4vmsE2hFf6B2xXHUGLVwoVfk91UeK7LOGrdDpoDDHzvPZXj5NmZI+WiWax5y2pQZNkcSZws0ENCeEc4hPwc4veJ1JmhokF4Bsmu14HyFMaFUhM8897jtJwsh+9fLA/no0iPGaQqEtRUQhkV+P4jCEPoY0qdRZAzVw/rY4EGAMhsJe3EJmyj63OfrrkG3+hvSLFo5pDxHQr3pZd/c6ukI7xMef48PosAvGCm3oxzb/Gu9PZIGuHLczY+tCnzCkY7MO7E+IWgjXrUAfYwSWz8XmFmA9LLe26DT5jkcK8hGQ== pmikus@cisco.com"
+
+# Nomad settings.
+nomad_certificates:
+ - src: "{{ vault_nomad_v3_ca_file }}"
+ dest: "{{ nomad_ca_file }}"
+ - src: "{{ vault_nomad_v3_cert_file }}"
+ dest: "{{ nomad_cert_file }}"
+ - src: "{{ vault_nomad_v3_key_file }}"
+ dest: "{{ nomad_key_file }}"
+nomad_datacenter: "yul1"
+nomad_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+nomad_name: "{{ hostname }}-{{ ansible_architecture }}"
+nomad_node_role: "client"
+nomad_node_class: "builder"
+nomad_options:
+ driver.raw_exec.enable: 1
+ docker.cleanup.image: true
+ docker.privileged.enabled: true
+ docker.volumes.enabled: true
+ driver.whitelist: "docker,raw_exec,exec"
+ fingerprint.network.disallow_link_local: true
+nomad_retry_servers: [ "10.30.51.30", "10.30.51.32", "10.30.51.33" ]
+nomad_servers: [ "10.30.51.32:4647", "10.30.51.33:4647", "10.30.51.30:4647" ]
+
+# Consul settigs.
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+consul_datacenter: "yul1"
+consul_encrypt: "Y4T+5JGx1C3l2NFBBvkTWQ=="
+consul_node_name: "{{ hostname }}"
+consul_node_role: "client"
+consul_retry_servers:
+ - "10.30.51.30"
+ - "10.30.51.32"
+ - "10.30.51.33" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml
index 63b3dde611..6fe0dbc14d 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml
@@ -3,9 +3,21 @@
hostname: "s33-t27-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-23,25-47,49-71,73-95"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-23,25-47,49-71,73-95"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-23,25-47,49-71,73-95"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,24,48,72"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml
index 1b1b76957d..f963d4b888 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml
@@ -3,9 +3,21 @@
hostname: "s34-t27-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml
index f1b2b414c5..6913550686 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml
@@ -3,9 +3,21 @@
hostname: "s35-t28-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-23,25-47,49-71,73-95"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-23,25-47,49-71,73-95"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-23,25-47,49-71,73-95"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,24,48,72"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml
index 66febe13a8..98cffb3392 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml
@@ -3,9 +3,21 @@
hostname: "s36-t28-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml
index ef3d3455f6..f58b2ce07d 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml
@@ -3,9 +3,21 @@
hostname: "s37-t29-sut1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-23,25-47,49-71,73-95"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-23,25-47,49-71,73-95"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-23,25-47,49-71,73-95"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,24,48,72"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml
index 2430f612b8..364ab8b295 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml
@@ -3,9 +3,21 @@
hostname: "s38-t29-tg1"
grub:
+ audit: "0"
+ hpet: "disable"
+ intel_idle.max_cstate: "1"
+ intel_iommu: "on"
+ intel_pstate: "disable"
+ iommu: "pt"
isolcpus: "1-27,29-55,57-83,85-111"
+ mce: "off"
+ nmi_watchdog: "0"
nohz_full: "1-27,29-55,57-83,85-111"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "1"
rcu_nocbs: "1-27,29-55,57-83,85-111"
+ tsc: "reliable"
sysctl:
kernel:
watchdog_cpumask: "0,28,56,84"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml
new file mode 100644
index 0000000000..dc8a060cc0
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml
@@ -0,0 +1,26 @@
+---
+# file: host_vars/10.32.8.24.yaml
+
+hostname: "s60-t210-sut1"
+grub:
+ amd_iommu: "on"
+ audit: "0"
+ hpet: "disable"
+ iommu: "pt"
+ isolcpus: "1-15,17-31,33-47,49-63"
+ nmi_watchdog: "0"
+ nohz_full: "off"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "0"
+ rcu_nocbs: "1-15,17-31,33-47,49-63"
+ tsc: "reliable"
+sysctl:
+ kernel:
+ watchdog_cpumask: "0,16,32,48"
+ vm:
+ nr_hugepages: 8192
+ max_map_count: 20000
+
+inventory_ipmi_hostname: "10.30.55.24"
+cpu_microarchitecture: "epyc"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml
new file mode 100644
index 0000000000..8c99bf3cae
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml
@@ -0,0 +1,26 @@
+---
+# file: host_vars/10.32.8.25.yaml
+
+hostname: "s61-t210-tg1"
+grub:
+ amd_iommu: "on"
+ audit: "0"
+ hpet: "disable"
+ iommu: "pt"
+ isolcpus: "1-15,17-31,33-47,49-63"
+ nmi_watchdog: "0"
+ nohz_full: "off"
+ nosoftlockup: True
+ numa_balancing: "disable"
+ processor.max_cstate: "0"
+ rcu_nocbs: "1-15,17-31,33-47,49-63"
+ tsc: "reliable"
+sysctl:
+ kernel:
+ watchdog_cpumask: "0,16,32,48"
+ vm:
+ nr_hugepages: 8192
+ max_map_count: 20000
+
+inventory_ipmi_hostname: "10.30.55.25"
+cpu_microarchitecture: "epyc"
diff --git a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/hosts b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/hosts
index ac1c46eb65..741da675f1 100644
--- a/resources/tools/testbed-setup/ansible/inventories/lf_inventory/hosts
+++ b/resources/tools/testbed-setup/ansible/inventories/lf_inventory/hosts
@@ -16,6 +16,7 @@ all:
10.32.8.19: #s34-t27-tg1 - cascadelake
10.32.8.21: #s36-t28-tg1 - cascadelake
10.32.8.23: #s38-t29-tg1 - cascadelake
+ 10.32.8.25: #s61-t210-tg1 - epyc
sut:
hosts:
10.30.51.17: #t1-sut1 - haswell
@@ -40,7 +41,8 @@ all:
10.32.8.18: #s33-t27-sut1 - cascadelake
10.32.8.20: #s35-t28-sut1 - cascadelake
10.32.8.22: #s37-t29-sut1 - cascadelake
- 10.30.51.69: #s27-t13-sut1 - thunderx2 9975
+ 10.32.8.24: #s60-t210-sut1 - epyc
+ 10.30.51.69: #s27-t34-sut1 - thunderx2 9975
vpp_device:
hosts:
10.30.51.50: #s1-t11-sut1 - skylake
@@ -59,6 +61,7 @@ all:
10.32.8.14: #s46-nomad - skylake
10.32.8.15: #s47-nomad - skylake
10.32.8.16: #s48-nomad - skylake
+ 10.32.8.17: #s57-nomad - skylake
10.30.51.39: #s53-nomad - thunderx 88xx
10.30.51.40: #s54-nomad - thunderx 88xx
10.30.51.65: #s52-nomad - thunderx 88xx
diff --git a/resources/tools/testbed-setup/ansible/nomad.yaml b/resources/tools/testbed-setup/ansible/nomad.yaml
index b09245cfdb..653215651a 100644
--- a/resources/tools/testbed-setup/ansible/nomad.yaml
+++ b/resources/tools/testbed-setup/ansible/nomad.yaml
@@ -8,7 +8,11 @@
roles:
- role: user_add
tags: user_add
+ - role: baremetal
+ tags: baremetal
- role: docker
tags: docker
- role: nomad
tags: nomad
+ - role: consul
+ tags: consul \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
index e88c39c180..a6e8898f9d 100644
--- a/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
@@ -1,7 +1,7 @@
---
# file: roles/calibration/tasks/main.yaml
-- name: Calibration - Install Distribution - Release - Machine Prerequisites
+- name: Install Distribution - Release - Machine Prerequisites
package:
name: "{{ packages | flatten(levels=1) }}"
state: latest
@@ -9,41 +9,42 @@
tags:
- install-dependencies
-- name: Calibration - Check CPU Power States
+- name: Check CPU Power States
shell: "lscpu"
register: current_lscpu
changed_when: false
- failed_when: |
- 'CPU min MHz' in current_lscpu.stdout and
- 'Intel(R) Xeon(R)' in current_lscpu.stdout
tags:
- check-cpu-frequency
-- name: Calibration - Check Kernel Version of "{{ kernel_version }}"
- shell: "uname -r"
- register: current_kernel_version
- changed_when: false
- failed_when: |
- current_kernel_version.stdout not in kernel_version
+- name: Check CPU Power States
+ assert:
+ that:
+ - "'CPU min MHz' not in current_lscpu.stdout or 'Intel(R) Xeon(R)' not in ansible_processor"
+ fail_msg: "CPU configuration!"
+ success_msg: "CPU configuration match."
tags:
- - check-kernel-version
+ - check-cpu-frequency
-- name: Calibration - Check Kernel Parameters
- shell: "cat /proc/cmdline"
- register: current_kernel_parameters
- changed_when: false
- failed_when: |
- 'isolcpus' not in current_kernel_parameters.stdout or
- 'nohz_full' not in current_kernel_parameters.stdout or
- 'rcu_nocbs' not in current_kernel_parameters.stdout or
- 'processor.max_cstate=1' not in current_kernel_parameters.stdout or
- 'nmi_watchdog=0' not in current_kernel_parameters.stdout or
- 'intel_iommu=on' not in current_kernel_parameters.stdout or
- 'nosoftlockup' not in current_kernel_parameters.stdout
+- name: Check Kernel Parameters
+ assert:
+ that:
+ - item in ansible_cmdline and grub[item] == ansible_cmdline[item]
+ fail_msg: "Kernel parameters!"
+ success_msg: "Kernel parameters match."
+ loop: "{{ grub.keys()|sort }}"
tags:
- - check-cmdline
+ - check-kernel-params
+
+- name: Check Kernel Version
+ assert:
+ that:
+ - ansible_kernel not in kernel_version_by_distro_by_arch
+ fail_msg: "Kernel version!"
+ success_msg: "Kernel version match."
+ tags:
+ - check-kernel-version
-- name: Calibration - Get Spectre Meltdown Checker
+- name: Get Spectre Meltdown Checker
get_url:
url: "https://meltdown.ovh"
dest: "/opt/spectre-meltdown-checker.sh"
@@ -51,7 +52,7 @@
tags:
- check-spectre-meltdown
-- name: Calibration - Run Spectre Meltdown Checker
+- name: Run Spectre Meltdown Checker
shell: "/opt/spectre-meltdown-checker.sh --no-color || true"
async: 60
poll: 0
@@ -60,13 +61,13 @@
tags:
- check-spectre-meltdown
-- name: Calibration - {{ ansible_machine }} Specific
+- name: "{{ ansible_machine }} Specific"
include_tasks: "{{ ansible_machine }}.yaml"
tags:
- check-machine-specific
- check-jitter-tool
-- name: Check sync status
+- name: Check Sync Status
async_status:
jid: "{{ spectre_meltdown_async.ansible_job_id }}"
register: "spectre_meltdown_poll_results"
diff --git a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_containers.yaml b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_containers.yaml
index 1cd64351a8..ad4fb37681 100644
--- a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_containers.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_containers.yaml
@@ -1,29 +1,38 @@
---
# file: roles/cleanup/tasks/kill_containers.yaml
-- name: Kill containers
+- name: Kill Docker Containers
block:
- - name: Kill container - Get running Docker containers
+ - name: Kill container - Get Running Docker Containers
shell: "docker ps -aq"
register: running_containers
changed_when: no
tags: kill-containers
- - name: Kill container - Remove all Docker containers
+ - name: Kill container - Remove All Docker Containers
shell: "docker rm --force {{ item }}"
with_items: "{{ running_containers.stdout_lines }}"
tags: kill-containers
- - name: Kill container - Get running LXC containers
+ rescue:
+ - name: Restart Docker Daemon
+ systemd:
+ name: "docker"
+ state: "restarted"
+
+- name: Kill LXC Containers
+ block:
+ - name: Kill container - Get Running LXC Containers
shell: "lxc-ls"
register: running_containers
changed_when: no
tags: kill-containers
- - name: Kill container - Remove all LXC containers
+ - name: Kill container - Remove All LXC Containers
shell: "lxc-destroy --force -n {{ item }}"
with_items: "{{ running_containers.stdout_lines }}"
tags: kill-containers
+
rescue:
- fail:
- msg: "Kill containers failed!"
+ msg: "Kill LXC containers failed!" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_process.yaml b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_process.yaml
index a593fc7616..30a9f459b5 100644
--- a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_process.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/kill_process.yaml
@@ -27,6 +27,7 @@
shell: "kill -9 {{ item }}"
with_items: "{{ killed_processes.results | select('failed') | map(attribute='item') | list }}"
tags: kill-process
+
rescue:
- fail:
msg: "Kill process {{ process }} failed!"
diff --git a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/sut.yaml b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/sut.yaml
index c24b5e6a7f..53a65dd608 100644
--- a/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/sut.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/cleanup/tasks/sut.yaml
@@ -33,26 +33,38 @@
process: "vpp_echo"
tags: kill-process
+ - name: Find file or dir - Core zip file
+ find:
+ paths: "/tmp/"
+ patterns: "*tar.lzo.lrz.xz*"
+ register: files_to_delete
+ tags: remove-file-dir
+
- name: Remove file or dir - Core zip file
file:
+ path: "{{ item.path }}"
state: absent
- path: "/tmp/*tar.lzo.lrz.xz*"
+ with_items: "{{ files_to_delete.files }}"
+ tags: remove-file-dir
+
+ - name: Find file or dir - Core dump file
+ find:
+ paths: "/tmp/"
+ patterns: "*core*"
+ register: files_to_delete
tags: remove-file-dir
- name: Remove file or dir - Core dump file
file:
+ path: "{{ item.path }}"
state: absent
- path: "/tmp/*core*"
+ with_items: "{{ files_to_delete.files }}"
tags: remove-file-dir
- name: Kill containers - Remove all containers
import_tasks: kill_containers.yaml
tags: kill-containers
- - name: Kubernetes - Reset
- raw: 'kubeadm reset --force'
- tags: kill-kubernetes
-
- name: Remove packages - Remove VPP
import_tasks: remove_package.yaml
vars:
diff --git a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
index 13db641423..5517b20e1f 100644
--- a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
@@ -19,6 +19,7 @@ packages_by_distro:
ubuntu:
- "build-essential"
- "libpcap-dev"
+ - "net-tools"
- "python-all"
- "python-apt"
- "python-cffi"
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/consul/defaults/main.yaml
new file mode 100644
index 0000000000..786554eb58
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/defaults/main.yaml
@@ -0,0 +1,110 @@
+---
+# file: roles/consul/defaults/main.yaml
+
+# Inst - Prerequisites.
+packages: "{{ packages_base + packages_by_distro[ansible_distribution | lower] + packages_by_arch[ansible_machine] }}"
+
+packages_base:
+ - "cgroup-bin"
+ - "curl"
+ - "git"
+ - "libcgroup1"
+ - "unzip"
+ - "htop"
+packages_by_distro:
+ ubuntu:
+ - []
+packages_by_arch:
+ aarch64:
+ - []
+ x86_64:
+ - []
+
+# Inst - Download Consul.
+consul_architecture_map:
+ amd64: "amd64"
+ x86_64: "amd64"
+ armv7l: "arm"
+ aarch64: "arm64"
+ 32-bit: "386"
+ 64-bit: "amd64"
+consul_architecture: "{{ consul_architecture_map[ansible_architecture] }}"
+consul_version: "1.8.6"
+consul_pkg: "consul_{{ consul_version }}_linux_{{ consul_architecture }}.zip"
+consul_zip_url: "https://releases.hashicorp.com/consul/{{ consul_version }}/{{ consul_pkg }}"
+
+# Inst - System paths.
+consul_bin_dir: "/usr/local/bin"
+consul_config_dir: "/etc/consul.d"
+consul_data_dir: "/var/consul"
+consul_inst_dir: "/opt"
+consul_lockfile: "/var/lock/subsys/consul"
+consul_run_dir: "/var/run/consul"
+consul_ssl_dir: "/etc/consul.d/ssl"
+nomad_config_dir: "/etc/nomad.d"
+
+# Conf - Service.
+consul_node_role: "both"
+consul_restart_handler_state: "restarted"
+nomad_restart_handler_state: "restarted"
+systemd_resolved_state: "stopped"
+
+# Conf - User and group.
+consul_group: "consul"
+consul_group_state: "present"
+consul_manage_group: true
+consul_manage_user: true
+consul_user: "consul"
+consul_user_groups: [ docker, nomad, consul, root ]
+consul_user_state: "present"
+
+# Conf - nomad.d/consul.hcl
+consul_nomad_integration: true
+consul_certificates:
+ - src: "{{ vault_consul_v1_ca_file }}"
+ dest: "{{ consul_ca_file }}"
+ - src: "{{ vault_consul_v1_cert_file }}"
+ dest: "{{ consul_cert_file }}"
+ - src: "{{ vault_consul_v1_key_file }}"
+ dest: "{{ consul_key_file }}"
+
+consul_auto_advertise: true
+consul_checks_use_advertise: true
+consul_server_service_name: "nomad"
+consul_client_service_name: "nomad-client"
+consul_server_auto_join: false
+consul_client_auto_join: true
+consul_ACL_token_set: false
+consul_token: "consul_token_default"
+
+# Conf - base.hcl
+consul_bind_addr: "{{ ansible_default_ipv4.address }}"
+consul_client_addr: "0.0.0.0"
+consul_datacenter: "dc1"
+consul_disable_update_check: true
+consul_enable_debug: false
+consul_enable_syslog: true
+consul_log_level: "INFO"
+consul_node_name: "{{ inventory_hostname }}"
+consul_retry_join: true
+consul_bootstrap_expect: 2
+consul_encrypt: ""
+consul_ca_file: "{{ consul_ssl_dir }}/ca.pem"
+consul_cert_file: "{{ consul_ssl_dir }}/consul.pem"
+consul_key_file: "{{ consul_ssl_dir }}/consul-key.pem"
+consul_ui: true
+consul_recursors:
+ - 1.1.1.1
+ - 8.8.8.8
+
+# Conf - ports.hcl
+consul_port_dns: 53
+consul_port_http: 8500
+consul_port_https: 8501
+consul_port_grpc: 8502
+consul_port_serf_lan: 8301
+consul_port_serf_wan: 8302
+consul_port_server: 8300
+
+# Conf - services.json
+consul_services: false \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/handlers/main.yaml b/resources/tools/testbed-setup/ansible/roles/consul/handlers/main.yaml
new file mode 100644
index 0000000000..338baea74e
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/handlers/main.yaml
@@ -0,0 +1,23 @@
+---
+# file roles/consul/handlers/main.yaml
+
+- name: Restart Nomad
+ systemd:
+ daemon_reload: true
+ enabled: true
+ name: "nomad"
+ state: "{{ nomad_restart_handler_state }}"
+
+- name: Restart Consul
+ systemd:
+ daemon_reload: true
+ enabled: true
+ name: "consul"
+ state: "{{ consul_restart_handler_state }}"
+
+- name: Stop Systemd-resolved
+ systemd:
+ daemon_reload: true
+ enabled: false
+ name: "systemd-resolved"
+ state: "{{ systemd_resolved_state }}" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/meta/main.yaml b/resources/tools/testbed-setup/ansible/roles/consul/meta/main.yaml
new file mode 100644
index 0000000000..4ada8efad6
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/meta/main.yaml
@@ -0,0 +1,9 @@
+---
+# file: roles/consul/meta/main.yaml
+
+# desc: Install consul from stable branch and configure service.
+# inst: Consul
+# conf: ?
+# info: 1.0 - added role
+
+dependencies: [ ]
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/consul/tasks/main.yaml
new file mode 100644
index 0000000000..f87590edb7
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/tasks/main.yaml
@@ -0,0 +1,174 @@
+---
+# file: roles/consul/tasks/main.yaml
+
+- name: Inst - Prerequisites
+ package:
+ name: "{{ packages | flatten(levels=1) }}"
+ state: latest
+ update_cache: true
+ tags:
+ - consul-inst-prerequisites
+
+- name: Conf - Add Consul Group
+ group:
+ name: "{{ consul_group }}"
+ state: "{{ consul_group_state }}"
+ when:
+ - consul_manage_group | bool
+ tags:
+ - consul-conf-user
+
+- name: Conf - Add Consul user
+ user:
+ name: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ groups: "{{ consul_user_groups }}"
+ state: "{{ consul_user_state }}"
+ system: true
+ when:
+ - consul_manage_user | bool
+ tags:
+ - consul-conf-user
+
+- name: Inst - Clean Consul
+ file:
+ path: "{{ consul_inst_dir }}/consul"
+ state: "absent"
+ tags:
+ - consul-inst-package
+
+- name: Inst - Download Consul
+ get_url:
+ url: "{{ consul_zip_url }}"
+ dest: "{{ consul_inst_dir }}/{{ consul_pkg }}"
+ tags:
+ - consul-inst-package
+
+- name: Inst - Unarchive Consul
+ unarchive:
+ src: "{{ consul_inst_dir }}/{{ consul_pkg }}"
+ dest: "{{ consul_inst_dir }}/"
+ creates: "{{ consul_inst_dir }}/consul"
+ remote_src: true
+ tags:
+ - consul-inst-package
+
+- name: Inst - Consul
+ copy:
+ src: "{{ consul_inst_dir }}/consul"
+ dest: "{{ consul_bin_dir }}"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ force: true
+ mode: 0755
+ remote_src: true
+ tags:
+ - consul-inst-package
+
+- name: Conf - Create Directories "{{ consul_data_dir }}"
+ file:
+ dest: "{{ consul_data_dir }}"
+ state: directory
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ tags:
+ - consul-conf
+
+- name: Conf - Create Directories "{{ consul_ssl_dir }}"
+ file:
+ dest: "{{ consul_ssl_dir }}"
+ state: directory
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ tags:
+ - consul-conf
+
+- name: Conf - Create Config Directory
+ file:
+ dest: "{{ consul_config_dir }}"
+ state: directory
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0755
+ tags:
+ - consul-conf
+
+- name: Conf - Nomad integration Consul Configuration
+ template:
+ src: consul.hcl.j2
+ dest: "{{ nomad_config_dir }}/consul.hcl"
+ owner: "nomad"
+ group: "nomad"
+ mode: 0644
+ when:
+ - consul_nomad_integration | bool
+ tags:
+ - consul-conf
+
+- name: Conf - Base Configuration
+ template:
+ src: base.hcl.j2
+ dest: "{{ consul_config_dir }}/base.hcl"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0644
+ tags:
+ - consul-conf
+
+- name: Conf - Ports Configuration
+ template:
+ src: ports.hcl.j2
+ dest: "{{ consul_config_dir }}/ports.hcl"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0644
+ tags:
+ - consul-conf
+
+- name: Conf - Telemetry Configuration
+ template:
+ src: telemetry.hcl.j2
+ dest: "{{ consul_config_dir }}/telemetry.hcl"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0644
+ tags:
+ - consul-conf
+
+- name: Conf - Services Configuration
+ template:
+ src: services.json.j2
+ dest: "{{ consul_config_dir }}/services.json"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0644
+ when:
+ - consul_services
+ tags:
+ - consul-conf
+
+- name: Conf - Copy Certificates And Keys
+ copy:
+ content: "{{ item.src }}"
+ dest: "{{ item.dest }}"
+ owner: "{{ consul_user }}"
+ group: "{{ consul_group }}"
+ mode: 0600
+ no_log: true
+ loop: "{{ consul_certificates | flatten(levels=1) }}"
+ tags:
+ - consul-conf
+
+- name: Conf - System.d Script
+ template:
+ src: "consul_systemd.service.j2"
+ dest: "/lib/systemd/system/consul.service"
+ owner: "root"
+ group: "root"
+ mode: 0644
+# notify:
+# - "Restart Consul"
+# - "Stop Systemd-resolved"
+# - "Restart Nomad"
+ tags:
+ - consul-conf
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/base.hcl.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/base.hcl.j2
new file mode 100644
index 0000000000..536c48d847
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/base.hcl.j2
@@ -0,0 +1,43 @@
+node_name = "{{ consul_node_name }}"
+datacenter = "{{ consul_datacenter }}"
+
+bind_addr = "{{ consul_bind_addr }}"
+client_addr = "{{ consul_client_addr }}"
+data_dir = "{{ consul_data_dir }}"
+
+enable_syslog = {{ consul_enable_syslog | bool | lower }}
+enable_debug = {{ consul_enable_debug | bool | lower }}
+disable_update_check = {{ consul_disable_update_check | bool | lower }}
+log_level = "{{ consul_log_level }}"
+
+server = {{ consul_node_server | bool | lower }}
+encrypt = "{{ consul_encrypt }}"
+{% if consul_node_server | bool == True %}
+bootstrap_expect = {{ consul_bootstrap_expect }}
+verify_incoming = true
+verify_outgoing = true
+verify_server_hostname = true
+ca_file = "{{ consul_ca_file }}"
+cert_file = "{{ consul_cert_file }}"
+key_file = "{{ consul_key_file }}"
+auto_encrypt {
+ allow_tls = true
+}
+{% else %}
+verify_incoming = false
+verify_outgoing = false
+verify_server_hostname = false
+ca_file = "{{ consul_ca_file }}"
+auto_encrypt {
+ tls = false
+}
+{% endif %}
+{% if consul_retry_join | bool -%}
+retry_join = [ {% for ip_port in consul_retry_servers -%} "{{ ip_port }}"{% if not loop.last %}, {% endif %}{%- endfor -%} ]
+{%- endif %}
+
+ui = {{ consul_ui | bool | lower }}
+
+{% if consul_recursors -%}
+recursors = [ {% for server in consul_recursors -%} "{{ server }}"{% if not loop.last %}, {% endif %}{%- endfor -%} ]
+{%- endif %} \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/consul.hcl.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/consul.hcl.j2
new file mode 100644
index 0000000000..c78e5e1ce5
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/consul.hcl.j2
@@ -0,0 +1,12 @@
+consul {
+ auto_advertise = {{ consul_auto_advertise | bool | lower }}
+ checks_use_advertise = {{ consul_checks_use_advertise | bool | lower }}
+ client_auto_join = {{ consul_client_auto_join | bool | lower }}
+ client_service_name = "{{ consul_client_service_name }}"
+ server_service_name = "{{ consul_server_service_name }}"
+ server_auto_join = {{ consul_server_auto_join | bool | lower }}
+{% if consul_ACL_token_set == True %}
+ token = "{{ consul_token }}"
+{% endif %}
+
+} \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/consul_systemd.service.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/consul_systemd.service.j2
new file mode 100644
index 0000000000..8e1ef1310d
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/consul_systemd.service.j2
@@ -0,0 +1,21 @@
+[Unit]
+Description=Consul Service
+Documentation=https://www.nomadproject.io/docs/
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+# TODO: Decrease privilege
+ExecReload=/bin/kill -SIGHUP $MAINPID
+ExecStart={{ consul_bin_dir }}/consul agent -config-dir {{ consul_config_dir }}
+KillSignal=SIGTERM
+LimitNOFILE=infinity
+LimitNPROC=infinity
+Restart=on-failure
+RestartSec=1
+User=root
+Group=root
+Environment="GOMAXPROCS=2"
+
+[Install]
+WantedBy=multi-user.target
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/ports.hcl.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/ports.hcl.j2
new file mode 100644
index 0000000000..a658060ce8
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/ports.hcl.j2
@@ -0,0 +1,9 @@
+ports {
+ dns = {{ consul_port_dns }}
+ http = {{ consul_port_http }}
+ https = {{ consul_port_https }}
+ grpc = {{ consul_port_grpc }}
+ serf_lan = {{ consul_port_serf_lan }}
+ serf_wan = {{ consul_port_serf_wan }}
+ server = {{ consul_port_server }}
+} \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/services.json.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/services.json.j2
new file mode 100644
index 0000000000..3245ba92a4
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/services.json.j2
@@ -0,0 +1,13 @@
+{
+ "services": [
+{% for item in consul_services %}
+ {
+ "name": "{{ item.name }}",
+ "port": {{ item.port }}
+ }
+{%- if not loop.last %},
+{% endif %}
+{% endfor %}
+
+ ]
+} \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/templates/telemetry.hcl.j2 b/resources/tools/testbed-setup/ansible/roles/consul/templates/telemetry.hcl.j2
new file mode 100644
index 0000000000..ec7fabc9da
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/templates/telemetry.hcl.j2
@@ -0,0 +1,3 @@
+telemetry {
+ prometheus_retention_time = "24h"
+} \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/consul/vars/main.yaml b/resources/tools/testbed-setup/ansible/roles/consul/vars/main.yaml
new file mode 100644
index 0000000000..b46333a7a7
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/consul/vars/main.yaml
@@ -0,0 +1,5 @@
+---
+# file: roles/consul/vars/main.yaml
+
+consul_node_client: "{{ (consul_node_role == 'client') or (consul_node_role == 'both') }}"
+consul_node_server: "{{ (consul_node_role == 'server') or (consul_node_role == 'both') }}"
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/Dockerfile b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/Dockerfile
new file mode 100644
index 0000000000..2b2e1eae55
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/Dockerfile
@@ -0,0 +1,61 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM ubuntu:18.04
+LABEL Description="CSIT vpp-device ubuntu 18.04 shim image"
+LABEL Version="master"
+
+# Setup the environment
+ENV DEBIAN_FRONTEND=noninteractive
+ENV NOTVISIBLE "in users profile"
+RUN echo "export VISIBLE=now" >> /etc/profile
+
+ADD files/wrapdocker /usr/local/bin/wrapdocker
+RUN chmod +x /usr/local/bin/wrapdocker
+
+# Install packages and Docker
+RUN apt-get -q update \
+ && apt-get install -y -qq \
+ bash \
+ curl \
+ iproute2 \
+ locales \
+ ssh \
+ sudo \
+ tzdata \
+ uuid-runtime \
+ && curl -fsSL https://get.docker.com | sh \
+ && rm -rf /var/lib/apt/lists/*
+
+# Configure locales
+RUN locale-gen en_US
+
+RUN mkdir /var/run/sshd
+RUN echo 'root:Csit1234' | chpasswd
+RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
+
+# SSH login fix. Otherwise user is kicked off after login
+RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
+
+# Need volume for sidecar docker launches
+VOLUME /var/lib/docker
+
+# SSH to listen on port 6022 in shim
+RUN echo 'Port 6022' >>/etc/ssh/sshd_config
+RUN echo 'Port 6023' >>/etc/ssh/sshd_config
+ADD files/badkeypub /root/.ssh/authorized_keys
+ADD files/sshconfig /root/.ssh/config
+
+# Start sshd by default
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/badkeypub b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/badkeypub
new file mode 100644
index 0000000000..4530b66b05
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/badkeypub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyUNd/iRk5Ajw4ZBB0gXyjzecEzQHh/MctgvHGJjasqJDkwYyZBrunUorOZ3n82W8VGdd5+eNINCWOM/ERjuaHjnutfade+ocPgZRdk+kEgTvetDVNWIgBd0PMVcnp57jJfx7CZVqTNgGeVQ8OJ2RbJGeOb/EKApQI74IPkAfc0PSieSw5gC0eqEOHb39Awgp0ycrzsUHF/OEicfCmo+6vvrMGenDe7frKUoTKYMWs7l3DOyFC8NaOxhGD3J1Ne5u3A/r4w6mN1HVI0rFwIcoms+t0B4lb2ODWKZiZikQdn8/eqwsmbSEZZsWN3FkshgjPS83+dNqVwB6pPY5Yqte7 ejk@bhima.local \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/sshconfig b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/sshconfig
new file mode 100644
index 0000000000..e7bd90757e
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/sshconfig
@@ -0,0 +1,3 @@
+Host 172.17.0.*
+ StrictHostKeyChecking no
+ UserKnownHostsFile=/dev/null \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/wrapdocker b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/wrapdocker
new file mode 100644
index 0000000000..d13f8b7c5e
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/files/files/wrapdocker
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+# Ensure that all nodes in /dev/mapper correspond to mapped devices currently loaded by the device-mapper kernel driver
+dmsetup mknodes
+
+# First, make sure that cgroups are mounted correctly.
+CGROUP=/sys/fs/cgroup
+: {LOG:=stdio}
+
+[ -d $CGROUP ] ||
+ mkdir $CGROUP
+
+mountpoint -q $CGROUP ||
+ mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup $CGROUP || {
+ echo "Could not make a tmpfs mount. Did you use --privileged?"
+ exit 1
+ }
+
+if [ -d /sys/kernel/security ] && ! mountpoint -q /sys/kernel/security
+then
+ mount -t securityfs none /sys/kernel/security || {
+ echo "Could not mount /sys/kernel/security."
+ echo "AppArmor detection and --privileged mode might break."
+ }
+fi
+
+# Mount the cgroup hierarchies exactly as they are in the parent system.
+for SUBSYS in $(cut -d: -f2 /proc/1/cgroup)
+do
+ [ -d $CGROUP/$SUBSYS ] || mkdir $CGROUP/$SUBSYS
+ mountpoint -q $CGROUP/$SUBSYS ||
+ mount -n -t cgroup -o $SUBSYS cgroup $CGROUP/$SUBSYS
+
+ # The two following sections address a bug which manifests itself
+ # by a cryptic "lxc-start: no ns_cgroup option specified" when
+ # trying to start containers withina container.
+ # The bug seems to appear when the cgroup hierarchies are not
+ # mounted on the exact same directories in the host, and in the
+ # container.
+
+ # Named, control-less cgroups are mounted with "-o name=foo"
+ # (and appear as such under /proc/<pid>/cgroup) but are usually
+ # mounted on a directory named "foo" (without the "name=" prefix).
+ # Systemd and OpenRC (and possibly others) both create such a
+ # cgroup. To avoid the aforementioned bug, we symlink "foo" to
+ # "name=foo". This shouldn't have any adverse effect.
+ echo $SUBSYS | grep -q ^name= && {
+ NAME=$(echo $SUBSYS | sed s/^name=//)
+ ln -s $SUBSYS $CGROUP/$NAME
+ }
+
+ # Likewise, on at least one system, it has been reported that
+ # systemd would mount the CPU and CPU accounting controllers
+ # (respectively "cpu" and "cpuacct") with "-o cpuacct,cpu"
+ # but on a directory called "cpu,cpuacct" (note the inversion
+ # in the order of the groups). This tries to work around it.
+ [ $SUBSYS = cpuacct,cpu ] && ln -s $SUBSYS $CGROUP/cpu,cpuacct
+done
+
+# Note: as I write those lines, the LXC userland tools cannot setup
+# a "sub-container" properly if the "devices" cgroup is not in its
+# own hierarchy. Let's detect this and issue a warning.
+grep -q :devices: /proc/1/cgroup ||
+ echo "WARNING: the 'devices' cgroup should be in its own hierarchy."
+grep -qw devices /proc/1/cgroup ||
+ echo "WARNING: it looks like the 'devices' cgroup is not mounted."
+
+# Now, close extraneous file descriptors.
+pushd /proc/self/fd >/dev/null
+for FD in *
+do
+ case "$FD" in
+ # Keep stdin/stdout/stderr
+ [012])
+ ;;
+ # Nuke everything else
+ *)
+ eval exec "$FD>&-"
+ ;;
+ esac
+done
+popd >/dev/null
+
+
+# If a pidfile is still around (for example after a container restart),
+# delete it so that docker can start.
+rm -rf /var/run/docker.pid
+
+# If we were given a PORT environment variable, start as a simple daemon;
+# otherwise, spawn a shell as well
+if [ "$PORT" ]
+then
+ exec dockerd -H 0.0.0.0:$PORT -H unix:///var/run/docker.sock \
+ $DOCKER_DAEMON_ARGS
+else
+ if [ "$LOG" == "file" ]
+ then
+ dockerd $DOCKER_DAEMON_ARGS &>/var/log/docker.log &
+ else
+ dockerd $DOCKER_DAEMON_ARGS &
+ fi
+ (( timeout = 60 + SECONDS ))
+ until docker info >/dev/null 2>&1
+ do
+ if (( SECONDS >= timeout )); then
+ echo 'Timed out trying to connect to internal docker host.' >&2
+ break
+ fi
+ sleep 1
+ done
+ [[ $1 ]] && exec "$@"
+ exec bash --login
+fi \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_shim_image/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/tasks/main.yaml
new file mode 100644
index 0000000000..bdba4f6563
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_shim_image/tasks/main.yaml
@@ -0,0 +1,32 @@
+---
+# file: roles/csit_shim_image/tasks/main.yaml
+
+- name: Create a directory if it does not exist
+ file:
+ path: "{{ item }}"
+ state: "directory"
+ mode: 0755
+ with_items:
+ - "/opt/csit-shim/"
+ - "/opt/csit-shim/files"
+ tags: csit-shim-image
+
+- name: Copy Build Items
+ copy:
+ src: "{{ item }}"
+ dest: "/opt/csit-shim/{{ item }}"
+ owner: "root"
+ group: "root"
+ mode: 0655
+ with_items:
+ - "Dockerfile"
+ - "files/badkeypub"
+ - "files/sshconfig"
+ - "files/wrapdocker"
+ tags: csit-shim-image
+
+- name: Build CSIT shim Docker Image
+ shell: "docker build -t csit_shim-ubuntu1804:local ."
+ args:
+ chdir: "/opt/csit-shim"
+ tags: csit-shim-image \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile
new file mode 100644
index 0000000000..6dddad6ebb
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile
@@ -0,0 +1,173 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM ubuntu:18.04
+LABEL Description="CSIT vpp-device ubuntu 18.04 SUT image"
+LABEL Version="master"
+
+# Setup the environment
+ENV DEBIAN_FRONTEND=noninteractive
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+ENV NOTVISIBLE "in users profile"
+ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python
+
+# Install packages and Docker
+RUN apt-get -q update \
+ && apt-get install -y -qq \
+ # general tools
+ apt-transport-https \
+ bridge-utils \
+ cloud-init \
+ curl \
+ gdb \
+ locales \
+ net-tools \
+ openssh-server \
+ pciutils \
+ rsyslog \
+ software-properties-common \
+ ssh \
+ sudo \
+ supervisor \
+ tar \
+ vim \
+ wget \
+ # csit requirements
+ cmake \
+ dkms \
+ gfortran \
+ libblas-dev \
+ libffi-dev \
+ liblapack-dev \
+ libpcap-dev \
+ libssl-dev \
+ python-all \
+ python-apt \
+ python-cffi \
+ python-cffi-backend \
+ python-dev \
+ python-enum34 \
+ python-pip \
+ python-setuptools \
+ python-virtualenv \
+ python3-all \
+ python3-apt \
+ python3-cffi \
+ python3-cffi-backend \
+ python3-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-virtualenv \
+ qemu-system \
+ socat \
+ strongswan \
+ unzip \
+ tcpdump \
+ zlib1g-dev \
+ # vpp requirements
+ ca-certificates \
+ libapr1 \
+ libmbedcrypto1 \
+ libmbedtls10 \
+ libmbedx509-0 \
+ libnuma1 \
+ sshpass \
+ && curl -L https://packagecloud.io/fdio/master/gpgkey | sudo apt-key add - \
+ && curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash \
+ # temp hack due to build.sh
+ && apt-get install -y -qq vpp-ext-deps \
+ && curl -fsSL https://get.docker.com | sh \
+ && rm -rf /var/lib/apt/lists/*
+
+# Configure locales
+RUN locale-gen en_US.UTF-8 \
+ && dpkg-reconfigure locales
+
+# Fix permissions
+RUN chown root:syslog /var/log \
+ && chmod 755 /etc/default
+
+# Create directory structure
+RUN mkdir -p /tmp/dumps \
+ && mkdir -p /var/cache/vpp/python \
+ && mkdir -p /var/run/sshd
+
+# CSIT PIP pre-cache
+RUN pip3 install \
+ ecdsa==0.13.3 \
+ paramiko==2.6.0 \
+ pycrypto==2.6.1 \
+ pypcap==1.2.3 \
+ PyYAML==5.1.1 \
+ requests==2.22.0 \
+ robotframework==3.1.2 \
+ scapy==2.4.3 \
+ scp==0.13.2 \
+ ansible==2.7.8 \
+ dill==0.2.8.2 \
+ numpy==1.17.3 \
+ hdrhistogram==0.6.1 \
+ plotly==4.1.1 \
+ PTable==0.9.2 \
+ Sphinx==2.2.1 \
+ sphinx-rtd-theme==0.4.0 \
+ sphinxcontrib-programoutput==0.15 \
+ sphinxcontrib-robotdoc==0.11.0 \
+ alabaster==0.7.12 \
+ Babel==2.7.0 \
+ bcrypt==3.1.7 \
+ certifi==2019.9.11 \
+ cffi==1.13.2 \
+ chardet==3.0.4 \
+ cryptography==2.8 \
+ docutils==0.15.2 \
+ future==0.18.2 \
+ idna==2.8 \
+ imagesize==1.1.0 \
+ Jinja2==2.10.3 \
+ MarkupSafe==1.1.1 \
+ packaging==19.2 \
+ pbr==5.4.3 \
+ pycparser==2.19 \
+ Pygments==2.4.2 \
+ PyNaCl==1.3.0 \
+ pyparsing==2.4.4 \
+ python-dateutil==2.8.1 \
+ pytz==2019.3 \
+ retrying==1.3.3 \
+ six==1.13.0 \
+ snowballstemmer==2.0.0 \
+ sphinxcontrib-applehelp==1.0.1 \
+ sphinxcontrib-devhelp==1.0.1 \
+ sphinxcontrib-htmlhelp==1.0.2 \
+ sphinxcontrib-jsmath==1.0.1 \
+ sphinxcontrib-qthelp==1.0.2 \
+ sphinxcontrib-serializinghtml==1.1.3 \
+ urllib3==1.25.6
+
+# ARM workaround
+RUN pip3 install \
+ pandas==0.25.3 \
+ scipy==1.1.0
+
+# SSH settings
+RUN echo 'root:Csit1234' | chpasswd \
+ && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
+ && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \
+ && echo "export VISIBLE=now" >> /etc/profile
+
+EXPOSE 2222
+
+COPY supervisord.conf /etc/supervisor/supervisord.conf
+
+CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /usr/sbin/sshd -D -p 2222"] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf
new file mode 100644
index 0000000000..22a36be5c6
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf
@@ -0,0 +1,24 @@
+[unix_http_server]
+file = /tmp/supervisor.sock
+chmod = 0777
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl = unix:///tmp/supervisor.sock
+
+[supervisord]
+pidfile = /tmp/supervisord.pid
+identifier = supervisor
+directory = /tmp
+logfile = /tmp/supervisord.log
+loglevel = debug
+nodaemon = false
+
+[program:vpp]
+command = /usr/bin/vpp -c /etc/vpp/startup.conf
+autostart = false
+autorestart = true
+redirect_stderr = true
+priority = 1 \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml
new file mode 100644
index 0000000000..7b41be8a64
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml
@@ -0,0 +1,27 @@
+---
+# file: roles/csit_sut_image/tasks/main.yaml
+
+- name: Create a directory if it does not exist
+ file:
+ path: "/opt/csit-sut/"
+ state: "directory"
+ mode: 0755
+ tags: csit-sut-image
+
+- name: Copy Build Items
+ copy:
+ src: "{{ item }}"
+ dest: "/opt/csit-sut/"
+ owner: "root"
+ group: "root"
+ mode: 0755
+ with_items:
+ - Dockerfile
+ - supervisord.conf
+ tags: csit-sut-image
+
+- name: Build CSIT SUT Docker Image
+ shell: "docker build -t csit_sut-ubuntu1804:local ."
+ args:
+ chdir: "/opt/csit-sut"
+ tags: csit-sut-image \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/docker/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/docker/defaults/main.yaml
index 6c445aa42a..9b182de4c4 100644
--- a/resources/tools/testbed-setup/ansible/roles/docker/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/docker/defaults/main.yaml
@@ -4,7 +4,7 @@
# Version options.
docker_edition: "ce"
docker_package: "docker-{{ docker_edition }}"
-docker_package_state: present
+docker_package_state: latest
# Service options.
docker_service_state: started
@@ -13,10 +13,17 @@ docker_restart_handler_state: restarted
# Used only for Debian/Ubuntu.
docker_apt_release_channel: "stable"
-docker_apt_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
-docker_apt_key_state: present
docker_apt_repository: "deb https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_repository_state: present
+docker_apt_ignore_key_error: true
+docker_apt_gpg_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
+docker_apt_gpg_key_state: present
+
+# Used only for RedHat/CentOS/Fedora.
+docker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == "Fedora") | ternary("fedora","centos") }}/docker-{{ docker_edition }}.repo
+docker_yum_repo_enable_edge: '0'
+docker_yum_repo_enable_test: '0'
+docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg
# A list of users who will be added to the docker group.
docker_users:
@@ -28,4 +35,4 @@ docker_daemon_environment_http:
- "NO_PROXY={{ proxy_env.no_proxy }}"
docker_daemon_environment_https:
- "HTTPS_PROXY={{ proxy_env.https_proxy }}"
- - "NO_PROXY={{ proxy_env.no_proxy }}"
+ - "NO_PROXY={{ proxy_env.no_proxy }}" \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/docker/meta/main.yaml b/resources/tools/testbed-setup/ansible/roles/docker/meta/main.yaml
index 0dc7d19507..ab3d197791 100644
--- a/resources/tools/testbed-setup/ansible/roles/docker/meta/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/docker/meta/main.yaml
@@ -1,6 +1,4 @@
---
# file: roles/docker/meta/main.yaml
-dependencies: []
-
-
+dependencies: [] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/docker/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/docker/tasks/main.yaml
index f0cb0d19cf..8158af51b4 100644
--- a/resources/tools/testbed-setup/ansible/roles/docker/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/docker/tasks/main.yaml
@@ -7,7 +7,9 @@
- name: Inst - Docker
package:
- name: "{{ docker_package }}"
+ name:
+ - "{{ docker_package }}"
+ - "{{ docker_package }}-cli"
state: "{{ docker_package_state }}"
tags:
- docker-inst-package
diff --git a/resources/tools/testbed-setup/ansible/roles/docker/tasks/ubuntu_bionic.yaml b/resources/tools/testbed-setup/ansible/roles/docker/tasks/ubuntu_bionic.yaml
index a38a0af110..2e82c552be 100644
--- a/resources/tools/testbed-setup/ansible/roles/docker/tasks/ubuntu_bionic.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/docker/tasks/ubuntu_bionic.yaml
@@ -15,8 +15,8 @@
- name: Conf - Add APT Key
apt_key:
- url: "{{ docker_apt_key }}"
- state: "{{ docker_apt_key_state }}"
+ url: "{{ docker_apt_gpg_key }}"
+ state: "{{ docker_apt_gpg_key_state }}"
tags: docker-conf-apt
- name: Conf - Install APT Repository
diff --git a/resources/tools/testbed-setup/ansible/roles/nomad/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/nomad/defaults/main.yaml
index f88e882fce..864890c11e 100644
--- a/resources/tools/testbed-setup/ansible/roles/nomad/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/nomad/defaults/main.yaml
@@ -84,6 +84,7 @@ nomad_node_class: ""
nomad_no_host_uuid: true
nomad_options: {}
nomad_servers: []
+nomad_volumes: []
# Conf - server.hcl
nomad_bootstrap_expect: 2
diff --git a/resources/tools/testbed-setup/ansible/roles/nomad/templates/client.hcl.j2 b/resources/tools/testbed-setup/ansible/roles/nomad/templates/client.hcl.j2
index f15616144f..f245697a22 100644
--- a/resources/tools/testbed-setup/ansible/roles/nomad/templates/client.hcl.j2
+++ b/resources/tools/testbed-setup/ansible/roles/nomad/templates/client.hcl.j2
@@ -19,4 +19,13 @@ client {
}
{% endif %}
+ {% if nomad_volumes -%}
+ {% for volume in nomad_volumes -%}
+ host_volume "{{ volume.name }}" {
+ path = "{{ volume.path }}"
+ read_only = {{ volume.read_only | bool | lower }}
+ }
+ {% endfor -%}
+ {% endif %}
+
}
diff --git a/resources/tools/testbed-setup/ansible/roles/nomad/templates/nomad_systemd.service.j2 b/resources/tools/testbed-setup/ansible/roles/nomad/templates/nomad_systemd.service.j2
index efe2e30bd6..2a87c65063 100644
--- a/resources/tools/testbed-setup/ansible/roles/nomad/templates/nomad_systemd.service.j2
+++ b/resources/tools/testbed-setup/ansible/roles/nomad/templates/nomad_systemd.service.j2
@@ -6,7 +6,7 @@ After=network-online.target
[Service]
# TODO: Decrease privilege
-ExecReload=/bin/kill -SIGKILL $MAINPID
+ExecReload=/bin/kill -SIGHUP $MAINPID
ExecStart={{ nomad_bin_dir }}/nomad agent -config={{ nomad_config_dir }}
KillSignal=SIGTERM
LimitNOFILE=infinity
diff --git a/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
index edec57aba0..612bc5a946 100644
--- a/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
@@ -14,10 +14,4 @@ packages_by_arch:
aarch64:
- []
x86_64:
- - []
-
-grub_cmdline_linux:
- aarch64:
- - "GRUB_CMDLINE_LINUX=\"isolcpus={{ grub.isolcpus }} nohz_full={{ grub.nohz_full }} rcu_nocbs={{ grub.rcu_nocbs }} intel_iommu=on nmi_watchdog=0 audit=0 nosoftlockup processor.max_cstate=1\""
- x86_64:
- - "GRUB_CMDLINE_LINUX=\"isolcpus={{ grub.isolcpus }} nohz_full={{ grub.nohz_full }} rcu_nocbs={{ grub.rcu_nocbs }} numa_balancing=disable intel_pstate=disable intel_iommu=on iommu=pt nmi_watchdog=0 audit=0 nosoftlockup processor.max_cstate=1 intel_idle.max_cstate=1 hpet=disable tsc=reliable mce=off\""
+ - [] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
index 3a8f35b57f..c437b40f86 100644
--- a/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
@@ -19,7 +19,7 @@
path: "/etc/default/grub"
state: "present"
regexp: "^GRUB_CMDLINE_LINUX="
- line: "{{ grub_cmdline_linux[ansible_machine] | join() }}"
+ line: "GRUB_CMDLINE_LINUX=\"{% for key, value in grub.items() %}{% if value %}{{key}}={{value}} {% else %}{{key}} {% endif %}{% endfor %}\""
notify:
- "Update GRUB"
tags:
diff --git a/resources/tools/testbed-setup/ansible/roles/trex/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/trex/defaults/main.yaml
index 77d0aaa08a..c3caf52d76 100644
--- a/resources/tools/testbed-setup/ansible/roles/trex/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/trex/defaults/main.yaml
@@ -28,6 +28,12 @@ packages_by_arch:
trex_target_dir: "/opt"
trex_url: "https://github.com/cisco-system-traffic-generator/trex-core/archive/"
trex_version:
+ # rls1908
- "2.54"
+ # rls2001
+ # rls2005
- "2.73"
+ # rls2009
- "2.82"
+ # rls2101
+ - "2.86"
diff --git a/resources/tools/testbed-setup/ansible/roles/trex/tasks/deploy_block.yaml b/resources/tools/testbed-setup/ansible/roles/trex/tasks/deploy_block.yaml
new file mode 100644
index 0000000000..1513a0a617
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/trex/tasks/deploy_block.yaml
@@ -0,0 +1,55 @@
+---
+# file: roles/trex/tasks/deploy_block.yaml
+
+- name: "Get Release {{ item }}"
+ get_url:
+ url: "{{ trex_url }}/v{{ item }}.tar.gz"
+ dest: "{{ trex_target_dir }}/trex-core-{{ item }}.tar.gz"
+ validate_certs: False
+ mode: 0644
+ register: trex_downloaded
+
+- name: "Create Directory {{ item }}"
+ file:
+ path: "{{ trex_target_dir }}/trex-core-{{ item }}"
+ state: "directory"
+
+- name: "Extract Release {{ item }}"
+ unarchive:
+ remote_src: true
+ src: "{{ trex_target_dir }}/trex-core-{{ item }}.tar.gz"
+ dest: "{{ trex_target_dir }}/"
+ creates: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
+ register: trex_extracted
+
+- name: Patch Azure
+ patch:
+ src: "files/t-rex.patch"
+ basedir: "{{ trex_target_dir }}/trex-core-{{ item }}"
+ strip: 1
+ when:
+ - azure is defined and item == "2.73"
+
+- name: "Compile Release {{ item }} Part I"
+ command: "./b configure"
+ args:
+ chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
+ when: trex_extracted.changed
+
+- name: "Compile Release {{ item }} Part II"
+ command: "./b build"
+ args:
+ chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
+ when: trex_extracted.changed
+
+- name: "Compile Release {{ item }} Part III"
+ command: "make -j 16"
+ args:
+ chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/scripts/ko/src"
+ when: trex_extracted.changed
+
+- name: "Compile Release {{ item }} Part IV"
+ command: "make install"
+ args:
+ chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/scripts/ko/src"
+ when: trex_extracted.changed \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/trex/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/trex/tasks/main.yaml
index 4e6715152b..019a27f79d 100644
--- a/resources/tools/testbed-setup/ansible/roles/trex/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/trex/tasks/main.yaml
@@ -1,7 +1,7 @@
---
# file: roles/trex/tasks/main.yaml
-- name: T-Rex - Distribution - Release - Machine Prerequisites
+- name: Install Distribution - Release - Machine Prerequisites
package:
name: "{{ packages | flatten(levels=1) }}"
state: latest
@@ -9,79 +9,8 @@
tags:
- install-dependencies
-- name: T-Rex - Get Release Archive
- get_url:
- url: "{{ trex_url }}/v{{ item }}.tar.gz"
- dest: "{{ trex_target_dir }}/trex-core-{{ item }}.tar.gz"
- validate_certs: False
- mode: 0644
+- name: Deploy Multiple T-Rex Versions
+ include_tasks: deploy_block.yaml
loop: "{{ trex_version }}"
- register: trex_downloaded
tags:
- - install-trex
-
-- name: T-Rex - Ensure Directory Exists
- file:
- path: "{{ trex_target_dir }}/trex-core-{{ item }}"
- state: "directory"
- loop: "{{ trex_version }}"
- tags:
- - install-trex
-
-- name: T-Rex - Extract Release Archive
- unarchive:
- remote_src: true
- src: "{{ trex_target_dir }}/trex-core-{{ item }}.tar.gz"
- dest: "{{ trex_target_dir }}/"
- creates: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
- loop: "{{ trex_version }}"
- register: trex_extracted
- tags:
- - install-trex
-
-- name: T-Rex - Azure patch I
- patch:
- src: "files/t-rex.patch"
- basedir: "{{ trex_target_dir }}/trex-core-{{ item }}"
- strip: 1
- loop: "{{ trex_version }}"
- when:
- - azure is defined and "{{ item }}" == "2.73"
- tags:
- - install-trex
-
-- name: T-Rex - Compile Release I
- command: "./b configure"
- args:
- chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
- loop: "{{ trex_version }}"
- when: trex_extracted
- tags:
- - install-trex
-
-- name: T-Rex - Compile Release II
- command: "./b build"
- args:
- chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/linux_dpdk/"
- loop: "{{ trex_version }}"
- when: trex_extracted
- tags:
- - install-trex
-
-- name: T-Rex - Compile Release III
- command: "make -j 16"
- args:
- chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/scripts/ko/src"
- loop: "{{ trex_version }}"
- when: trex_extracted
- tags:
- - install-trex
-
-- name: T-Rex - Compile Release IV
- command: "make install"
- args:
- chdir: "{{ trex_target_dir }}/trex-core-{{ item }}/scripts/ko/src"
- loop: "{{ trex_version }}"
- when: trex_extracted
- tags:
- - install-trex
+ - install-trex \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
index b93853b01f..33b551715f 100644
--- a/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
@@ -82,7 +82,7 @@
path: "/etc/default/grub"
state: "present"
regexp: "^GRUB_CMDLINE_LINUX="
- line: 'GRUB_CMDLINE_LINUX="hugepagesz=2M hugepages={{ grub.nr_hugepages }}"'
+ line: "GRUB_CMDLINE_LINUX=\"{% for key, value in grub.items() %}{% if value %}{{key}}={{value}} {% else %}{{key}} {% endif %}{% endfor %}\""
notify:
- "Update GRUB"
- "Reboot server"
diff --git a/resources/tools/testbed-setup/ansible/sut.yaml b/resources/tools/testbed-setup/ansible/sut.yaml
index 68ac9b8364..302fa1b78d 100644
--- a/resources/tools/testbed-setup/ansible/sut.yaml
+++ b/resources/tools/testbed-setup/ansible/sut.yaml
@@ -24,6 +24,8 @@
tags: kubernetes
- role: kernel_vm
tags: kernel_vm
+ - role: csit_sut_image
+ tags: csit_sut_image
- role: performance_tuning
tags: performance_tuning
- role: cleanup
diff --git a/resources/tools/testbed-setup/ansible/tg.yaml b/resources/tools/testbed-setup/ansible/tg.yaml
index 00ecaefe01..fc18038686 100644
--- a/resources/tools/testbed-setup/ansible/tg.yaml
+++ b/resources/tools/testbed-setup/ansible/tg.yaml
@@ -10,16 +10,18 @@
tags: baremetal
- role: common
tags: common
- - role: tg
- tags: tg
- role: kernel
tags: kernel
- role: mellanox
tags: mellanox
+ - role: tg
+ tags: tg
- role: iperf
tags: iperf
- role: trex
tags: trex
+ - role: ab
+ tags: ab
- role: docker
tags: docker
- role: performance_tuning
@@ -28,5 +30,3 @@
tags: cleanup
- role: calibration
tags: calibration
- - role: ab
- tags: ab
diff --git a/resources/tools/testbed-setup/ansible/tg_aws.yaml b/resources/tools/testbed-setup/ansible/tg_aws.yaml
index 77fde766c9..db0b574d15 100644
--- a/resources/tools/testbed-setup/ansible/tg_aws.yaml
+++ b/resources/tools/testbed-setup/ansible/tg_aws.yaml
@@ -19,6 +19,8 @@
tags: iperf
- role: trex
tags: trex
+ - role: ab
+ tags: ab
- role: docker
tags: docker
- role: cleanup
diff --git a/resources/tools/testbed-setup/ansible/tg_azure.yaml b/resources/tools/testbed-setup/ansible/tg_azure.yaml
index 7ecf6d074c..e6940a7c36 100644
--- a/resources/tools/testbed-setup/ansible/tg_azure.yaml
+++ b/resources/tools/testbed-setup/ansible/tg_azure.yaml
@@ -17,6 +17,8 @@
tags: iperf
- role: trex
tags: trex
+ - role: ab
+ tags: ab
- role: docker
tags: docker
- role: cleanup
diff --git a/resources/tools/testbed-setup/ansible/vault.yml b/resources/tools/testbed-setup/ansible/vault.yml
index 0d583e42d7..2c10624d07 100644
--- a/resources/tools/testbed-setup/ansible/vault.yml
+++ b/resources/tools/testbed-setup/ansible/vault.yml
@@ -1,585 +1,706 @@
$ANSIBLE_VAULT;1.1;AES256
-35366235646131333339643161653631353030396430376631623938643038656362323461393163
-3739343632323734376236396538616434653436303165390a626664636637373439333238373964
-65383037626638343730646337643336636266306538323830363730623438336463353536636132
-6330396333616237330a653461353862323863646266643063646663316661303265383131383630
-39633133346639376331363332623037303131383634343635393463303839313638393566623763
-61376463333837313230633333363066326232326436653038616238653365356133363162623530
-38396463663265376564343935393163366136373665303862316165373532303534303563646333
-63623066386436386364636661393532313061303066643866313761636561303837623065623534
-63636639373764363937653161326662646633643532646536336532376666383934666666396261
-65656233326264653137353661656261353236386531643939633030356236336330343262303565
-61636462393830623730656263636661623936363232616135323534613836303336663336663964
-64323139633266616333346335643334653333626538623030626433333132326532373736366361
-32343266373530666234343361613632656530323364383066653562313363376132326632343031
-66613561333433663062343165343764633939343635343638343834346131313062396665626337
-34623966663832393964396335363137353639613262356663323430616464323435373936396339
-38616233303432643131363466373231363036626432303136613032303962663465656638396335
-61336630346232313733323539643038316161333030626236386230643032646565613030323832
-61393463363739646637623365343063303366373630623133386239636337663537353938666363
-63643765633739393530396266333533306637393265393339336137363035363331663930636532
-37313932343034346539313931633231633861343235656366613566373539363436323335633562
-30366536323838623130306434643439333731663331366137323330366435656533386633633234
-61646331373562366538653863316363633966373832366162633262636130666234386630376538
-35616662323862613938383566373536616134653664653763366161363563396262386264326639
-36303264386239333030616531323965636664336265646432653934643661663663303735326566
-64653638646133666662306234643336643038393766346261653035633630396135373438343265
-39643266373338326564326137376232633063316131383839666662666165303634333262336137
-36363561666230323931343236656261383930326433376562633233626363313662633733626261
-33333038356331386462343164303037346233323065313861623865613030613963663962303064
-62646438346566656334663537663933306238623839353665633835626466396661643338333461
-37356530636463636139663436643961353964313731333334323730663361373530633464323335
-37323465336430393337633532663632353365613264396636623233303935386535643361313162
-61336333626538636466373032636331326435613135373438343838343734663863373766366533
-31663434353764333636363161613732663761373235393334306331333361313763313730306564
-31303135613234373366396466626137396533666365393330636136303361633066333137623336
-38353939643763643163313732613730656635306435633664396536636665316635666166643065
-64626366663539616131303461373139653531666462393862383636656631626666356661396163
-63366232376363326639643936656432313464626539646330383433396161616231316430656365
-30343830333038356134353730383963313934343333316261336263333730656461613763653366
-39363137663264363534336365323666336663323334643163616362303038663637396636373263
-39383165323330323436393439316138393064353931366232643963356134643365346264313831
-66383831653032346538313961353532303435663966646665336232633064353762333133616234
-37393031656462336337353630333135306639393361333566393832303864646664313733353339
-30643966633363653333346465316665663233373165346534623763333931623630613533366238
-64396363613538313362393837316334363731623333313736653465333366623362343838396439
-37333663656563333562613337653363653439376666353338656638613463333336323936393830
-65626237306537666639636533326631633732616164383533383139373534333363623933386366
-64663464643663636433356237656266323534643536613332653834333738373335343431646162
-35616365323366653935666165373565643462326363343931663963363938653063373030306565
-66303665343964393365373361356466326333653534383062613135643632303763326633613763
-64336433356635333133653031316332383830376437376232623762343230356461623566656366
-35616366303036353735663439306461376537653734626130373537616435383132366135396430
-36663234613830633830343762333062666466373564386435613565333630653639343262656534
-36613464353331323731656361373963663832653739343635333637646633313434306130353537
-63333634323039663161373134336165393162633465333137316132646134383439623639323963
-34663033353134313966663265346462366538333966383864663934383565636136363861303235
-31336634646461363939653337616662356437373131333461613730386662393138653239633461
-38333763653065633965313839343662613836393830323538326439393061653534316361636134
-39613735653437613537306364313165636633663963323331383463616263303739336330613265
-39313538386231663731356263343335653461643766663764623036626266383164646165333237
-34303162393639666365326362393532313036636235366165616538623362373638623131393066
-62633931623865343362383464346637323735393363373530323131333730313965363236326364
-63656433663234663066646664363761313734343635613264316266653939303930646135356137
-63626538613239393237643366623732646638643535643161353861653432346535383134633764
-32636562623737313937633338343065333566656638623062636635383966386431353062623632
-36623634643362356435623030373632333736303232626166653833323131383732636631626338
-36373434326433303735316530656166303365343031303563373465623637353165323461646332
-31663832326332313734373333336634323237336437363330356533343361356536343365633762
-66396165343430613765323864663235343437383536613131313664386266613035366337616465
-64666463666564363035613737663933303263373365323464383661616264633662323465613166
-39636132626463303861343764656133353665396534303437613737306665616663323138613037
-38376166623130306632343633363032346364633061363233643863663736343336343539363730
-61646363663839393435383765373632303937396337313637643964663235393165623139623833
-65333165373736323361353339396433656262316137656264366365633762323533313466623866
-36316339333239633566386466636361376533303130663064386166306332333363376531376462
-32656334666432343433653936343466366161653839653962376637396532656331376164613362
-37653361396630653566336231373031336661386364626239376465326461306137656465373666
-39616365386533363464613936613263656431336131626662333563316533633538373339333561
-32346163386665633766656161616634373934333063656163336533386465363937636431653564
-62303064383161313037386130346630666134393834353763306432333934356430613232373835
-38396138626336666438396461356161333132363332343234333036323636373764366238643264
-39343964323736303038613164336564343431663339336533646337373662316264343337363536
-61623365396637623866623465373339316664643263393038333437313862656631653432393462
-37383234363837343931306464326634666433376434323532333136666534333836643338656437
-36383130363033363837366437323565376238626632643038366237656364636431376331623462
-61633039353761346638666466393966643031623061373839373538613832326561303835386239
-65626461343031633237336439623963623034353264633539633231363230636564333634643137
-32373537643035313664333464323039346163376134376433616262643965613537373637323935
-66353031343662626438623930373262356465316630383461656339646638656664383030643532
-66303263356234316334623635383338353031326164633035303162636131336235333831663630
-35613933643538363330633563663338316434326261363734333633303963386564643265343066
-61386266643338303065383130633065303037376362363030376337326238303339653861656233
-33346430353164626463653230613033373631666365396137623065323937616437383235373333
-66653037616134303765653139373465363465346130366536613831613431306131353938306263
-34316661663263353566663861383239396538616439633434323139323136623837663065383834
-61636137393662613035656264386466303331343833353332346430623361366163393636613163
-32366139646263323063323134303365333234363833326339343030656431616462336466313634
-35633264363939353133636164626634366430626131643035303761613630653132323930393139
-33333164333166353736373439626633363361623439323438653936313934663839386639303630
-66653431393331306361373033643535353137626235633861376232316332316430386365346163
-32303830353433323834333037616530343832643136646239373738376235643762366266626362
-30303035643237316430373261313832366366353536363032646330613965363736386130613162
-64386666356339386536313562333762616163653534373431396636373732663331613463306631
-66346439646630333637623531633062626531346533393065636638343337313838313836376131
-37653230313934393236393736653837393465666132633330646432393163353733353536383065
-36396331353933613835316132303032656632633737636464386233376139373263643664613636
-63303433346433333238306333333839306361306236333565393630373866373963326139393762
-63343933383835616333376337366331353534613361306230633564343538333131303366323662
-66313866653463376434623339346466643435313666616666373236633336396434316438613135
-36306335383739663431653235333062616633653635383234393363633937346632636162646233
-33653137336662653762303234303137336130336630663762353938303536383566613639366162
-39653232303135376632316139623664383032643133386534343738373365646165666231646563
-34326132386463626536313238623630646637333362326232633163626237326161643730623165
-37313437633932316137376435363064643834363133326436376139353663313562653935333061
-31336461396530316665353662613939313566326661613432383662656130633866393236303431
-30613866303933646236623834623936333466326437333338653837386435393162663764653732
-37653835366137333464383630313039646335643631393332316536656631613762653932646234
-61653832623737663534653164313764306433643063663564636665343266366439613934613037
-34613032356634646233653437646338373965356561343266653562653533633039326561353862
-62383739366335316536663735393430623738366130353135353038323737636432363935353231
-61623563646637616332626638643761646364366361353363666133333466343535666530643235
-31636237316630316634653432363461616661613935613163313331376463653261313535653730
-64336533633065306231613165396332343664626632653636346533366138343832393435333632
-35323962393163333333633734613364656562393039376131346333623731346636373761623134
-35623565353332383237383264396638306434623261313166363131363834623466663062303834
-64663961333338396438333566373562666534616464623630656133373836393433643165363934
-66653966316439646334616665653362633338313632666534643135393331353238316633613630
-39383961356266363230343634366631623032386237363637653030643738393361633839353163
-62366538653031393136313034333466613930363137663732666534353863643034653531343332
-64616661393030356531626137643538353939626461623633626435656331363963356466356631
-30333335643835343130363762626336646630373238303438326531343539643932326665653862
-34326436623732643735666463623561366333646665323666333663396234346136306635643464
-63343239336433626537353633366362646631323864363236336232303331333462303530363839
-30623038653835666131376639366165653965323435343338663662336237343130666136663066
-31363166373834373132386161306161393766663466383064313633383936653164663937643736
-30663233373139396438363336613361623133373830346333326135303635376362656139633464
-32383239353931663132393537663037616338353533663138373036353638333732356431616432
-35626530303361626432663732333539346461633963333730663038616563356266323061613431
-64383330363866326632316339333034626664356239626537373835633830333562636334336461
-37323830346136346633616433663961643137336439623763633936363430323034616538663134
-31623233346664643439356337326333363230326366636538313535666466306338643166353964
-33626336663035386564663965393065643562373664643661366638626265636236363961613965
-32636366333063613064313433333737373564346636333939393635656134643237623038343932
-65353134333234376634333637333438333737383738383461653436613266636161336231333365
-63653538663566383338656632653261653361633233636666643335616462386339383030366165
-36366338646332326439613834376562643966666434376238396663636630303835303031333438
-61623863643439646365303937356133666461356464323236346436353239633866393032626534
-62303561336536643265313636663639383164366233303966613364356262636266376131323662
-34336234666632363338393866326332306164313032623131623834666137663138353235316137
-38363363646136313335353834656430326531363864353430366433656261393936393364363966
-62666166373266633163636636353632663464616333393630626531306663323134646166656430
-31393436306336653237633538363461373139363131363633626263376161643933373439343333
-35343562616364326162623038616339323266313762326331623036383337326164353261383532
-66643166376330313634393065666638623831393161653561633135626462303566653836303434
-66376235313766616465393866653961393430646634613563303362353632373032656532613333
-34616439363237366332386161326331663237393439336433386466376462393139656634323230
-63323366633136633439636363396234393966333731393661323737616466316535316334613964
-33366433313865666335353663373363646232326333643833383664656333396634316630393539
-38623132613338396566656632623934343965323231363732373563643936636239303634306136
-35323230353837633765323532306239346539613833353936626561653261626462653436666533
-31313065613137613437303564643961646630653038303465316233373831623532613236633763
-38623131316431316563366532326532626538343635623762653536663733363462303162636130
-37363331623764656430633237333661663061343663366364373833313065333137393230363134
-65376234313231333964343365626361346561653233313665633062313837356363636235303762
-64636532383834613064663363323561306339353038323839356133613539666235376635393234
-36383436643533383438373762656338613835343864383431326466666536333137623636633938
-33326565356566396463643238626465376339616262346365646533656630306137663362636234
-33333238666131386531393939363662326138306563613139313964343665373636346461336434
-33393535393336626437613836366664356637623937646337363935666632336131336237316631
-62623365343337663336626631656466303762323162653735313965343936373631373963383538
-34623836383731386164386162303635386630623366316238663034643035623234303238353163
-36393664303431303034353065383163396666333036303437373364393432376330616330306538
-33626530373266613862353538653566316464666337323939393463303463663234653466623036
-31313561366633636532356366376639393138383931323439316139313236326630346565613965
-37633134646661626139666566613261346334656563633735366365313939356164333332356164
-61646637653561613630356438613462643762633732313132323331343931346164633430373335
-31616339353739643636613061383630313532306636356534326138383331326233333631663735
-38303636663439626139346532363536376362316363373963383765316663396134373266613664
-66303737323763653765353630616166656130383739383034663438346663373934613331313832
-37373535376665616237313765363866356439383465656537383761663465653266353264316231
-33623564383138356264396134386264366430363539396431666633613733303031336134313734
-63393633326534636631306535383236313135363962303665646536376364316464626139386462
-32643831323238363966646531613636616339316331666434383838396565626136376364363133
-39393661336539656364653361386366326164663330633130303635363664363038643831643339
-63316131373935343530333961363165393936653735346662363531666533343963383839656631
-31313463353731306563313562623364623363346266396234326264663630653361313666303337
-32366463313466646439613562333066383834666336383763396531633139393132616130336631
-61386532653738653631656435346235303962626162393164633935613532333830363866633563
-37396639393535343934663536346266353233316261366633626437636130626234363163383137
-32323832306266376464303931653731653965303962303533303736346263333732316337306333
-32303132353061396333313433656632373239356532396435333338653261653166316266613538
-31626334333138356338623038346333333564333732646664626232623134376132366634363032
-35363737303339303862336536653463633234656138643865663262386462363636363530376532
-38373363363331353437656666396139343732613730626661633736303264376639663964633036
-37366630343266323037363035353763633161376634636333303565636564646163646430633939
-39353563343464613964313630353434616336373531396438333831623432316430346132333139
-35643932343938663464316365616338343933363362393637376263313366303465626338653234
-34336465376338313039333733356264643761653535363165616261333262613132303534353736
-61313130363634356239653162613566366632373931363537376137393834396331383636343061
-62666136326465643330323631343732386434656362386630366462643433393334616636393538
-38363939336336643465323732316365616662336532356230323932663733343937353631633736
-33616534653235333639656264643266303130386330643332623739653531636332383339623065
-33623064643939383632346163323734343366663139326665336462303162653662336535653264
-36613865306635613530333966663462303736366432386634323136643631616132343233633834
-32656436376165356665386663333161303232326239643666313637373531626163636631386134
-61313134643735613336343736396532663561383561613566346432323332316232393139623434
-64393730616466323336303637353236393363326530623230663764653364373564323338303766
-30376130613766643530633266316238306433366239306164323266363430303834666564323463
-34626364633938396534633737396530613430366166383138303237616531666361363835313230
-33306138323534346265626665313962343766333138366338376637313034363061643133623431
-35626166363439363735653038616362393464656563343034333266363030643432386337633136
-62393934383835643534343932333962323062376561376630343762616461363134386365623331
-30393462313636653161656261303638373163373761636534323536346534383863383063383963
-61633333323565313366623832343764613930346134323263326163363531373631316136633838
-39373633333039313265653065343733383938663262363735333730623531633838643937363135
-62626234373066383831396637326134396562343933353666663531623762653333336231303265
-36643165343839623339643663366666613866346162363835336334386139383632396134366366
-64663566336532653438316133356466343061633239656666306366313232313936306433623461
-65623131376164353635353738623536656335393531326161333937613362353232373135306430
-31623435343330396639393834643535616632353634653236313030653539333035313266303466
-65303761376534343165313137396264326662313433396436633035366564373632373866653263
-66386134316336396135373030343031343135346133313735613939653865366533663666633531
-61623763396530386662393636376462366164666637303334653738383463646563623937633463
-30663363316563623434656665656334663832316238326233633461333161323630346138313065
-35376439383939326365363434373438353136303131323364356162393236653164613661663536
-61326164633661383762323962393164396331356634396639393736393166373432363336626630
-31346433353862313265643135373437636537643337383435343231373532363465373964333331
-33393135646465323763346130623737616631313131643666636465636430393664373363636162
-37653965313839303063656661666532326630393132356635626666376638376331326161393835
-33383731656537336438643463313337316334663834393266643065633335613565346239626337
-31663635666438656431613565363063353964376565623336316162653131633631653739343836
-39336531626434613130353564643061343333333861346131316463333531373234303736326532
-62353735393631393434343763373062343536636665663133333336326131373531306237616466
-63393361643865383965353663623863306131393464636533396263316135323433373362356532
-61333365313538313333343862336236313035306133313565663434326662666163386461656636
-63623936626464646135393430373236313865313761346539393931663262386433633431336334
-38623961613764633134323930303639626237323962376331303662613832333738303831643163
-61333534323663363032373738333135643338303761313966616333353232656535636138396665
-30323335333565303561373939306238306439373538303463343534616164353566393336623935
-32666463653739313165353439613930313566376532323563313835626237316332393134656638
-37623864326638306334386534623035633937356439306634653237393839333065623866653365
-35653964623636626665376237323338353961363535373363323239356237393835656538363436
-62366438653536633562353863613434363830636339323630333938353234613461396638306231
-31326133373235353563353863396266623432353536313831633261333265373935303531653632
-35316432666237656563626138376365383036633736336339356665653864636133336432343737
-37666130396439643834653838353264616162383837363039633433353732393534333163336562
-38353062346430633632356330633035613038313262353761613562623963303236663365363164
-64623637343838643565383938653536656235666162613439663061323134353539383337643239
-66396131343530366131373432656138396132336133666438343633373939343563356136633636
-64306266363531373535313962316635653261366634383735343438353337653232666466633237
-31643935646434356335303833343835646161373138316133633938643564616634396332363535
-30326231316264666264333436623366643337653833393735303166643730663833343366653634
-36343430313239353738316330303065626135356437643463663736363732663634383235623265
-33633865346561623738303066363438343934333337343538326162303264646238626331386165
-38366330393466646632326262343137383662623936653365636334363634323330643536353930
-38646363633666376566623562356161376236396336346566303463643965323935623363383034
-38323335343737303637303233633431613764363538666665313933623231383463636136356439
-63643361366536323637316461383365376232323634326135353936373962353732656334626163
-64346361666666336436636263336133313266353466346535306234353261633332353731646337
-37623063666339383662613663396630643330393234336664306330363033346363303230633635
-38643862616135623165616530313539373131616230626661306139356134303731653934313166
-32326366393066613062316663666537326238626139376166616363616236613564626534393633
-63303264326331393637323936623734353064393437353130626531356464363262666663623138
-66363736646364343938343666303338653930376266333832396438383236313130613765636530
-34663234303339386532633562623838393635373965366263653464353835313436666638323439
-63363630366661303163393830663134643563346633396266653239623337353836336436323462
-30363130386435323264666335313937653230643336613665623963646236356130613539373738
-30336234356564383662326636333034326334393061346133656161383364336365643262663565
-32333561323135663364643836646135356637333639376463336232643936396330383764326535
-39646233643832343561383339306437336566613838333235643935323635383865646236393962
-38616633376263303534363838663435346131306635363962633539313334333561333765613035
-33373536393533666237333237303636643261313762343031646465653361636461623030653034
-35346662343366353664393437393536323263386534323562323361373037653063386661643137
-37376335373730356131663263653265376262373233363635326636653931333332643761356363
-38393731663338396435626137323031316335326332663265653566636664333933656134663836
-31623661616331613135653932646666306165653061643061363237613263323232393837326334
-38646338616166326435323631323733343861373533656635666535666635343137316238303334
-33373439653231666562343135623862393066316331616563643566663061313162323364613562
-33393337653637306264343833653462356237623137303034303438613265313139663433303837
-34666261616532393430623261316537393633623430626130363938376561373933653333373461
-34656138353231396261346234323834323833323866376138396131636532616534623161336362
-30363866396465646266666366333866613431346335663333393434363662643662383566363239
-61313738393539366630666265626531393537383032663339353266303632656438383565656336
-64616366636537326461393632623562653430353362626466376233343263616333306531666163
-37343134336633393638653465613130326431643563313538666131346265313035313036343031
-65666634356363636566613265316164623862303038373536646136643065643432366665626438
-66373434316165636362306261313430376635363134373430333665386635383439363763383762
-34663261323761666637373665306337323639386634393439386131313565326535393234373339
-65636633663362353436306234303938633131373633343264323338626362663331633935643061
-39653661306465346661313164353335326336306534383631343761376438306332613065313538
-36343934353230313564613938383731663261623661643764636231316339373330633533323166
-38646262363863306566323162306536633362313131356132636639303032343464313764343335
-64323363336638383630613331393365353766616630303163636531623639663331393034373664
-39303336333031643332363430383937363432306561396661306232373262343533666435646264
-63613561346465346266356462396565626666353436346363643266656166313862393766373538
-33303964623130666638373937386238396235303332616266336163623538666438313638363136
-31396436636233663961363935313063613463363564323833303235363436323236396561316266
-37646563336464356231633633623564643339613135616561376665393865316664323636633633
-38306434393162616363656337363533373961626231323564366264383138613965383936616665
-31303939333166393331663362356631646234643732383633643061613161383830666432646337
-31363862396465333363663238383165643431356362396561303832376132343838656436663364
-37393731373732616431363839656361623037326436643539306136646261636435363433326538
-33376161306135353032623865383965666535653832373065643638633338393130353361333635
-65323730353962326161353864383763316466666332613736363935633239393164646432643763
-61653134356236363532383061323134643730333263316430613530616433336138353334303336
-30376233313832666461336439643538303132623337636437653036613763323533616230356631
-33313862363630353939303638646431656639393134656464666439323632323937326165366435
-39346561656335353534306434633639366336356635373830316266306164663235383164313835
-66343831303932353962396364616462353030303536396538396639393931363030363065636531
-61306533396264313338303439356164386638653836646633373939653734626266303838326239
-63346539643832373663643464313064623938326132633464623363653138636361653831326339
-39656234303433393939313831663832653564633564633332393265653561383936386133323461
-63363235653835316537396135666136633132373838636438313062353030613164636466363734
-64663530616634633938346534306435663931333061313831313565653137623830663435366532
-31303361626362646431636633313733363661623135306331313138323939636138613733323039
-66613938303963393666323164313632396635643364363639623339353233373536326431303931
-34333035333838336564373833636238623633316631306466366666643265643364626363333662
-31666463633134373534613961656565646465323164343330323438343936636463323561646435
-36316364363662393864373334383039643762366133363562323534643733333263333232393431
-33663732363539313235303364323936663733316234613334363263363434333135623862333737
-33383065343533383335303063303966326431333464303837363464323532623331316339393734
-32656536373332636534636235623039373162613131303333663164373366373735646531393434
-34623765376639343336653530356134633463313535303232653130326631376430323932636266
-66373635353062333736316561613762386138643364363465323130333266316562323732363330
-39356136613937333938656565613765303430613039313835623130333232366465323261626132
-61333138366630623262326337373666326664356535333133373931613730366665396235346538
-30313564376132653339373663333533373838633835666330353335643636316634653438393663
-64653864333938313237646465636233373266316563393861633036646562303030326139613731
-64366439343633333364343362343932343039626563326633303630316633383164623634333338
-36313637393430363937656536663562343562336231636366663135626261306236363834626162
-33356432366365613161636364383237363338393637646430373662356436363739356666343236
-39346235636538353536333364343930616637386231373762353661363830316239623833663734
-36613666393837663033646432363632356534383435333665643666626334346334306236373061
-32396630343933303361623530353361346538346639306465616533623039363634396161376430
-33616633613437353763343433633366633331343839333433666532646630383564613861363435
-62393738393532666633333565353834616463313632343161393239633631636264376334353239
-62366639313132636265613434633339653537343635623037383034393037363931326139376263
-30346665323335613363346262633833393265396462326439356631323936303339633664363564
-38393530386530666630663238366437333463623062336162313833616438383831353366353534
-35393364616438643566393731646261383335636436346438633630306266646464313464393138
-32613137653139376139323263396336353261663636363235353762333536343436306133373864
-66346231636537313763303435343032306535616139356362333536636339303965363663373137
-38303832643264336536396232336562366261643864643462343662336164336439623431313763
-62663039643636366361656239306563306562386637623666373838363365653137323965616434
-33363934333161313036396132386130663866316635623931393366653834613535373835636330
-62636464666561373337316536653539306564363435323038366135626231623634353133663663
-66373562386265306166663539323962393231393830663234663634656635316135396134623461
-33616136353666393938633363313562306261366465626666643936666331393161633631313964
-38363165363465356634303630373435626364306361653638643038363066663935363365326662
-64633661376338306463626130663165636463393035663362636531316665646234653430386435
-35353535343136376635353465363665666363353361333032663462316133633262633264613666
-36323231613532613864626237363033623862326163646462383666386230386464313737636331
-32386564393636613639663165663261323261376364363230323934373463336133376431393039
-31383532616531383637306433303131363431626566343066386538643339313030653839383532
-62643163626637623839373134373566666135633361663932643536663130623363623737303137
-33623532313430663634386264343336363534616536613832313263663037626132343530653732
-66623132636437303266313539653238346238633834363232323937623538653934373830663564
-35323732353734656433353433663164343662623936616637363262653431383938666639636433
-38626366643131393164346261666166643563383839653465396161656333353032353634633963
-30636434386661333639316131643861656264356663353063623163643462373630343535373535
-65623238633863373136386131663861316663376665653466626434636466303930666438383232
-38303234346331363163383637393763643534623932373931326632663661376333636365663662
-34663030623362383163613839343634663762313466383533306239336464626563353731353234
-31633934636335303962343461633565326139613139346463643865613766616435313866323335
-37613530306332633661623231666437383433366333336165633633326165393463313764356365
-61343137326562333039316338353033336331663636366339366236356434393865353838323934
-31666562373238666635656632383738386164393661383133636331333130623734326132626236
-35613731643466366464316531346663323662643961316438666563393036666332366230353466
-32643739643136313139383662353066326335613930386632306337353534613564613836343061
-35613862313730333637386262623530383465323138363032626639666639623932643934363532
-32356661656634316534383863313739613862363737356333386265653730346631313538356461
-66343337313736383733383964393066666539383031353531336234653131613763666138633961
-33383139646639373836336137626662346336383536396237393366303630626337323965373039
-35343466373931626330303031623333316462396534383364663461653136383162346366626265
-31653432393063383734393835643335393263393234393462623561663461363732626331633463
-38303536313738393430633839373765376261643266633865336662303339396163636532636137
-35376236396361376262303834326331336439353865323834366166616334663266306635376563
-37323236643732333434613436656633666462333631616330356234653236383362636461373437
-33393963656433316161333939663933636231353138663464306463323135333834326534393839
-38633332386237373765616534633239303461633833666464623465363835343130343164633938
-61343263333033633166343764316132303834333064373437313762306263363438323061613738
-31646463306136396436306238393831396362396131353264366162326432313633306362373164
-38306464663066386539316436666564356562363238616332306562323965366364633834316333
-65303264643937643432303638313931623631396536663161313332656563653465306365623731
-39306263333265633639343931366231306565316135363162323464336532653631363739663664
-39373261383337613631353436373838396637663635336661306630633530363337336336623037
-30323664303430313832336261396639323866303539616539336530663732333864656235626133
-64636261373036626664306365373663323134343665306233303835313766326366363631316535
-35616235353663646364613165356534396535333063396537643338333063623834623663626639
-38366633396531323931623366666463633531306435396233613033323065613235316235646166
-31366638623039366466363863386665613061663533613138373364363931663764653561363833
-30656234653633663835646136333733333562643263386563663634663862313939383139356163
-36646165393931336230393566656237303363353566356137373436313336316532656332656364
-30386339363066386564343737373834316235313961343962353634393766633031636264363732
-65623833363465636466313564373164353231306139663262326331663030373735643130333235
-65333337653233326166353863346236633062636134303562393939623462316631623536646436
-61373862336334373239616631656434643737346561353463376335663232326134303066656364
-61353666333164613466366466393966323666386234373430363266623134333034353933313633
-63313866393633336661303334653237396632343836623538306665636235316565363739396138
-63653265353765626563306266656263336432383465383232343039303234623331623962356463
-65623336333831323936333262623938636562616634373738373837306264323362396564376333
-32353535396266373939343863636131633134326135333132323066383965313134663031326638
-36356135663363333932376330363465323134636532373061346536353335313662336231633235
-30346261633132343733363631633065333839316238386539356565376335343531623033303961
-32333665633465373637393436666331353166666438366262623339663139333064343233353964
-61313433323532666537333237306237383539316631326364333635663033313061323561343362
-31383436366165613266376335313364373538613631306335646637393030366239623938316164
-61633938653837383837376634633532323130653963633366363035343532356537323230393331
-37396232396363626639353735643735346230633733633162333164663634613665303938383237
-62623432306237343833316636353137646236333131306563653639353633353830663434313035
-63646131363334643461373565333837346533643665626264373935633830663034333061383835
-31383736393234383534326237373538333738623265386333623936343034616139306534303531
-35346135373863653064343331613966333732366361643030636231306462633764333330623135
-37636634356337303463313062393061363836306638663063643465376262393930663034343339
-63383239616537323938386636663536653038323662313831626132343436313331653032613734
-62643364393366356137636261366238343566613139343639393038306530346133386266313833
-61353137636538663939663666666437336437333466663333653633626463666632356361313861
-32306439633934386331666139663062396531316530323332656663383434643131626138346662
-65303133323733653264623838636231633666633236646333303437613361373136613435643930
-32626135386466316537666536303234613364393965383539653561356335653462633162326134
-63613064363834373162346135613464356538613634323937383236336365363165336466393362
-33636466336464623262376166626438353361656465333335306264623961313231613562356264
-30356536306365373061306265653364323934656662313563333035663865376334313333653238
-65353634343565336535663332333632663036353633613331366337333665333434656235653261
-30396330356466386334343931363763313364646135306162633131333230313238646264613865
-65386666333035343336653461376335333033383935633037663462363837323964626361623031
-32326564643533303330336338316235363964316237313631393736333539376635386533333266
-39316637663536333162303332346438643864303232306132643234633931376336353937353032
-31323064383761643561343637646137346561623831383733626232303262383931323137303364
-34656462393337376438326666303837376330373065653261383433393464383030333537313136
-65323765346238363863623239396163656564653062333861633836656363306263303763663938
-36396661643239613834363233323530646338656136306461316633373164646261623332343437
-38663632323234393237306363393131303833663935376334336435633538376461386233353362
-37633536366161306130623863626465316530663964323734323464626335303331633937313537
-39343463636135666563353463323038383762333636376339363537353636316136373138633961
-61336666653964323033643239363761346530356461646263333739323831323364373835376230
-66336561643834313334633761613138376335373236626435366266373363353030663863616333
-61366132336637646161366438313764356131333733363031653238313666663431376437653333
-63333635363534376433356166306232323261316133633861336631643566303465346366393062
-66633734656261356363613238633134623163643864623633663230376336346262663961383931
-37666230306263393439623133656339633532633763363131626361626166653930306235336334
-31333135326631373462343032393765363336303035663638396132613732363934303731313731
-65346136633439656236616463633930633931373064623836353861336330393737333465393033
-62313437616564343365303134346466663032316635646433366435316264613632343765663234
-66613064613131393861373632353235613364306632373838643234313961633664383232613931
-37653561313465346335663362393634613531353933613365666166646236353462373062356263
-35306338363962303764303834656631613363653564613037626262666165636661376539386134
-30366433663761396562383931623839316461386466333139633031343765316539353138323865
-32356662323136656362323231643632333336346339393137316236623235363737333435326664
-33626466346230353261653937373663393135666638346264646334356366656164313763383532
-34363139306165316632613861363962613135666264363138303336326135393561316165323338
-36393766643161303730333431643466663330636661633237306662643534656338653465346664
-36333632633936366532363264343330373964326231313131376462623961393837346432623034
-36353863623534666661363964343761396231613161353633646431653530353832663334316566
-62303639393166663833653465613566623263633562656330613838376436376632373339386461
-37303639646661616534386537666330346661346461373631336335333664383965643762366338
-38636139373939663738643336353866633433323031306139376635373238303232343362386438
-66663136383161346635626261333862333637373763386462336131306165303766316438316532
-36643363373866313237376631386561633436366332313162306338366430643839666636663265
-64393262643530336230353836346131633239366236623666343162383731616663633237306336
-34343430623931393535333939653765656266323464323266646361633036656633343638623530
-61616136656162616265613331393830336638316237316264383034363462666161373465396565
-33353363626232643264643333316135386234303536386530336235393462363564633062656632
-62663166383931366531333934613964353430316232613966316134333263636333656364363062
-36633030383836663133386630306337313236303033373366633432373739643635633538646265
-61633761353064626637323662326162663662333936323330666536333936613631666562363935
-34666330313630396632666539613938373361376634313533396439396132363036656564316361
-63633863656232393730613162376237363435343837386336313462643934633833653137323461
-63346431313134623061323661373931386335393764383866383531303934633234363961633261
-65656535623935633466376335363966643830343365346632353538333837333030313338653464
-33663439666165366366643236323766356365336534336563376462663930646530623238323336
-31613934626334333266663965336164333035326639346136386538303631646230623862303466
-30633933653937326566653533366334613162653234653862643038326237306564366339376636
-31393634383230333938376662373630656330326332333838333062343330303135363734663338
-63363933323039333538623666383236386634643930646331626631393038613333616535303462
-61303236626531393764333734363038393332386532393033656161636563393039323163373737
-32313261663130373866633733313034373963313831353766343834383563303238336565303037
-33626134326330373063646334346537383430393135323466376164363737306161373331616336
-62646566626630623339333762613435626435643338626239303337336234333632623639313330
-32333135626464666133383733393336613066383235303337346431343462393230623062313132
-36653937373135643036653335303965323930316636373632623737363161643533373837623535
-37653931333238636236663935643938373032656264323136656263303364356537636135303466
-38333330366261663038346366366665383961666164363435643632663434313838626634646239
-33363965386565653266383939353330383438616562643331626334353530616231323566663139
-66323665386232323063306666303737646461383736396162363230636434346361383564363435
-39333538343736343262336238333435663665626235663664616438393139353463393632616362
-30373465316464643131316330623465666334383130386462633537663330626163353065396464
-39376265376634376263313462333266643961643761373565663337363732343832633234613833
-61636162643938333539306439613361376535616636643764653533393635366561646238326539
-63333564646461653534393465313135396239343861356435396436373032353036326461666134
-31646638643937633864346361313837323034343163373765336132663162323537303732323838
-31633630616437343237393031346665386561353834373566343164663930666364666339636233
-65313062353162383165343261346231386233633261323535633163333836353665316230323965
-63366361356462376166373236303635663765393664643030626464353834633536613735366463
-64653738613563393562636663396637396666343764613765366436316630303932663132636634
-32623566393361336431353233643563383564316433353432313633336562393635373530366462
-38623534386238386534343336363966363436343234326463656466386230643761633538316538
-66666237663763613933333563653563386237656335393232376235613139396366616237376332
-35383734363063376632636465386366343530646161663362356331373439366134633839323130
-37333261323136666632636537366634346561666437356563383834623064356531636665373764
-36633637393434346136336434356265613434656230616437306361303032633932383266653237
-61393239376666653939303638643136396536393332653839386231373636356561643536643234
-63393839373334303536383161303662343866326439633032333634353331633466653831396561
-65306366653164313333623433366236653437613334306364633139326362336461343037343366
-33346561656132396366363836633934666661343435643561306235366661356638643133643631
-65666462396532373165663434623939306136643938633834373133396630353933396365326637
-65613562643233353434653964616262383561613964626433393863386663623838646632656166
-34653038313261366236326137396537313534663738333966613737346466666231323737396164
-34316664613238386665386538353761653862613739626237643337323333303838363236613532
-35343238393731393538316635613130633839623863663237633064333530656361626465366233
-63326365663638633436613264643330613566646139353965623638373563656466346632333464
-61643862663030613463343431333234363164353030303233336263643139323937373832353539
-66393232386437633837376137323433333836323833636462376536306536343730366661633836
-36366531346235366636346436643061313263643833383765306633396564656334363835613062
-35623034333665313537373833646232616636613239653136366232313036323634383961306235
-36323736663434366462353034633964396261653130303861633362353865663731313430313330
-30343834633363383932343466343838623837613136396366613938653263373331653530336162
-30326234343937373464653039303536313363633434303639373763663337643935646162393066
-61626433303564646136343864356263616563323730366361383136646636663339366436343461
-63623336616136643433353964313735323131656535353236613165356166646231623135323530
-39636539346566396262376637303263373737646266666132363632616563393137383137326536
-33646264663633393665333838646634303630313466633231363831366362356534626634633162
-32323930343333373038643336336563626333386635636664306438643034303361323265613330
-38643632383433383635333264656661353461363230373238313164613735333962326638313334
-63313432656531653366373534616261366366316535636437343537343764393236393439333434
-38633637316364616664336463393231636134653634396361326464643438373539323538353661
-32656331346138356537313237303064383537656464336536343831306165353634323962653563
-65643736323531373436626638313938393934366633333062626439303437383364323166366136
-31313365653039386563656439306133313330313736663836666131653731326638616232613237
-63396166363434343565386366623733353031376461343263663666636632616437316362303235
-66333037663538393139393161306565633266616532643538633838616334333365343437643465
-33363434316632356631353265363236396234383366383636393661343864356166363636303965
-61306135653564323465363863666161313638633530396339653362346634666630326239373433
-38363137313465306162326330333336366562663730623163656338333538333439613136623232
-61373165373565653637356562336535663932356537616166633062336663373063613037626630
-31623638313661383362323233383364346236623230343261336132656639386337663739623736
-39313665636365343934323538663064626266356631376239613234633732396132376233376338
-62646563633363363165353937316632353038623030313737616130326137633538366633626530
-38313139616132306263313761343334376134333036353235323930353937643865636136346438
-39393836396637653934626362616566316231623537303431303364323034353436333834613666
-37613137623630663261313762643431386538373233643961326663666437636336326566306137
-65376131386436313565343439646234666665336166393963356166306638373631366466666166
-39323333326139383533626231633038323235636364376661336533623537366537333336376266
-65376634393137343037323533653866636235303837653635306430393338626631353665366633
-30343762313439386666656338386233376235333837376562363063366533633735326163323732
-32313331383963323363333362326235623839333263626462313731666134316534323665313034
-33383664373963353661656361366465336530303762646331656266663961366338396361626533
-32383265316137353237306433323631396437616634613331646265633236373261663038626338
-36336362663961353665363462653534383136353232643632656437323065663238383338363766
-32633331626337366566633534356366373638666563323864636164353061333538613963376234
-31653931353663363066333364306366326662303538626231336161393537326133353963393132
-63333230363238613437386131313636326238383137323034633465376462333364343962633266
-33333965386535313266343964643036623463643161313061353261353366316630323863383130
-30366630326136363536626635353166613034363038323532326263363833333362303831663661
-33356463666236663636313037646333353862343833333436646136363232396634643665366439
-61346639336635623465323361616233616161386664366365633862393264313964653536386631
-37303833313930386464396333386432313964613435333933623832313131633339356561663163
-32316462376430666338333661353935646662663662346362663636653236393161383662656363
-37356236623261346433633734646539336162333263666333626562616637636263646233653339
-32343334343166373130303961306233613932313165383438643634613733316534393966663761
-32336235313731393630366133346464666238323538353265663435356264393231633632636263
-36646563353364303662383866323431633132643934633437383162336539366538636363656165
-62393837633839353939373965353665393765643262306130336665333738393137353338353963
-66363133306136636333353665373439633663333436666431643636643066343035616562643638
-66623735343732626431303835313162653765663836383130353663646533356238353065373861
-64653264666564313263386234306634316339643133303361316165636661633439313731316564
-32613464663735306566383233623061633862323838383561356339653861376232666462356430
-39316464376231623838353066333666393238633135396339653233326132363163383635353536
-35366663623237653666396638656566353136326237646638656661346262623461373466643963
-33363539316337363239343664376233313136616564633731383863326262646264343837363562
-39393463353135366335306536643136363136343365316633646338623761313639623033653038
-65373632633731313539346339663465366531333266633461623235663631643264356265623866
-38666564393635313935636266613333613566393565653939353766363030363131623636316331
-39353162633837636561393530666336383531326538386239393261646261363934366335646335
-36386335623530313363373165356164636430643866313763636262613033623562353231333539
-63323138623432383235393637623633663331633739373633336335303438363537653736646239
-33313531336139666562366635383962373334333939383766363932616261353733616461663239
-66313739373334326337396363363339613536643464663962646637396439663534376436336161
-33626237366661653861643030376665393861643131333165353837396665353766323137373232
-37663363373639656562353761663161626164646366336162353630333134626631356530666465
-39336339663431313562333537323131336566366461333933613165376232386266653939626239
-66363761343864386165346531383162386434366636623363623331633131376339336462633535
-32373362323438633736623066636238343432303733633964353261663265323131636139333662
-61663461386136333734363130373637373636663763346165313137613232336665616633616262
-64376465643163323763
+39626435383866646264643632343836383132616162323536323732396265373539616464373932
+6237636263373339366163363739613139383330626437310a343862363835633663633164393464
+34653061656331363864323363663932306637613937383534343963316364636635313663343664
+3539373536313461350a626264363866306630656464646439303338383535323863393537346262
+61346533323162653766343763363934313937653237663437393133666463363962346331343836
+33393533313737626636356466623566393232303037636266353565653130646434323338376136
+32306537653134633062313732623830393166336135666263343933323138616436313632623533
+38646539623837626132346631393964663062386631313236353563393131376130316666343562
+35346632316461336564393264323632643232663136323334336336626339633365643565306436
+35333365356637316631666661356431396635636431383032643566373666363936363462616337
+62316234363963306338366638663064396365373264326635376134356333626130303834383534
+63356363373035623031666330626463613563313066303365303430643262346561633633666466
+63666661616139366431313832376665383638393835376261326465353938333963333264653236
+35613664656363643438316232306630353361343030353963386666656166373061666236326664
+63383033633733633361383061316232306566353062616163623563663032393734353963303361
+34323330336561323734373430323435393731323931343335613935396330663533323137323234
+39333132326364646336613362363365323331366430396535383138386261356534613832393863
+61363133356435303964353637346436613633366336386465326336313935323538643636313331
+39663832373337643865386164343764613764346331633261653039613136386636366431376565
+36373431303631323730343831363837303665353461303130326430636161623431613730356134
+66396632306139373732636165313834366339366363666566306461366266356338346566316363
+38386564313665306239646436386635396664643333383736396131353535336334383765653961
+31643833663361343036623634326662333935343332333066353732396132373561396631633265
+37643733393433336364353630666136616235656638343032333632373366616634343130313536
+64643834643236363731353664396636613266656263363664376539306539346639313838663738
+36623634396638313861636438306136613433313062306537653738316563613631363566623134
+62323161646464636131326661646535313436396534356335366564373165653662613536663561
+32366666356339326264326539393239666234633663366261623933366636636161343233383932
+34336638363864346436613164613161326363316431303963656233306663376332373731623437
+66353636336462663730316161313236393264633633363965653433306639643938383933373062
+30323331323735613139323963643335373335633265383235343835376363666132643431366665
+32396465313434343534343433633432396131323635356265663939616436343137393561633734
+36383961363964306431343939313837663166376133616365663939633161326338306561356666
+34663938613865383739376534306333653135383431316464613432366566623362393065306635
+64313737363065336234393463316138313864386163633966336662313366396431353632363365
+62313036656434616136626331333139343235333930363166313833306438616364393065333963
+36396137656634393066646330613365316562306164326133663365313938333337386137383864
+61376333346336396537613933323261663536353161643431383636316235393035313861326230
+31623566363138663866326231376561336534366435626134306463323032613630646361343165
+38663662653334316139313866346163623461656335616232353636636431636339313239346661
+33396133306132643732366232353166613263356165663866626465343936326461626336376462
+34376431643730616461376261356633356166313131623837343839323935343531356263336230
+62323236633339303031316165326362306535653064363862663330393034303964353437363565
+61616565656164313664306664663932333261333162383832326666393366353730306531343639
+64323530333466653534306130636161383463376632616232353361656661353831643966633639
+66336631396164663864653933623662343061316539306634393334653630393462376636346165
+33646635646633353263333838343534373838333836656536373639646636303033626537313464
+38323462396231653233333463313263313233353932356633366630623138376432383566363538
+38346336343765353830656139333564633533323538616166333865323439343361386135343130
+63343363303332313834313764356637643230386536613338623937393436613732383833366235
+64343862663234633232656333666438633464663463663737363431626361643532396664326661
+33383261643231313836326162373532626234383362653162656435366535643863316235656536
+62306334316566623732303834313864663636636334663130653230383365623031316164373161
+64326638636339303065386435303332333230666634323163393134613032326335313961306236
+37343666376235653637636136636133373966636136626137356331336234646366316364623134
+37633832386237346266376533663839343938623664653030636265303465643835666234383763
+36373439346566623739343361386562623962633539383134663237656662653939313938663938
+30653438306666613731326462633334313730363763666538666538356638633261353363393930
+37626261316565633162366636343539626238323861656565393162333662353563393139626261
+64663436336233636438326633303164333939633435373765333731666135366637653532396238
+61346538626662626463303965363061646261343232356639336366333065623765646335353638
+66616430343562366262333235323234383334343538633037643661623661306330343839333034
+62626533353238323064633862613736663666303666373262633533643539643962383333346264
+38346134363236633031393138313538666533643561373766613836636461393166306138333231
+63613735313636376538346230303662646633346363353535333232663033373036336564623766
+62316464363930366665663530626564346130316231313033323130323531396366303030616363
+36356431653435346561656132616632373834393833633865323762343037656439373331623664
+39633635306334646334386635356362346431366430326364303931336562333735613033346437
+37613636656261383034663633666138653537326364326430666632323633386636376635343232
+37643965663564376337616432623336326238626530333736313530386537383633653437356436
+66613230366666373734396538363362626531666331656362356364393230343132363033333061
+39396237316432663832343261393366306232363166313034383033313565373265353436666263
+38356564656331393733393333346164313233313937343330363662316431353233633063646438
+63386162363034363039663864636365666638343665386334383436353336313333653166343937
+35626138326333623362623639336461343737633730306630303963613465396464386534663763
+63383733643761613136386430646361363731343433656533653938366138373162313335373038
+63626639643634663962643130343566323730646432366136393335623134336238383761333733
+31633330343962316134333536376464663166316365386265393061316162363161376333393561
+31646361386332613837663634303134626133376630643730636466643961343462366566363737
+65373236323861343238343434316637663333346161633835306663313537383631303136323832
+30353862663462386262663461623432373034333631633133633563636336343831653934303033
+36303162323164663632393937643665643961313464623033383130663565333034636164643136
+62316639333662316133393533623561633435653036376637323739326339346632653837633637
+37663332386663396363653237353031343065366334333836343830363562383733653661323664
+61333633306531323639343931663061383031303937323261616165633163636133323130666133
+31353366386530323465646133343766663966663561616337313330353436303234346136326365
+64343561656532366538336662656261396337623763343966366136646638643739373037336361
+65336538373161396533613262326633343233653036656364636536636338623930316365353365
+61663435663333633435376535353963646566303130616364396539643366306635646538363464
+36623433663437363761313038666665306536353332633361316339666263306665636566393531
+66356565363839666130663866643134343632623837323630376638313131383036376464613331
+65366262663936623238303863303761313466656538343962326662646139363166616230323938
+35303265343132643938616330343833386261666432376666356532363933656461396633343831
+66623735623233363833656137626161643265633335396162626261633334613232363435613266
+39356663333532306662353538396565663666393063313630663133646365626461376363633735
+66343030306232396332313731313531333235636363383130373532633137383536316639626537
+33306330393737343563626234633531643334313363313466326564343530383337316238383362
+31306430313637613639356365343034393766313362613430646566643131646530313861383037
+31353636323963646236343866383166646633613539386333316164316532653036663236663039
+36306364613033616338643366303264343462393532393638316235303565333634396537353334
+36666361646237356430396636663032666264346561316533343438303238313537326263333766
+64313231303563626364663232363462643735346639373463376464383466636638663036353437
+64356338653862393637366233613366393635623637663332613961623733653362353234656130
+39383533626133313066646331343361303261376364356463383261356462333138643636306432
+34326135333137366339366561646337323134633033333365376666313763666630306261666263
+38386530356361633062663964333631393665343539366532316161616331383831396537323539
+66343138373463343434356465316662356233633861396337343762396366663361373161363838
+30363633313634623333383135623738343738396230343839316137633663396635643865373735
+64306238393833353065333731626131666134303264346662363433316161626632626430363861
+36656263313032643132383162386439613763333033396434613631656233653034353263386138
+35396465316664646339333630666432353064646461323463633237616338316362626538323234
+34343531633766396662306234356361646432393663303764323633333831636631323938396261
+65623064303234353861363261346139646633363965316337363962643430633864633061663462
+33393531613032386134303765373132306662633161383133376231636631643464393536636430
+32373238653166313231333733313865663862653537313736353338336634653032326465616565
+35626536386132363139303939623864613463633432643538383036616530323765376435643237
+65656463306533336661326462386636326630346664333838636332376530333432393235666332
+35663836313765363934313236333765386130623064653463323039666536646531646333633334
+32356439303333353536663638333138343965653663623465653938326565353535666662376364
+65613933323566313363366266343630396331366165306164663065343361666366616237316134
+31323236316163663030666265356531363266343337623561616163386336386266626634346436
+30303738626335313935303463363166313438663430363035336466346164373738306565653133
+30313134303563613835633739303137626562646533636263623336396233626266353130633262
+30396637613934616636643333316539653431323563616338343637303139373334386435626333
+37616265663435303130376137346361653463313934323837313331653662623261613962663833
+64386165343661663463643136643736333232346231396666383239313830386132356238343233
+65376535356238653663613336343632646234663633373238316363663162633535623962376135
+63396661373130383331623733343664653434336264343763303266303339626434316331336433
+32313066626262313438373631303337663232636538643863613939353266666463313733653830
+38666334663864373830313762346339653230393036653336663030346631333365613062633361
+36616538636336613930303065663637373433643937356461373030613733333434663736323864
+33376365323235333938353261653766663134313733393666623038646362666239373338336464
+38633433383938623463366335373439336331386336373631353232663662616261383831663339
+33663830653737306364633935393334306466383634326430326361613461316639393136373065
+34663234613434376430613365316438306162396239326531306638303132666266616238336538
+65393965646139383263366263376338396238393730643231616664323432653535613833363465
+38626166356463333938626131343638333635643661343162663931303937653835646364306164
+63663232653234383465353464616364656336653438313664313339313231633739303930316536
+32633037643561626362633231626634306335376333616562663039326466353165313962343434
+62613638313439663032366161666665663562623535643037646331323934616562623432323565
+35383939393134393931383030326237336535333862633637373730336339636239366439643863
+31626364306365303063346265343465623735346639386239616262393931643835393562326535
+62376536393965613035626664613034393533363961353864626666373639386133303634363034
+35323939323465366638386631656561636564303430643533323864333734386531376337353632
+38323161333865333663363239376133323063643931313464653464316161633637353165346233
+65373431663462656365326136346130663830313566313038303265366233626261356535633731
+65353666393935616634366335306363383831663462623034303434646431666138636231373336
+64366137336231376562313762343136646136353233326139346131336238343262623738336231
+35353031666632393237303834633536636161636561643463346339343164623732313537353433
+33343439373736336330383336303038393831386130323438633865623765623734316365313333
+33303265373562663734353938343762633230366564336137303134383661393638626465326561
+32633862393539316633616165666262623563333966353736363536656536343235303366633964
+61623434386335356435386464363035663162333761336361313263373138343965613538376435
+62646266346162363334363963653937353164653563343834346162323166386335383565353434
+30396434343465303538616463663532343938636135313739366632656332333733613737343536
+33323336356533663962386237333566323030306133666334366365373535333265333132353437
+35626435356234613539336232613335653662303365376163626535343163343036663631323031
+62393263396233316332373663613435356465616265363336393732666235373466306632383635
+64613962633435303834343231616264326666316366653433313232323835626238656439306361
+38326435363066366261363931333336613164353166353236373834316437303735623931613536
+31666335303330313664333566363063313337653163396531353137613562643039336338656164
+66663763313432386638323766323032386135643666313765313132393632323035643538313736
+38656439626261663636393034366466363437326561396261303636636265616237633537316139
+34353165303564343039656631313130316535336361393166656439623538313563343033373366
+63643862386464353330643537326331393133323765353436313136313435633261626534303736
+31346435343865396665663333323737333635343335346134343061613033393061343532623131
+66633864333838363937626135336231366434363634376635633566363536353461313866373836
+35356463313437313134323339366531633439353961346164626663613232656635666237363461
+62633832356433313934613763663433396666396435653433303733346639613762303534613939
+38343338663162346637633231626435333963376262353661313436623233616534373333313631
+34336433313964326339633466616533303031343935336266326663343937366331656539623535
+66383261303462346634626261363737386232633231616239633335303238383766643665663639
+35333731666432346665663736313435356231343132376532616439653963393934633037363366
+37363632333362333438646339336462396665373361616536306466306663623733626238646135
+37663863343339376162373065393130616538313939376137386566353361623937666330303538
+64653531653634636133353433353463323738316664666636643933646661353339326238316666
+64316137663236396234396130646533316438366337633437326539363130343765656639363334
+30663362393937393863633262323931336336343362646264656331343733386332356237653134
+62383966636130636231333539336465303838343365383135356464336139656637623233353236
+31643731326430313563613130626431353562383036373461353663363031663232353366393765
+64636261376666346132373161653430633934366165656139323232363463646461346336613964
+66313130636132323931316438613137356162313062343431393035303339306237343461326336
+38313261653231633836623739306438616439613730303332353434313934356431396565316238
+32306132646239336466663232386266656134633563646431613332393062633439646562303665
+65306665373532376362653737343061383036323535333330373831393635333663376237346565
+34646666633864363836626666623838333263633036656337656431616635353662613262336336
+62643965666364633865666432326137653864366435323332623536303465386661363162653064
+65393362336362313438366536613038316461376139376662356437343631636239633066306162
+38373638363233643531366338313434373034656635373731666230623663633430656266343933
+35663030316335646532393766306638346365396533326433646530313630636239356231646337
+62336163633162613862356138613863653432303064356638656135646264306363323664336263
+62323963333432376237626134323062626563623165386335313533356366333437353838363363
+64626230353262313138373535306538313765323435363732396437616134643931323232316463
+63396161653032653837613366346138366166313730656665623563333834653836656162393466
+65666436363465393934383732393963616236616263393366623130646134623730376462346532
+37373662306262366331323539323365356232323739333466383865653461313635356339633338
+61666330666338363533313462613739393863666439623033376336396364666365303432643137
+32663365376231333230663665326536333638303234663365303935626331626665663239323166
+64303966653566616630366432336264333639646236613038383134363336376363353961366435
+34313133346339306133303839313631663831353465376664656138616131653437626337343539
+33623834626263633939366238373232323165653236616361346533316463613063353064383633
+31366534303736316532306563366663363035636462323737633436326138306464313134323066
+33626538616536333338636664666334353832613135333832303862313061343363303362343461
+39316438396564613662356432346363336266356239303632323664393864343233633664636261
+35323831623133363937343639656637663133383637386635383137343165353932333665316434
+34393839633233396237643062623536393231373864396236613162323364663732666265633632
+32666134366137363463656131376630353130363538356334313239323939663263613863333161
+61386434306532313263326334623362623465336461326564313735333732333539653162343165
+34363861643532633137356466336430323961666133613031626631636631373464633832313035
+33343935643531383339326330303538333133666265313230373734303562366336363863353936
+33386566656633626239356334323765323435663233363265666231616363343537363438633766
+33613336366163653134333039333535303962366162613337356166393335366131643163316339
+31383132663331363762633662366462343663393062653866663766623830376135616263393839
+66326638316339633435306438663534356662336232303032376330383065336432623266383739
+64303866393235333561633434313763366333626631346563323662326537653339353834363961
+38393236333462343234663761336562383564613530323762626465643933386239396266313139
+31363138383138383236363464346163633166393232626634376533373862633039373964303331
+34323132636535663732646463656632333039333063356533663263633035666664343165623061
+64653637333637363632366562326431323932303233343433356431396564626632353334656631
+37623866633330313337653466353139393831373531656333313932376232363961663630353265
+31323864653664643030323531393736336165616632343766653032376665666263616438363064
+65646630613136343033343466643765656236393061613238356435383264383866363632333332
+61616437623065636135656330376262376130316336643263373362666336343331303534353965
+61316263633534396435373336363638326536363366383165353565373736353032633632646234
+31623233663333303232643163646630366432303933393131613461306264303932663038343435
+64376533363134343338643364626135386334316337373636653735373330386631336362623030
+32633562376164316637373639333230643065336436363163353263393630623065656263306231
+38366235366335326563323733303539383330383630613937326331303731396361653537373436
+62366333336131626138393839343463626436613664653137393731653332646661333136666232
+39383433643331383736356137663830396265336264316336393731343461356239393534313432
+37303838366264623034373538316234333536646436643661343363393161656633313530373465
+65313361656637623432393233326332373537383632316361333735663935363835646634396431
+36323335356637333530353366363661323762393131623737656238623036353937393730636333
+30613337386564383632333063396430306166396333346533333834343538356130353436323765
+38363664633330323163316233633864363262343732306363656237303534656466323231383130
+34636264343735316362643961386639353733336135613261303736313537333165323739343032
+65353363363161616531633462303539363734646661366464383334613734313137623731323939
+63323065366132623362333335663735306361393630326538613037383632663830356431373261
+33393063626436663933353864346264633535336532643136666363663237353030663761653933
+39623331366663373363356333373263643338653336343463333032646630323132636265333130
+64623765336336613161626336313361643265633735636436363037303432643265316465386335
+63316331363836626433393165356131396461333931646665613363313737613337333638306432
+33623063323065313865323732353362363333333331373766376465613638656465653035326531
+32366333363935666230666334653962623835303435336466663032623531616361643339666130
+31376265656165303864316239356339396665616461626362333862616364633432363135373332
+39313430303363623433623161643432643261613364393630633334303431366235393765653730
+38323639306161633434666161653564393436353031363131626336643664613232313463636431
+35633935393666376462656639363431333031363534383064333934663265396133373433616363
+39366461333034643631356264646362373439386161346337366165633639613939373930353562
+33643634646331376433373530623438373734353661623766623263616232376365656335636534
+35626665393636643830613466393061666338323464333230336666366135633661316537643764
+30653130356232646430653365303966303266336366373132636237623332363133323632646230
+33626361353464306566393438616465326266386262633566646134613166396635343733326635
+37363266386363633030356531643166333530313561303638346436376235623033363834316266
+36323363303636383334653533346335653939386237646436336437313161653932656331343064
+32646161623563303462386433356334306239646332383137613162363237613062323265616230
+38636334333762373138393833323231613062616535356664376239356433313264336163313138
+36353432613033333237353531656162616363353835376138666131306361623365323237353333
+64316364383866356338656237313539303434383064323831333832633063653264666261333032
+31336135613032366666613566303539626163313364303662356165643931353938356663636366
+38303063323337323661333464336339653833316163643235666133336438303930393766623931
+35386331323430333630616131663831653265396165323430333866626263356138323161303763
+37373233386562326462613364633138326535653238353662613864343835313031303362633131
+37373166363261313930316639646663396163646334623931313466663632393835633161393038
+39316363316330393266396564356338353037636632376133373231653864636365373638653438
+35326334386465623536343038336336643162616633343565383334373830656435363138636435
+36303764306235653534353161363162313764336138373332313338396134653134306338343561
+33346339646662636562333834313535316439303265306534353366353662623066363139663933
+39663165313666376362303838343765666162636337326565353761353132613737626539306163
+35383065336430396132663635663631393466663236653564366139663031326136383437383838
+32353239366232396235636132646531663563323661393332336361313738626437626335623463
+38316133646566653830633963613161303637333533363338663130663661656631646263323262
+64623032633866636237623665356436356165366165653666656161393865643931643730613664
+35663832363037653931313635313638343764316635633031616439626230323337303335623234
+32646330326632373738663465666236666565396162613361326464313965393830643237643865
+61653538333330613835623461353366633433336138653535336239343933643563633363656638
+38343966336630643030303665333563353661373064363934633566353363663334653939326263
+66623034633564383833653366323532386664633730376131656366613637363433376131356430
+64376337313930633030343230323662633762363538623331373035373166393432653836663836
+38303834313663383465376432656661343432373139653066323637643061323231383064356131
+32653065646636383534653462353534643931353035346432663266623431363066303064623435
+37613264616430386438616538643035623632336237656535343936376363616431633264303933
+34663465393337376539303431623666626339353237346338376637666331623762373132613866
+39353065653630373635383535316539303530353433376433653932636331623739633862616265
+63636163363765613730343061323930653735336364343239353633383461636133333065616632
+63396562333733306538353533646332353966396330616334636639373163323539353231623766
+35396261393066326232346330616133626634313964626531633234663637376238326666323561
+65383366373963323734366332633865623536623064643239366561623262633162353461326137
+38633862303932316362356366393861303366363335356134363638313533343434306161386261
+34323733666662313962613835613537393432623836633730306535366361336265646534353834
+64346461386630646130616663313035346232383533663863613364653461656564313834303961
+32346337346165313464326332393435356434653138343130363263396238343034646635343937
+30353361316435313634613930316237626162623562653036353966393362666438303637303333
+32383130323630336461323835373863396137343231306536613038393437623937636566376639
+36626634393035356136643831316664306662653061616464633237616566323437376634303634
+32633462383332663635623334353263313464613535323861313863343036653338343033303238
+39356239623163663330663131393334633961313066663266646631333464643366663637383434
+65323264376166666162346336383736666133666163356131326633336464613961653562663462
+63313935366166303061663066396532313830373936663865383132343466353233343165343961
+61343330616666323939643238636462353531343664343938366135323961366661323066663466
+35313635616637646336613830346165646664316464643266393665656465666263306662623062
+34306465636337633733643434373536393335363862316166373062353432626161353830336133
+37663531386463313334366634623533376131316138323337303738643238656661396633323838
+66663633306134353864643163363735303532373866323534333132373438383738366535353136
+66366262626636316435623436356263313037626431626133326339396164656535326563373932
+39373232306661356338333139313335323634636565303631356163383935663432303133346465
+37356234633362376633393265363736333132386432653961653536383136616236333263333263
+33356131396439393164633466303366343563643735343333336165636335616639663862656437
+37396262343131356665376638623236383634366532623064636636376638643133306666623733
+62343936653937663639646661353933306562643530393938313835313563343635333738303461
+38623534616363313862313366623762646531373262326666313736616461616232336537333037
+39643030333737643831333866656435663430313864656261333233336530326363653532376336
+63653532396539643966663230333435353533363239656561336531343231636362376538313037
+36633666316464376139643563313664343738373064393562633262393439393366393564666231
+34323731303839393266303465323766613864396461386465653739366634383461656537653732
+33313136366439623636636438363566333939303263346637353163613834396162303331663561
+35343237613031373065333636366336613732326662303463323461623839353439613132666563
+36646631393632613237663464373835636333366434356265363537653265383163653833663461
+31396665383334343966653166393762323837303735323366393335356230303033666232313361
+64383962636636643630326533393331313064346165313833333937303538343062653266303334
+66303063376265666538633565343166636562653639363533376637666631393764613438363333
+38636537363664643863613333633236663435323537303934613433386437666366333334363964
+34383738323339643836626562666566376336666262623736346535343639323737353163623439
+62633732353236373032646533633665313361653538396232616234623663663365396536633237
+61626366353062313665613836346233346631633131363061656662363864333065363234316230
+30613364343131366532356263313863333130653266623130636235303961353630376663396131
+32613633346434373630653663653536383933356133643666343966383532326236333537336135
+61633636653936303662646362333463653139366138373734356134326534656633316533393535
+66306337323164363334346663626663346535656137353534333731396537393835366261323233
+36633033613938386437386665366462323235656531656461313064333064393264366239346462
+38313737323962363465386435636539656432303162323665346531643139643438363630653538
+35636430336366353263396232316333396434616438613463313634633138616336306633643061
+63386335306261633739303532626261323566653762636262363430386134643735383937313136
+34643938356136623133623665363963623530363535353139653733393232333736383337383662
+35316237343935616538633861646238343438396131623061396232393331333038373432643465
+35643835396235323735636332383261303530653733613935646466626330333731323065303930
+33653061373765363439306464323761303464393136613864616665323837336664383238666634
+30396336303538313232633236326431313065663234323161653062363836323633363735366135
+35643562303534343832373632633962636636653562333666333563626166326435383732306332
+30383362393135646337616131633330393632613237333037353531323830363237643330643161
+66626563636635623464363533346466646133383538313730363538336637626538333830393164
+36343063346433633439313733303865383530336663636663643733396230333837353237313062
+30626330616234303039633736393161303863343234396262623436306136316366306432663930
+61346530633865396365396139613639326530353639333036313437383063633235366537626235
+62616365653761663566616133366536313338376162356662656432643532636633363838633637
+37643364643061656136323436626564363135636534383862613765616335323931643233393863
+61396463316564656136626365313065353038343936366134616136396461616265623331333633
+31613261656639333930653132633933336630663066613331386535373335333339313230616361
+33386535623363646631646262386463343031643138616464633961616137636633356238333864
+66633338343166323034333936396162663366373765353233393762373335656465656261343663
+63346330393161343236376665313639386136353265393431383563646665393462323336646263
+32616234376239386263613034626661383962656637363236323831633531313933386666313435
+39336539656530373137616138303361653331643637393066323665373132326162613461346434
+32616130386131663631396633353135323164333931393939386637356637303763663638376466
+35616230343862323037646139353838623031313361616265396136626561636338383063336238
+30393536373261396233373439633132303238323636396131386137306237643936636330353133
+38626135356238663536353733623337393061333465626531626232376430636231373162333463
+31666163316637303462663262313039663666383431373264323163663134636430663233346664
+36326636633038616531386334613762613736643038626335623835343864356366316266343131
+66383939636332613766363565346336386134306566616365336234383331383466356539306433
+64346138653536316336343931343538353235303565343663383866653139333132363035623465
+62363835303765643132643239376233386330383530373530386461663565613030303665396339
+39656262643563313064633832646565373236353235393032616532353733353630623566336265
+65653664303465393139303232636439663231326430393435336438633931303332633731393639
+30623430656465326136653361613734373835376661313135623032356562363830303139366337
+65636231323866366235313933643733313630376533343438643863386166656239336635393736
+34376232613362323839653139336261623034613334396234623432326563383737393562373939
+31653764393061656535663862333936643264613865366565386166663866666232366538373838
+65376534653866653864623237653337346431373730626335386630616137323164353464613463
+30336532386265376234663562306334313432623539336366653361653565643032643531633939
+30626165666134653264616639373830333130653263313534326337366466333032333939653263
+38636331653937353531646635653937376132313732313836353131343632353034663832383639
+36636338343563366566396166343734396636313866393938373266633832343832396664616266
+64613339616539303333656635636465313964383239376138643834393232323666386563303265
+64386437663539333234353461303763353930643861613461393865386638386633623633623937
+63663734306332313033646536616561316638643765623566616139653031336563383365636138
+65303930343461623535663834323132353533653333366630356431653733636566376336353464
+38376162636565323335343737376633653165396632323235663463323730326162316635346366
+39353736623262666462396338363765306264663232366463353966623239313666613839373530
+66613062633436333734383139323964326663323634373635636365663832303230636366333636
+65323737383633636338363066356135373166363936646262303236356166316533326437393735
+32363639303137623335643632323566373032656233363063313264396436626633313433636133
+35646464373665356136316536356530653966313935333931643639376537373735373331386537
+38646336356631623731653439613164303835643039346430353364653561626337333666616137
+33636434323938316661643939383937396533323661363365643164356538393765396134396433
+33343031633764643239643531373663633734646232656466643362383838393037363636323466
+31613433393132306364326430666639666561616664333035613863393335383034353039343265
+31633730363161646439373637643938356462343639383666636437623639653066323536653463
+39626239363130346539363961326331613764386531386436316564386135626335333439333539
+38353638653531353132323866663665663831353063623764346438323935643431326538336534
+30643934626236663762333062646363316635323735633336386339336366323861323438313137
+30356665663032653261356663373033326634623639396666396664363430303437303163376637
+61363866316434663433316565393363343938363131363635373934623233626463303731633662
+62663437616333363438366239323934656138663362376363353063633461333532356265336663
+66633366316433653038353734373566633330653737366363303164393536353232326465623063
+65333136306264326430393935306431646134383036626466663032643931633862323066363863
+32353231326334633031656562333266363436386535303465343437666431393234623662346137
+32626636656336653738333934383339646335316137326630373062663831636139383232343437
+66356138373465316431643937623432643965616130373239346661396330363433373834303932
+37363932623564303661323234376336323939646361636665386663653761353033666339303439
+66303261376263306566323135643835373365626463376262376666643331626236656139363134
+39373833393930363630663833633832613063333139326564633161346366326239623735376461
+34663063663232313138376336663836333136363639646539623661373635366264653965396431
+30633430333136656139613033353939653433393038323438313363346264333462653464346437
+37666532336136373762306533326633323135376538393932633165653932396334343530653166
+32323337623731366261376534616164613836333237323466323830313830396662633837313533
+32373238626339353031303136306139613639343437336566303936656435636531626464613366
+30636235356363306663366334396631613832613062363134313934646366303766636438653762
+64313931616563313939326365643635643730633562323834326433343238646362333631656630
+61643639316631303861633130326261613061353635333065656363653862366562663830366637
+33613938363538663736663934626464323538623831336664643935633866383562316637323132
+39393934656263633466636565316161376537343962383334323336643730323634326461303666
+33396364666339646135313039393538356436656338366536613934306431306664383532326331
+64623231363366313637613161316234336136613862633466363837653133343339376238393437
+36363638613635663564316138303365373165336239363935313631336533303562363165306366
+30363138666435653364633439303561626637333037663134633837303131376638613437643363
+39666139656636353630373631653631613664313965303335303138316634663139656337343064
+34653061333934326234336132303965303338383566613032396433393838333439656565633130
+63306564623635633835616264316138326630656532373235316538356230663966323730386164
+34623137626665613935646330383530326163316637306334323933643462623133363463626434
+38633730626432323732303361336462383361306433336335396162353838666233393364333932
+36626437613131303136633739386263363331646130346264333838646330326532646437353035
+32376231663466373439653531386230383565626465623938366637393866343566346135383935
+36623431636138383063333265636332633265646463353565636335363830616563356236343030
+64623365396237313138613163336239663765313831383765313538326539646437663732333031
+66343464646538633830326235643837366437313161666635643539393830656139356138343431
+61303734306161333235383532653935653133613333333531353265303136356362373932376135
+61623738336566363761316164353563376431623864623465343065663966616533333130623032
+30613661616232323430646564383466616630356461653866626666303165326364613861336639
+38333865663237343530643432613439626166633232303164663263323961643739363164343932
+39343330336530636364656336333539623732353431616334616333653665336361306431653535
+66393162653865383365313833373462356135343238623661333735393466396563316462306165
+31656136616539373834663430663266313564336639656137636538646538653735633761373534
+39303365303364326461653763333164353563613961396331653032363165316437356566646335
+30313262666230633533383966313437633235383232656133366165373434663264363266373466
+36333766366434343633656361326530383065616531363435313165343037353736653830373235
+36633534663738616436363330393136333066653935346466663234393563656266666362346564
+63396435303332626461643161646632623561313530396634336264633334313133636666323835
+66323634613864646566396562306661303438316135366138386662616361373432316237363166
+33656638316338373064656130613635653865636433383664663431393731376332656330613466
+64663636316166383663313861383136376234373863363135353733663166333638373364613435
+61366438346265643230623663303538623732623761376666383038656533343632303162633433
+37613238346237613666626430623262653764393664313633336536316535383765333562393362
+62326162343161623866386466633933613436383564666664346439333937623036656530666661
+37323331373464626637643065666230653165353735303634643966636630613335376162373231
+32306531333664653230613737363334656261326631633339383662636530316264353139343663
+63623662333336373563656236393034316263323438363361633835396238316362313561623236
+62353533383630333962323966663236316463633461366166333230356664646466363061633263
+61646666643735353230346433633765303931353466633837316161396336363161613664623861
+32663930373664376638386663343466663033626535643661303561353836346136333166613737
+39383164346463656137353237383662646263396366323838326165623037363736366664636462
+35663764333137656139376330353463363965626237366530663263656536336661613062646232
+32396131383436386539663935653061663263363161303765663966383035366137653265363463
+38383530383738306465396232336337646366666664666338663164363562626463326539393539
+30623838656238666639356239353535333637343439393233643136366337616431343165396563
+30633632653962623033306162633439643565333332626237663032383338396435633832383933
+39663336363934666638333839666463623763313638313735653137353734663432303963616232
+37386238353337356565633933383733373631356466616666613132633934626435643163346165
+31306234353866656430333566623761353531333930363431343233366362313032353365636163
+37623330356632626262373838376365626465373566666231663537666332356232313536613532
+66343265643536313436636563623933626232323431356164636265343464373536363837333837
+66663839393431653061396331303734353962373565653636366564396539303265393136356435
+65623138363463653330376431316330303334656538366461666364323137396265383663303262
+32393439343139386633643031666535623531316365653735323336353464383434643739356363
+63623364336364666535333134356535346136353461373839613639313964616131313235393736
+35613337326263633464383665333062356639626263306238306664396162343636316564616539
+65303730356266303361633939336637363930303865663632346535396238633934643332306434
+39383961653933376533383632653566343730613939393738393435663565633536363836376161
+61616466653662643963613765656336626535326166303962326133313562306134656266613863
+62356166353336333961313731363166396437663734353535663035663764356366396438326133
+39326264626235653132326363616165653835303731626630613166313361643364306466666463
+63363039343164636166626633326330656339623136653432333464376131663363636238343638
+63333433633861376131303136346335653033383361383963343839346137393538656364336134
+30386337306432313332626132383236333963366431333736363836326565336564353834373361
+35626535643266613334633736343061636365316539346330366431353134653264306162613332
+62323131316531333366303163373265653634396537613935326436343961633735323835356362
+64646137333065643830343131343565386566396238626461343165383363363430333737643635
+32666439633330303663653933633261333030626166643932613634653636323034386665613465
+65326461636265333563333730393730303238633666646463343531363131396234653134306531
+63633837313639336137663437353730356132313932666337643463383862376261356266656462
+31353936666331346463653363393036363032306566366562306138636234316265323538313364
+35303638663262613164313765306638306434333338626266663765306562366363376238666162
+31313964326431633736666466313066393736313662353436353665353136353136373038393162
+37333537336664616231323865666330336162383535373135613536656534666664663734336434
+34386365326133326165646563386366343264343435623461336434393962626330303065383732
+61323664336431303962313531303366616539616131363766656564313063303234386466633165
+62323337373664356138343236396361376137336564653930616263666236666233393531633563
+39653264626238636430373963643831643663363337373161376437653630323562313765373933
+35303165396132666134333832366264303164376536383065666431363039643336396332326233
+64373833303830313734616132666564653464656330323866346538623231303335363839613334
+34333236363866363039373238336431333666313536653433626435623337306364663939366261
+65383865653634316339643330626236376435623366633331343839643339333166353036653432
+31613161303339613531313536313539643430653666303432623933663637373734313366633930
+38393031313863343136326261316236373966373966356130643164313361396139343739356230
+36323465633262626430373531386164313365663233396332343965393934653135643832383230
+33653232366632373366366363636331316338386462333634666630393463333165653336323335
+65613361303663306430346630663762383134653130373134306338303038333365643064383765
+36636438663033643431616630346631393532626437626235306430306234326432353064663139
+64636662356630383138333935326165333235313764326436323864383938356638303331386666
+39326338343339633636623432343537633636626362616339656539326431306266636232613436
+34336534323363373331393962343730303161323538346335636463666635636461633234323465
+63343661343464336137343138343564616135333035636161646263326363363034383535303131
+64343062666635363133336135326565633738396332653663623432383134633265323739626438
+66313565333736306335653166306432326435346536323461313539393733653432366264666437
+31646438353361346166663733613835363338333032653261623830626532633665303631356134
+39613135373562663435303666363339346439386330636463313164383666313264656233313139
+63643639323964396130363637316230613734303035353165386661343737636363366137646539
+65306133393763323566343933663731363763313730376664326334613234666634643038636665
+36623636343566333666623963383365353231353137626236306636356631663433396238386364
+32316533343563616635393930396463353938346633633565356630353838303064346239346533
+31613231643039346339373032396163323161313133653237333966316665613132646662313935
+35316436616162373937383465363763663239366565323432393563326534646363646466316266
+30623166343636393331393232616335663862363264373038663035316261313938626334663964
+33326139613738346133663231356138653232633263643936393835396436383534326663303335
+62303537313730373536633334666130633765633339626631623966316661663538363437643430
+65363338653739623335313336626330666164613636366166356332363633343961643065646561
+65383466356463363566356230333939366535333335326333393838313331333862353030366364
+37383236663932323361653230373038366135383533633038613664353763373363393031616334
+30396138373163393262326238393363396364356533306166623432373165643938653561336664
+66383832383537356238653664323864616666623931396564656237333637376662346435663032
+32323261313561393662636139353438313036643135626634323465336139336162383066343765
+35633234623432366637323334616361333931306139323162343064643030393162303165633163
+64356235643037323365303836353634356336333635383031663438663536656233626465393361
+66633566336363333666613465613630623539316263613836386433303138333331396462333264
+65313362353736666234333563383039653832636165306264633966343266356239393761343934
+62363035373037396361303336356461303563323966663764643336393539623564373434383732
+65386631636137643636386430343165633837366333613038376135646637323031383533313937
+31376336313930376531643438323636323934303065643161653233616564376464313466643931
+31653433363233373731366261393066316531373365316166313531623230393062313832343438
+34643031613830653037643464393437636538663062376139386534343566393130643338346663
+32613134356134656333643434626163343938616234333861666234623233343732656165646161
+37316530323065356231376635656437346138666436313334303638653731643932643661656465
+63646263633035363066633561353134653336636464643231666233386339343232653239333864
+64663162653035353364656538336664356136333737373761333462376365626634333736306135
+36306337396131333564633438383963663036333935356262653533663031323066306164326366
+33666432353932393038316133636238633433303461323361666633386530326465633630383131
+62623035376232616639303864393566646630393063326463356666653535656438663538613066
+30343632303835336262396665356439343362626431303134313562663165323934303034386663
+30623530383936353965306563623161666535316231336232323031396239363764663635613231
+30306232646166393562626139363139356366383065626337663365633134386137343132636232
+64633139646130396364363037346262316635613461323763663163656435633165353131623436
+36363734383335353736346232326436623434626263323736356365653966333135663836623261
+38313461663838353165343563653361613735643435653638383265386536376266343534313636
+62663130613833306533386637333230363332386665633831643037393461386535323261396231
+31303733333938666634356633663734353432333764353136653730353565366638336538343938
+39326639346435313863663265633166393638343665393333353832353234316534356435363233
+38613035323861333662623662313462323762326533643632613866643633626632643039633234
+38346233333564343737363633366365383666633039323033373261303135613035373239343133
+38343961326661393838616165303438353832316334353966346666393233386631666163373662
+37373637613335616665623963323863343532666266383331393562383233336436373234396265
+66353766363631393366373563343034336266323164616262343863306136363766646430643263
+30323838393665333361636632313366323064376637626261616263616139613565656333353661
+63343263363930366565663537343538613130323537343462313365633763346635343935313964
+38356636643335666663373461306435636539396638336331653761323864373432303961396562
+31376131386363653366336331333232373833346331633536356632306638613036643834373833
+32333737353435633430663364383331383737623263303361356462303831623130343138643731
+65653439643839653263343632363837333337643732333165656438616563633030366334353965
+38386364393837363163306232323434646330323933323639313666636233326366313530653739
+37313964396161326336613238636133303136663434393336363963616265386436313835643234
+65343364663464356439363833383966383133613538333638303762366261353036323564623863
+65313030363138363362653538336235643832646262373163306634346164393634366261633964
+32353564396265303336323432353438656431643261663432323662376136326239376439393536
+39653833336662386364353161396539386534636464316433656662373836366534313136333430
+35303730353865333439316462366136663834626563323866663234313734666434393262333633
+61393636663062303337333432363931653761626632626336346462313863613931386536656435
+34666366616332366130343539383135613538366664343130333634316461636337633938383033
+65346234613863663561343234663535393930346634353530643231316536663834646266346338
+61353233356364336333646362336664366465646466363537396338343934383031666265666535
+38623163636135656562613666663166393866636364346366343733356339316465613330646538
+33646337633034343665656630316334366339626538373662616432323337313362333634643466
+63666235646432366535303438636662373830313864646639306362633463626437613932303161
+66393463346464666638333166326233613934303465386666633634633863363836616265383130
+65633334666330613363303039613562303739343961333863383763313938623337386634386238
+62656335663366303530346563353530656662303030356230383630386236393536346339643332
+35393766616534303934373136356461613461666332393632376537333864656666633835356463
+38616330383636313433653666396134343963663465393732363532613062656433663339353634
+65666530316434386165363535336637376266616662336431396533323838356534616536343732
+30326261323964636339356639356232383331666466323134333531346262363661663735656533
+34626162643834353862613731356130376132613063633830633135663238666231326338323365
+62363865616535623131383066653164336565333733336233613333613030313936363465393962
+30336331336336386564613564656639653037313238346137666234393431346563303434333638
+30366232386530386434613932333836316166653238313134356535393035663633393033613266
+64326566303565656438386532393665656338303832346133333031613761663838613864336565
+34353737363737366638653938346166356630373539353238316366363861313637623938326638
+30313432633532323539303936313462616635656232323832366561373331353331366630376663
+61343138363862613336303866373030333334306235626363616565623039373364656137666332
+34333735623964353464656131303533653031636339393335663739363234313134383865616365
+32313331323534383532663135353232643038373532626564373563383434303436636433366165
+34326465353737633336613038336534373166363636303165323035366533323939376238306235
+36386233356562356166303565366535376137636661313666623766393861666132363332333435
+33316234363137656564643639393739323736376434663132633864656161323261316534653063
+39666462343766623537336137373730636562313161666263613532333132316238643836323661
+39363562643039363562366663383737373737653439663930643466383938376664336436623337
+30376431633561656439393634633635636334363366383739613238636262316266313334373766
+39376133316331333937323131656230313734636532653437356634373935653365356339396236
+37613036666139623532656538393066313163303135396535356536303565616236646236366264
+62323233376235356462633034323639356465346136303138393234663164373834393565323062
+39383030613634396332643733313834366365313762636235306161313435313262616430633236
+34386332366262336231623732656431616630623235396538376663646262323761306663303539
+33366161303066653932333137326366363130373534306630626135313830326138343764373365
+66633462666666393461303265643239653531656631643930343730626336643037393232336163
+39376634326165623531633765666636383264613532323235663236353532336638313138666566
+63333632343161303630663431383037666265343564613636623238336564376239316665326461
+62613665353735633361383730663132356463336461653932313565306630323863663431336562
+34306537613530653934373434613463346636613465663761643065633235646365356266383761
+31303036613261376562333233623537333064313639636136306530393337373639663862356638
+30323365653136323535386134376335356531653133316530353061326666626536326239363366
+66623165623734386563316361313535393462633230646664626631396234303030376262616566
+33366234643065636633623338656331373761613432396530653839643836643537363863653139
+61643233393564393537356364613334633038633036343463383338653461623136383436353665
+34663136623332356434313664613434663032393737623039336631643133306661323432313663
+63316263353730613437393230633738346334653530663531306134316535663334316566623261
+66663539386363366335353265623939316636303938393131346434343565623266616637636332
+33616233636137613339343231386631636235346631386138356234386266326630346164343164
+37393063316633663863343830346466383636366234376466326366663239316438646366643635
+63326566616131333532353932643434386632616332333364613634376162323239633963303234
+33616132643031393039313933646434376232343862313736326639373436383466343336616535
+30323161343335646235663935636563336663306566316563356361386464373334313063656134
+35343866386234626565363866373534376364633431383062353439373566323266326662616263
+37376362366438353636636530353965646365316138303936373631623064666236616438373463
+65303431333738333236636336323037383739633839653663353463653638646635626265613430
+37616261386637643230636336303861616336646532306535326537623434383532623637666536
+37366566646466356432316461356538633834306364396338333931306231373530303462393465
+61326264616530636464343335623132376139653737636561313039353264376131636161633830
+39333737613433643962633862653434303165343232633765626335626338666232396264316530
+33373135633639366531366632643439306339393064343530666431336333643132623061306162
+30613438633232626163656134353739636463326538376338633164343166363631383336316266
+62653732643030353032353936646162626163636233616531646231636334323366626534636536
+65373033616139376466366662306566663363393164356638383431653437663366643866333263
+39306533306661363138303566656161633365386436623565376235313433356236636638633134
+63353233353030393833653363626663336561326437383161316531373364663666306330343063
+31323663636136396566643831633666323639303230636664393162366638626437343562643464
+39316239373338316136613839326663626462356138313839656239613835396638663037656232
+33393138363364353166663430663031383330356234376632333938353965376337346563393531
+63633065663332306535306466383165646663313938623434373831616431656237386363643637
+62313861643636353734626136366330376230636235663234303764656662373539333830653535
+31663030313334376531366631636636306265643235313635363736333334393239353262323238
+38326662363538636634303730303437336237666335666661366332333639663662383334313661
+30323836646630343062353562336334396235326235616536643835373163306235653562626532
+39373337333939666336333736366337653736633934343866393836316565373965613865386339
+35313762313436666162316534383462333961653932643666663866633961613961353962653962
+39326434646236393164383832613336386239663836396334653534616334346238343363393364
+66656330623839323134623939653761323561643632663234306333643662346364643834646362
+36346338656564633231303337333832663061303961396631653432346439623130623866356561
+34666465336362383833336262303637303964383636643231656565616361306666613732333734
+39303439336163383037663762316531343533343562383664626463623632626334303931626231
+35643665333161303564373662313462393732623663343530666430393636356166383636343761
+30613633383438613262646430623562363864363935353764613064636530616537613339616538
+65386262663236356237353834393331353633653462353034306164643334646364383533646632
+31636538376462303532633762373164383431613538663234396236313761323666613238646132
+62313832663335633430666632616466313930383236653231343035623233373538616562373834
+32323566353235613430643630313161353830623263313931323135633134393833376661353037
+36306234376532653232316133336434396463616536393738633439313036646364326133396633
+61393538636137376436636431356162366435626665326239646664363233383030353635333865
+31396161613062626561376337653262643861353061633863616633623737323134653334636663
+66376465386662656362313466356264323062366130336632323333373935626535303533633766
+65336636646338623039363764306634366438656137303238646361666132636464313338363262
+35613936386534656134633266356437663733346533653831386336343061336365373330363164
+39313038356163656233343834346632643435393764326166376639383563633637626464353131
+33653865326262626461653664616532343436376466666566313961343462666633653736626235
+30336135613338333166323339316363623339346566353132313165353436353465643438353238
+65646262666135616638323065316630646538383038663635646561343235366264643739373038
+33376361653438306137373632306130303733363535386664613332666662663565626266346239
+65333461653632343364323039613461336130383831376437363066656461386566363366316236
+31326630313339333732356634363162316261336666633766636665643463613061313263386261
+37376434616431383132633161633130306638643833366434323339353838303933363234663137
+62663666306534623731366333383963656638653836323864326431303334646535313532656137
+30636266353332626461636639353235303638656431653361366633356361623330393136643539
+33366635646438313432396235386630386537336235383637326632303463333664656634613661
+64323361666430343735623565623532353161653763313965666338636462313463346233666462
+65656161646531353134323832633936636533363761376131636536636661316433383837663065
+34653766636466636336643231636463623638373131633838343538383961383334613631303936
+37353734363132306534633531346261623239616338613034656335363033333164393938633430
+61663239316233643462333739626634303664353531656165303432353061306136333764373832
+63343438633063386464663734643064666330393036303333663764663736303664653239336237
+65353534633731366232333232613133633661653764303036363063323966353965343365366639
+39396161383966343264646362636632303235376165663137343436346134333930656161623632
+34636565306666376433353532396663383339333534343766333363303232343530663431386635
+30346637656665396163613232316365353537633062316532656661326362336230323331313230
+61633563353064333965636437643162613665316230633438666133663465663566373266353639
+36376264303666663431643963323731356531343234313337363533663862386366636565646231
+31346165663236336335623661356432373431366332633933313536633238353435376631396433
+31383835323934323434383965383531626366653437316135643036336339316635323534393137
+65366465346666313838383137346238646666383033346237386333626562313238333730323130
+65316530326639663661346362663862303862316161623463376536356265643462306466653138
+66306361353536386662343162353930383865666433623030313830623735353731363562623162
+39643463646237336638653136383663346131626264653861326164646336656363343639383064
+64313965636434663762646261386336626533643739343063323339343333313739343634613937
+34383839336338383736386561616166386634333533616530383635346262643239386161643136
+38323437643839323832623162636532376338346636666266663538653863633735613632386431
+65363462313538396335633033633966396339626632396430353461343864323463653162393666
+39643566613836616135323439636165626338333439373738313130666138343430386431353636
+33646134623134363462383765643365626435366433363830653836653731333731343161643166
+39653838373632636131656333306162633233313765316138613136336235343137343037656435
+62363065326330343663343766666165356662613133373634633036316435626562366165643035
+65636463356430666266343264396531636266363065303137636332626435616264353232383633
+61666635356531336632623338633230336166626261623635613439366162383035653437383130
+62386635653864306334613861383433353562363562306633653866633531663266356561363930
+35323163616162353163323330636330623865633636343264353939356137336531323964346261
+32363133613232656661653863306138393730386265353366393633373231323835303736306332
+62353039313539663936393530643063633936643162373933303665346337643133343866323831
+31386131646632323433613931623331316236353866363062343632613163363366383633393736
+35633830656366373030623431336138346237663336333733336136363735643962333261323135
+37356633653331343166323534393465316465383731633536343836653362663839376439343861
+39373661326336323535373534306362326533663464306462303533306137623434
diff --git a/resources/tools/testbed-setup/ansible/vpp_device.yaml b/resources/tools/testbed-setup/ansible/vpp_device.yaml
index 8a99166f04..ac42b8cafe 100644
--- a/resources/tools/testbed-setup/ansible/vpp_device.yaml
+++ b/resources/tools/testbed-setup/ansible/vpp_device.yaml
@@ -6,17 +6,25 @@
become: yes
become_user: root
roles:
+ - role: user_add
+ tags: user_add
- role: baremetal
tags: baremetal
- role: common
tags: common
- role: docker
tags: docker
+ - role: nomad
+ tags: nomad
+ - role: consul
+ tags: consul
- role: vpp_device
tags: vpp_device
- role: kernel_vm
tags: kernel_vm
- - role: nomad
- tags: nomad
+ - role: csit_sut_image
+ tags: csit_sut_image
+ - role: csit_shim_image
+ tags: csit_shim_image
- role: cleanup
tags: cleanup
diff --git a/terraform-ci-infra/1n_nmd/alertmanager/conf/nomad/alertmanager.hcl b/terraform-ci-infra/1n_nmd/alertmanager/conf/nomad/alertmanager.hcl
new file mode 100644
index 0000000000..b8a9df4985
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/alertmanager/conf/nomad/alertmanager.hcl
@@ -0,0 +1,333 @@
+job "${job_name}" {
+ # The "region" parameter specifies the region in which to execute the job.
+ # If omitted, this inherits the default region name of "global".
+ # region = "global"
+ #
+ # The "datacenters" parameter specifies the list of datacenters which should
+ # be considered when placing this task. This must be provided.
+ datacenters = "${datacenters}"
+
+ # The "type" parameter controls the type of job, which impacts the scheduler's
+ # decision on placement. This configuration is optional and defaults to
+ # "service". For a full list of job types and their differences, please see
+ # the online documentation.
+ #
+ # For more information, please see the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/jobspec/schedulers
+ #
+ type = "service"
+
+ update {
+ # The "max_parallel" parameter specifies the maximum number of updates to
+ # perform in parallel. In this case, this specifies to update a single task
+ # at a time.
+ max_parallel = 1
+
+ health_check = "checks"
+
+ # The "min_healthy_time" parameter specifies the minimum time the allocation
+ # must be in the healthy state before it is marked as healthy and unblocks
+ # further allocations from being updated.
+ min_healthy_time = "10s"
+
+ # The "healthy_deadline" parameter specifies the deadline in which the
+ # allocation must be marked as healthy after which the allocation is
+ # automatically transitioned to unhealthy. Transitioning to unhealthy will
+ # fail the deployment and potentially roll back the job if "auto_revert" is
+ # set to true.
+ healthy_deadline = "3m"
+
+ # The "progress_deadline" parameter specifies the deadline in which an
+ # allocation must be marked as healthy. The deadline begins when the first
+ # allocation for the deployment is created and is reset whenever an allocation
+ # as part of the deployment transitions to a healthy state. If no allocation
+ # transitions to the healthy state before the progress deadline, the
+ # deployment is marked as failed.
+ progress_deadline = "10m"
+
+%{ if use_canary }
+ # The "canary" parameter specifies that changes to the job that would result
+ # in destructive updates should create the specified number of canaries
+ # without stopping any previous allocations. Once the operator determines the
+ # canaries are healthy, they can be promoted which unblocks a rolling update
+ # of the remaining allocations at a rate of "max_parallel".
+ #
+ # Further, setting "canary" equal to the count of the task group allows
+ # blue/green deployments. When the job is updated, a full set of the new
+ # version is deployed and upon promotion the old version is stopped.
+ canary = 1
+
+ # Specifies if the job should auto-promote to the canary version when all
+ # canaries become healthy during a deployment. Defaults to false which means
+ # canaries must be manually updated with the nomad deployment promote
+ # command.
+ auto_promote = true
+
+ # The "auto_revert" parameter specifies if the job should auto-revert to the
+ # last stable job on deployment failure. A job is marked as stable if all the
+ # allocations as part of its deployment were marked healthy.
+ auto_revert = true
+%{ endif }
+ }
+
+ # The "group" stanza defines a series of tasks that should be co-located on
+ # the same Nomad client. Any task within a group will be placed on the same
+ # client.
+ #
+ # For more information and examples on the "group" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/group
+ #
+ group "prod-group1-${service_name}" {
+ # The "count" parameter specifies the number of the task groups that should
+ # be running under this group. This value must be non-negative and defaults
+ # to 1.
+ count = ${group_count}
+
+ # The constraint allows restricting the set of eligible nodes. Constraints
+ # may filter on attributes or client metadata.
+ #
+ # For more information and examples on the "volume" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/constraint
+ #
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "!="
+ value = "arm64"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/task
+ #
+ task "prod-task1-${service_name}" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "exec"
+
+ %{ if use_vault_provider }
+ vault {
+ policies = "${vault_kv_policy_name}"
+ }
+ %{ endif }
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/alertmanager-${version}.linux-amd64/alertmanager"
+ args = [
+ "--config.file=secrets/alertmanager.yml"
+ ]
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # For more information and examples on the "artifact" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${url}"
+ }
+
+ # The "template" stanza instructs Nomad to manage a template, such as
+ # a configuration file or script. This template can optionally pull data
+ # from Consul or Vault to populate runtime configuration data.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/template
+ #
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/alertmanager.yml"
+ left_delimiter = "{{{"
+ right_delimiter = "}}}"
+ data = <<EOH
+global:
+ # The API URL to use for Slack notifications.
+ slack_api_url: 'https://hooks.slack.com/services/${slack_api_key}'
+
+# The directory from which notification templates are read.
+templates:
+- '/etc/alertmanager/template/*.tmpl'
+
+#tls_config:
+# # CA certificate to validate the server certificate with.
+# ca_file: <filepath> ]
+#
+# # Certificate and key files for client cert authentication to the server.
+# cert_file: <filepath>
+# key_file: <filepath>
+#
+# # ServerName extension to indicate the name of the server.
+# # http://tools.ietf.org/html/rfc4366#section-3.1
+# server_name: <string>
+#
+# # Disable validation of the server certificate.
+# insecure_skip_verify: true
+
+# The root route on which each incoming alert enters.
+route:
+ receiver: '${default_receiver}'
+
+ # The labels by which incoming alerts are grouped together. For example,
+ # multiple alerts coming in for cluster=A and alertname=LatencyHigh would
+ # be batched into a single group.
+ #
+ # To aggregate by all possible labels use '...' as the sole label name.
+ # This effectively disables aggregation entirely, passing through all
+ # alerts as-is. This is unlikely to be what you want, unless you have
+ # a very low alert volume or your upstream notification system performs
+ # its own grouping. Example: group_by: [...]
+ group_by: ['alertname', 'cluster', 'service']
+
+ # When a new group of alerts is created by an incoming alert, wait at
+ # least 'group_wait' to send the initial notification.
+ # This way ensures that you get multiple alerts for the same group that start
+ # firing shortly after another are batched together on the first
+ # notification.
+ group_wait: 30s
+
+ # When the first notification was sent, wait 'group_interval' to send a batch
+ # of new alerts that started firing for that group.
+ group_interval: 5m
+
+ # If an alert has successfully been sent, wait 'repeat_interval' to
+ # resend them.
+ repeat_interval: 3h
+
+ # All the above attributes are inherited by all child routes and can
+ # overwritten on each.
+ # The child route trees.
+ routes:
+ # This routes performs a regular expression match on alert labels to
+ # catch alerts that are related to a list of services.
+ - match_re:
+ service: .*
+ receiver: ${default_receiver}
+ # The service has a sub-route for critical alerts, any alerts
+ # that do not match, i.e. severity != critical, fall-back to the
+ # parent node and are sent to 'team-X-mails'
+ routes:
+ - match:
+ severity: critical
+ receiver: '${default_receiver}'
+
+# Inhibition rules allow to mute a set of alerts given that another alert is
+# firing.
+# We use this to mute any warning-level notifications if the same alert is
+# already critical.
+inhibit_rules:
+- source_match:
+ severity: 'critical'
+ target_match:
+ severity: 'warning'
+ # Apply inhibition if the alertname is the same.
+ # CAUTION:
+ # If all label names listed in `equal` are missing
+ # from both the source and target alerts,
+ # the inhibition rule will apply!
+ equal: ['alertname', 'cluster', 'service']
+
+receivers:
+- name: '${default_receiver}'
+ slack_configs:
+ - channel: '#${slack_channel}'
+ send_resolved: true
+ icon_url: https://avatars3.githubusercontent.com/u/3380462
+ title: |-
+ [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}
+ {{- if gt (len .CommonLabels) (len .GroupLabels) -}}
+ {{" "}}(
+ {{- with .CommonLabels.Remove .GroupLabels.Names }}
+ {{- range $index, $label := .SortedPairs -}}
+ {{ if $index }}, {{ end }}
+ {{- $label.Name }}="{{ $label.Value -}}"
+ {{- end }}
+ {{- end -}}
+ )
+ {{- end }}
+ text: >-
+ {{ range .Alerts -}}
+ *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}
+
+ *Description:* {{ .Annotations.description }}
+
+ *Details:*
+ {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
+ {{ end }}
+ {{ end }}
+EOH
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${service_name}"
+ port = "${service_name}"
+ tags = [ "${service_name}$${NOMAD_ALLOC_INDEX}" ]
+ check {
+ name = "Alertmanager Check Live"
+ type = "http"
+ path = "/-/healthy"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # For more information and examples on the "resources" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = ${cpu}
+ memory = ${mem}
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${service_name}" {
+ static = ${port}
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/alertmanager/main.tf b/terraform-ci-infra/1n_nmd/alertmanager/main.tf
new file mode 100644
index 0000000000..8307601669
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/alertmanager/main.tf
@@ -0,0 +1,37 @@
+locals {
+ datacenters = join(",", var.nomad_datacenters)
+
+ alertmanager_url = join("",
+ [
+ "https://github.com",
+ "/prometheus/alertmanager/releases/download/",
+ "v${var.alertmanager_version}/",
+ "alertmanager-${var.alertmanager_version}.linux-amd64.tar.gz"
+ ]
+ )
+}
+
+data "template_file" "nomad_job_alertmanager" {
+ template = file("${path.module}/conf/nomad/alertmanager.hcl")
+ vars = {
+ datacenters = local.datacenters
+ url = local.alertmanager_url
+ job_name = var.alertmanager_job_name
+ use_canary = var.alertmanager_use_canary
+ group_count = var.alertmanager_group_count
+ service_name = var.alertmanager_service_name
+ use_vault_provider = var.alertmanager_vault_secret.use_vault_provider
+ version = var.alertmanager_version
+ cpu = var.alertmanager_cpu
+ mem = var.alertmanager_mem
+ port = var.alertmanager_port
+ slack_api_key = var.alertmanager_slack_api_key
+ slack_channel = var.alertmanager_slack_channel
+ default_receiver = var.alertmanager_default_receiver
+ }
+}
+
+resource "nomad_job" "nomad_job_alertmanager" {
+ jobspec = data.template_file.nomad_job_alertmanager.rendered
+ detach = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/alertmanager/variables.tf b/terraform-ci-infra/1n_nmd/alertmanager/variables.tf
new file mode 100644
index 0000000000..152530b96d
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/alertmanager/variables.tf
@@ -0,0 +1,84 @@
+# Nomad
+variable "nomad_datacenters" {
+ description = "Nomad data centers"
+ type = list(string)
+ default = [ "dc1" ]
+}
+
+# Alermanager
+variable "alertmanager_job_name" {
+ description = "Job name"
+ type = string
+ default = "alertmanager"
+}
+
+variable "alertmanager_group_count" {
+ description = "Number of group instances"
+ type = number
+ default = 1
+}
+
+variable "alertmanager_service_name" {
+ description = "Service name"
+ type = string
+ default = "alertmanager"
+}
+
+variable "alertmanager_version" {
+ description = "Version"
+ type = string
+ default = "0.21.0"
+}
+
+variable "alertmanager_use_canary" {
+ description = "Uses canary deployment"
+ type = bool
+ default = false
+}
+
+variable "alertmanager_vault_secret" {
+ description = "Set of properties to be able to fetch secret from vault"
+ type = object({
+ use_vault_provider = bool,
+ vault_kv_policy_name = string,
+ vault_kv_path = string,
+ vault_kv_field_access_key = string,
+ vault_kv_field_secret_key = string
+ })
+}
+
+variable "alertmanager_cpu" {
+ description = "CPU allocation"
+ type = number
+ default = 1000
+}
+
+variable "alertmanager_mem" {
+ description = "RAM allocation"
+ type = number
+ default = 1024
+}
+
+variable "alertmanager_port" {
+ description = "TCP allocation"
+ type = number
+ default = 9093
+}
+
+variable "alertmanager_default_receiver" {
+ description = "Alertmanager default receiver"
+ type = string
+ default = "default-receiver"
+}
+
+variable "alertmanager_slack_api_key" {
+ description = "Alertmanager slack API key"
+ type = string
+ default = "XXXXXXXXX/XXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
+}
+
+variable "alertmanager_slack_channel" {
+ description = "Alertmanager slack channel"
+ type = string
+ default = "slack-channel"
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/exporter/conf/nomad/exporter.hcl b/terraform-ci-infra/1n_nmd/exporter/conf/nomad/exporter.hcl
new file mode 100644
index 0000000000..4fd0768ae7
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/exporter/conf/nomad/exporter.hcl
@@ -0,0 +1,587 @@
+job "${job_name}" {
+ # The "region" parameter specifies the region in which to execute the job.
+ # If omitted, this inherits the default region name of "global".
+ # region = "global"
+ #
+ # The "datacenters" parameter specifies the list of datacenters which should
+ # be considered when placing this task. This must be provided.
+ datacenters = "${datacenters}"
+
+ # The "type" parameter controls the type of job, which impacts the scheduler's
+ # decision on placement. This configuration is optional and defaults to
+ # "service". For a full list of job types and their differences, please see
+ # the online documentation.
+ #
+ # https://www.nomadproject.io/docs/jobspec/schedulers
+ #
+ type = "system"
+
+ update {
+ # The "max_parallel" parameter specifies the maximum number of updates to
+ # perform in parallel. In this case, this specifies to update a single task
+ # at a time.
+ max_parallel = 1
+
+ health_check = "checks"
+
+ # The "min_healthy_time" parameter specifies the minimum time the allocation
+ # must be in the healthy state before it is marked as healthy and unblocks
+ # further allocations from being updated.
+ min_healthy_time = "10s"
+
+ # The "healthy_deadline" parameter specifies the deadline in which the
+ # allocation must be marked as healthy after which the allocation is
+ # automatically transitioned to unhealthy. Transitioning to unhealthy will
+ # fail the deployment and potentially roll back the job if "auto_revert" is
+ # set to true.
+ healthy_deadline = "3m"
+
+ # The "progress_deadline" parameter specifies the deadline in which an
+ # allocation must be marked as healthy. The deadline begins when the first
+ # allocation for the deployment is created and is reset whenever an allocation
+ # as part of the deployment transitions to a healthy state. If no allocation
+ # transitions to the healthy state before the progress deadline, the
+ # deployment is marked as failed.
+ progress_deadline = "10m"
+
+%{ if use_canary }
+ # The "canary" parameter specifies that changes to the job that would result
+ # in destructive updates should create the specified number of canaries
+ # without stopping any previous allocations. Once the operator determines the
+ # canaries are healthy, they can be promoted which unblocks a rolling update
+ # of the remaining allocations at a rate of "max_parallel".
+ #
+ # Further, setting "canary" equal to the count of the task group allows
+ # blue/green deployments. When the job is updated, a full set of the new
+ # version is deployed and upon promotion the old version is stopped.
+ canary = 1
+
+ # Specifies if the job should auto-promote to the canary version when all
+ # canaries become healthy during a deployment. Defaults to false which means
+ # canaries must be manually updated with the nomad deployment promote
+ # command.
+ auto_promote = true
+
+ # The "auto_revert" parameter specifies if the job should auto-revert to the
+ # last stable job on deployment failure. A job is marked as stable if all the
+ # allocations as part of its deployment were marked healthy.
+ auto_revert = true
+%{ endif }
+ }
+
+ # The "group" stanza defines a series of tasks that should be co-located on
+ # the same Nomad client. Any task within a group will be placed on the same
+ # client.
+ #
+ # https://www.nomadproject.io/docs/job-specification/group
+ #
+ group "prod-group1-exporter-amd64" {
+ # The constraint allows restricting the set of eligible nodes. Constraints
+ # may filter on attributes or client metadata.
+ #
+ # https://www.nomadproject.io/docs/job-specification/constraint
+ #
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "!="
+ value = "arm64"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # https://www.nomadproject.io/docs/job-specification/task
+ #
+ task "prod-task1-${node_service_name}-amd64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "raw_exec"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/node_exporter-${node_version}.linux-amd64/node_exporter"
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${node_url_amd64}"
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${node_service_name}"
+ port = "${node_service_name}"
+ check {
+ name = "Node Exporter Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${node_service_name}" {
+ static = ${node_port}
+ }
+ }
+ }
+ }
+ task "prod-task2-${blackbox_service_name}-amd64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "exec"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/blackbox_exporter-${blackbox_version}.linux-amd64/blackbox_exporter"
+ args = [
+ "--config.file=secrets/blackbox.yml"
+ ]
+ }
+
+ # The "template" stanza instructs Nomad to manage a template, such as
+ # a configuration file or script. This template can optionally pull data
+ # from Consul or Vault to populate runtime configuration data.
+ #
+ # https://www.nomadproject.io/docs/job-specification/template
+ #
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/blackbox.yml"
+ data = <<EOH
+modules:
+ http_2xx:
+ prober: http
+ timeout: 5s
+ http:
+ valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
+ no_follow_redirects: false
+ fail_if_ssl: false
+ fail_if_not_ssl: true
+ tls_config:
+ insecure_skip_verify: false
+ preferred_ip_protocol: "ip4"
+ icmp_v4:
+ prober: icmp
+ timeout: 5s
+ icmp:
+ preferred_ip_protocol: "ip4"
+ dns_udp:
+ prober: dns
+ timeout: 5s
+ dns:
+ query_name: "jenkins.fd.io"
+ query_type: "A"
+ valid_rcodes:
+ - NOERROR
+EOH
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${blackbox_url_amd64}"
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${blackbox_service_name}"
+ port = "${blackbox_service_name}"
+ tags = [ "${blackbox_service_name}$${NOMAD_ALLOC_INDEX}" ]
+ check {
+ name = "Blackbox Exporter Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${blackbox_service_name}" {
+ static = ${blackbox_port}
+ }
+ }
+ }
+ }
+
+ task "prod-task3-${cadvisor_service_name}-amd64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "docker"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ image = "${cadvisor_image}"
+ volumes = [
+ "/:/rootfs:ro",
+ "/var/run:/var/run:rw",
+ "/sys:/sys:ro",
+ "/var/lib/docker/:/var/lib/docker:ro",
+ "/cgroup:/cgroup:ro"
+ ]
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${cadvisor_service_name}"
+ port = "${cadvisor_service_name}"
+ check {
+ name = "cAdvisor Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${cadvisor_service_name}" {
+ static = ${cadvisor_port}
+ }
+ }
+ }
+ }
+ }
+
+ group "prod-group1-exporter-arm64" {
+ # The constraint allows restricting the set of eligible nodes. Constraints
+ # may filter on attributes or client metadata.
+ #
+ # https://www.nomadproject.io/docs/job-specification/constraint
+ #
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "=="
+ value = "arm64"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # https://www.nomadproject.io/docs/job-specification/task
+ #
+ task "prod-task1-${node_service_name}-arm64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "raw_exec"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/node_exporter-${node_version}.linux-arm64/node_exporter"
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${node_url_arm64}"
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${node_service_name}"
+ port = "${node_service_name}"
+ check {
+ name = "Node Exporter Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${node_service_name}" {
+ static = ${node_port}
+ }
+ }
+ }
+ }
+
+ task "prod-task2-${blackbox_service_name}-arm64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "exec"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/blackbox_exporter-${blackbox_version}.linux-arm64/blackbox_exporter"
+ args = [
+ "--config.file=secrets/blackbox.yml"
+ ]
+ }
+
+ # The "template" stanza instructs Nomad to manage a template, such as
+ # a configuration file or script. This template can optionally pull data
+ # from Consul or Vault to populate runtime configuration data.
+ #
+ # https://www.nomadproject.io/docs/job-specification/template
+ #
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/blackbox.yml"
+ data = <<EOH
+modules:
+ http_2xx:
+ prober: http
+ timeout: 5s
+ http:
+ valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
+ no_follow_redirects: false
+ fail_if_ssl: false
+ fail_if_not_ssl: true
+ tls_config:
+ insecure_skip_verify: false
+ preferred_ip_protocol: "ip4"
+ icmp_v4:
+ prober: icmp
+ timeout: 5s
+ icmp:
+ preferred_ip_protocol: "ip4"
+ dns_udp:
+ prober: dns
+ timeout: 5s
+ dns:
+ query_name: "jenkins.fd.io"
+ query_type: "A"
+ valid_rcodes:
+ - NOERROR
+EOH
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${blackbox_url_arm64}"
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${blackbox_service_name}"
+ port = "${blackbox_service_name}"
+ tags = [ "${blackbox_service_name}$${NOMAD_ALLOC_INDEX}" ]
+ check {
+ name = "Blackbox Exporter Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${blackbox_service_name}" {
+ static = ${blackbox_port}
+ }
+ }
+ }
+ }
+
+ task "prod-task3-${cadvisor_service_name}-arm64" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "docker"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ # There is currently no official release for arm yet...using community.
+ image = "zcube/cadvisor:latest"
+ volumes = [
+ "/:/rootfs:ro",
+ "/var/run:/var/run:rw",
+ "/sys:/sys:ro",
+ "/var/lib/docker/:/var/lib/docker:ro",
+ "/cgroup:/cgroup:ro"
+ ]
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${cadvisor_service_name}"
+ port = "${cadvisor_service_name}"
+ check {
+ name = "cAdvisor Check Live"
+ type = "http"
+ path = "/metrics"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = 500
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${cadvisor_service_name}" {
+ static = ${cadvisor_port}
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/exporter/main.tf b/terraform-ci-infra/1n_nmd/exporter/main.tf
new file mode 100644
index 0000000000..35eb95b071
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/exporter/main.tf
@@ -0,0 +1,64 @@
+locals {
+ datacenters = join(",", var.nomad_datacenters)
+
+ node_url_amd64 = join("",
+ [
+ "https://github.com",
+ "/prometheus/node_exporter/releases/download/",
+ "v${var.node_version}/",
+ "node_exporter-${var.node_version}.linux-amd64.tar.gz"
+ ]
+ )
+ node_url_arm64 = join("",
+ [
+ "https://github.com",
+ "/prometheus/node_exporter/releases/download/",
+ "v${var.node_version}/",
+ "node_exporter-${var.node_version}.linux-arm64.tar.gz"
+ ]
+ )
+
+ blackbox_url_amd64 = join("",
+ [
+ "https://github.com",
+ "/prometheus/blackbox_exporter/releases/download/",
+ "v${var.blackbox_version}/",
+ "blackbox_exporter-${var.blackbox_version}.linux-amd64.tar.gz"
+ ]
+ )
+ blackbox_url_arm64 = join("",
+ [
+ "https://github.com",
+ "/prometheus/blackbox_exporter/releases/download/",
+ "v${var.blackbox_version}/",
+ "blackbox_exporter-${var.blackbox_version}.linux-arm64.tar.gz"
+ ]
+ )
+}
+
+data "template_file" "nomad_job_exporter" {
+ template = file("${path.module}/conf/nomad/exporter.hcl")
+ vars = {
+ datacenters = local.datacenters
+ job_name = var.exporter_job_name
+ use_canary = var.exporter_use_canary
+ node_url_amd64 = local.node_url_amd64
+ node_url_arm64 = local.node_url_arm64
+ node_version = var.node_version
+ node_service_name = var.node_service_name
+ node_port = var.node_port
+ blackbox_url_amd64 = local.blackbox_url_amd64
+ blackbox_url_arm64 = local.blackbox_url_arm64
+ blackbox_version = var.blackbox_version
+ blackbox_service_name = var.blackbox_service_name
+ blackbox_port = var.blackbox_port
+ cadvisor_image = var.cadvisor_image
+ cadvisor_service_name = var.cadvisor_service_name
+ cadvisor_port = var.cadvisor_port
+ }
+}
+
+resource "nomad_job" "nomad_job_exporter" {
+ jobspec = data.template_file.nomad_job_exporter.rendered
+ detach = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/exporter/variables.tf b/terraform-ci-infra/1n_nmd/exporter/variables.tf
new file mode 100644
index 0000000000..bfa8bd37ac
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/exporter/variables.tf
@@ -0,0 +1,76 @@
+# Nomad
+variable "nomad_datacenters" {
+ description = "Nomad data centers"
+ type = list(string)
+ default = [ "dc1" ]
+}
+
+# Exporter
+variable "exporter_job_name" {
+ description = "Exporter job name"
+ type = string
+ default = "exporter"
+}
+
+variable "exporter_use_canary" {
+ description = "Uses canary deployment"
+ type = bool
+ default = false
+}
+
+# Node Exporter
+variable "node_service_name" {
+ description = "Node exporter service name"
+ type = string
+ default = "nodeexporter"
+}
+
+variable "node_version" {
+ description = "Node exporter version"
+ type = string
+ default = "1.0.1"
+}
+
+variable "node_port" {
+ description = "Node exporter TCP allocation"
+ type = number
+ default = 9100
+}
+
+# Blackbox Exporter
+variable "blackbox_service_name" {
+ description = "Blackbox exporter service name"
+ type = string
+ default = "blackboxexporter"
+}
+
+variable "blackbox_version" {
+ description = "Blackbox exporter version"
+ type = string
+ default = "0.18.0"
+}
+
+variable "blackbox_port" {
+ description = "Blackbox exporter TCP allocation"
+ type = number
+ default = 9115
+}
+
+# cAdvisor Exporter
+variable "cadvisor_service_name" {
+ description = "cAdvisor exporter service name"
+ type = string
+ default = "cadvisorexporter"
+}
+
+variable "cadvisor_image" {
+ description = "cAdvisor exporter docker image"
+ type = string
+ default = "gcr.io/cadvisor/cadvisor:v0.38.7"
+}
+
+variable "cadvisor_port" {
+ description = "cAdvisor exporter TCP allocation"
+ type = number
+ default = 8080
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_http.json b/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_http.json
new file mode 100644
index 0000000000..f9df1b239e
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_http.json
@@ -0,0 +1,1030 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "signcl-prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.2.2"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "description": "Prometheus Blackbox Exporter Overview",
+ "editable": true,
+ "gnetId": 7587,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1534695504413,
+ "links": [],
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 138,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "probe_duration_seconds{instance=~\"$target\"}",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "legendFormat": "{{ instance }}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Global Probe Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "id": 15,
+ "panels": [],
+ "repeat": "target",
+ "title": "$target status",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 10,
+ "x": 4,
+ "y": 9
+ },
+ "id": 25,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "probe_http_duration_seconds{instance=~\"$target\"}",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "legendFormat": "{{ phase }}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "HTTP Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 10,
+ "x": 14,
+ "y": 9
+ },
+ "id": 17,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "probe_duration_seconds{instance=~\"$target\"}",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "legendFormat": "seconds",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Probe Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 0,
+ "y": 11
+ },
+ "id": 20,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "h",
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "probe_http_status_code{instance=~\"$target\"}",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "201, 399",
+ "title": "HTTP Status Code",
+ "transparent": false,
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "YES",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 0,
+ "y": 13
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "probe_http_version{instance=~\"$target\"}",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "HTTP Version",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "#d44a3a",
+ "rgba(237, 129, 40, 0.89)",
+ "#299c46"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 0,
+ "y": 15
+ },
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "v",
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "probe_http_ssl{instance=~\"$target\"}",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "0, 1",
+ "title": "SSL",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "YES",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "NO",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "#d44a3a",
+ "rgba(237, 129, 40, 0.89)",
+ "#299c46"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "format": "dtdurations",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 10,
+ "x": 4,
+ "y": 15
+ },
+ "id": 19,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "minSpan": 3,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "h",
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "probe_ssl_earliest_cert_expiry{instance=~\"$target\"} - time()",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "0,1209600",
+ "timeFrom": null,
+ "title": "SSL Expiry",
+ "transparent": false,
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "YES",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "NO",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "s",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 5,
+ "x": 14,
+ "y": 15
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "avg(probe_duration_seconds{instance=~\"$target\"})",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Average Probe Duration",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "s",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 5,
+ "x": 19,
+ "y": 15
+ },
+ "id": 24,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "repeat": null,
+ "repeatDirection": "h",
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "avg(probe_dns_lookup_time_seconds{instance=~\"$target\"})",
+ "format": "time_series",
+ "interval": "$interval",
+ "intervalFactor": 1,
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Average DNS Lookup",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "refresh": "10s",
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [
+ "blackbox",
+ "prometheus"
+ ],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "auto": true,
+ "auto_count": 10,
+ "auto_min": "10s",
+ "current": {
+ "text": "10s",
+ "value": "10s"
+ },
+ "hide": 0,
+ "label": "Interval",
+ "name": "interval",
+ "options": [
+ {
+ "selected": false,
+ "text": "auto",
+ "value": "$__auto_interval_interval"
+ },
+ {
+ "selected": false,
+ "text": "5s",
+ "value": "5s"
+ },
+ {
+ "selected": true,
+ "text": "10s",
+ "value": "10s"
+ },
+ {
+ "selected": false,
+ "text": "30s",
+ "value": "30s"
+ },
+ {
+ "selected": false,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ },
+ {
+ "selected": false,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "14d",
+ "value": "14d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ }
+ ],
+ "query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d",
+ "refresh": 2,
+ "type": "interval"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "target",
+ "options": [],
+ "query": "label_values(probe_success, instance)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "HTTP Exporter",
+ "version": 1
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_icmp.json b/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_icmp.json
new file mode 100644
index 0000000000..df30506348
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/blackbox_exporter_icmp.json
@@ -0,0 +1,368 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "localhost",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "6.5.2"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "heatmap",
+ "name": "Heatmap",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": 12412,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1591284149575,
+ "links": [],
+ "panels": [
+ {
+ "cards": {
+ "cardPadding": null,
+ "cardRound": null
+ },
+ "color": {
+ "cardColor": "#b4ff00",
+ "colorScale": "sqrt",
+ "colorScheme": "interpolateRdYlGn",
+ "exponent": 0.5,
+ "mode": "spectrum"
+ },
+ "dataFormat": "tsbuckets",
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "heatmap": {},
+ "hideZeroBuckets": false,
+ "highlightCards": true,
+ "id": 7,
+ "legend": {
+ "show": true
+ },
+ "options": {},
+ "reverseYBuckets": true,
+ "targets": [
+ {
+ "expr": "sum(probe_icmp_duration_seconds{phase=\"rtt\"}) by (instance)",
+ "legendFormat": "{{instance}}",
+ "refId": "A"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "ICMP RTT",
+ "tooltip": {
+ "show": true,
+ "showHistogram": true
+ },
+ "type": "heatmap",
+ "xAxis": {
+ "show": true
+ },
+ "xBucketNumber": null,
+ "xBucketSize": null,
+ "yAxis": {
+ "decimals": null,
+ "format": "s",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true,
+ "splitFactor": null
+ },
+ "yBucketBound": "middle",
+ "yBucketNumber": null,
+ "yBucketSize": null
+ },
+ {
+ "cards": {
+ "cardPadding": null,
+ "cardRound": null
+ },
+ "color": {
+ "cardColor": "#b4ff00",
+ "colorScale": "sqrt",
+ "colorScheme": "interpolateRdYlGn",
+ "exponent": 0.5,
+ "mode": "spectrum"
+ },
+ "dataFormat": "tsbuckets",
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 8
+ },
+ "heatmap": {},
+ "hideZeroBuckets": false,
+ "highlightCards": true,
+ "id": 8,
+ "legend": {
+ "show": true
+ },
+ "options": {},
+ "reverseYBuckets": true,
+ "targets": [
+ {
+ "expr": "1-avg_over_time(probe_success{instance=~\"$instance\"}[$__interval])",
+ "format": "time_series",
+ "hide": false,
+ "legendFormat": "{{instance}}",
+ "refId": "A"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "ICMP packet loss",
+ "tooltip": {
+ "show": true,
+ "showHistogram": true
+ },
+ "type": "heatmap",
+ "xAxis": {
+ "show": true
+ },
+ "xBucketNumber": null,
+ "xBucketSize": null,
+ "yAxis": {
+ "decimals": null,
+ "format": "percentunit",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true,
+ "splitFactor": null
+ },
+ "yBucketBound": "middle",
+ "yBucketNumber": null,
+ "yBucketSize": null
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "description": "This uses the blackbox exporter, which does not expose packet loss, for example. It could be improved with https://github.com/SuperQ/smokeping_prober because it also keeps track of lost samples (https://github.com/SuperQ/smokeping_prober/issues/24). Unfortunately, that still won't make graphs as nice as smokeping, because each probe only keeps one sample, instead of doing multiple like smokeping does (https://github.com/SuperQ/smokeping_prober/issues/36).",
+ "fill": 0,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 16
+ },
+ "hiddenSeries": false,
+ "id": 2,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "maxPerRow": 2,
+ "nullPointMode": "connected",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 0.5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "instance",
+ "repeatDirection": "v",
+ "seriesOverrides": [
+ {
+ "alias": "packet loss",
+ "color": "#C4162A",
+ "lines": false,
+ "pointradius": 1,
+ "points": true,
+ "yaxis": 2
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": true,
+ "targets": [
+ {
+ "expr": "sum(probe_icmp_duration_seconds{phase=\"rtt\",instance=~\"$instance\"}) by (instance) > 0",
+ "instant": false,
+ "legendFormat": "RTT",
+ "refId": "A"
+ },
+ {
+ "expr": "1-avg_over_time(probe_success{instance=~\"$instance\"}[$__interval])",
+ "format": "time_series",
+ "legendFormat": "packet loss",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "ICMP round trip time ($instance)",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "dtdurations",
+ "label": "RTT",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "percentunit",
+ "label": "packet loss",
+ "logBase": 1,
+ "max": "1",
+ "min": "0.0001",
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "refresh": false,
+ "schemaVersion": 21,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "label_values(probe_success, instance)",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "instance",
+ "options": [],
+ "query": "label_values(probe_success, instance)",
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ]
+ },
+ "timezone": "",
+ "title": "ICMP exporter",
+ "version": 1,
+ "description": "Graph ICMP metrics from the blackbox exporter, Smokeping-style"
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/consul.json b/terraform-ci-infra/1n_nmd/grafana/conf/consul.json
new file mode 100644
index 0000000000..2e4a36f076
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/consul.json
@@ -0,0 +1,1438 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "Prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.3.0-beta1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": []
+ },
+ "editable": true,
+ "gnetId": 2351,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "rows": [
+ {
+ "collapse": false,
+ "height": 153,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 1,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "consul_raft_leader_lastcontact_count",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{host}}",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "",
+ "title": "Consul Leader",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "name"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 3,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "COUNT (changes(consul_memberlist_gossep_sum[1m]) > 0) BY (labels)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "# servers in cluster",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "format": "percent",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(irate(node_cpu{mode=\"idle\", host=\"$consul\"}[1m])) * 100 / count_scalar(node_cpu{mode=\"user\", host=\"$consul\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "",
+ "title": "CPU Idle",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 4,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 14,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_load1{host=\"$consul\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "Load 1",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 4,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 15,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_load5{host=\"$consul\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "Load 5",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 4,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_load15{host=\"$consul\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "1,2",
+ "title": "Load 15",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "The amount of TCP messages that are sent/received from the server.",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(consul_memberlist_tcp{host=\"$consul\"}[1m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{type}}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Memberlist TCP Messages",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "The amount of UDP messages that are sent/received from the server.",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(consul_memberlist_udp{host=\"$consul\"}[1m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{type}}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Memberlist UDP Messages",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This measures the time it takes to replicate log entries to followers. This is a general indicator of the load pressure on the Consul servers, as well as the performance of the communication between the servers.",
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_raft_replication_appendEntries_rpc",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{query}} - {{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Log replication from leader to servers",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_raft_replication_heartbeat",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{query}} - {{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "consul_raft_replication_heartbeat",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This measures the time it takes for the leader to write log entries to disk.",
+ "fill": 1,
+ "id": 8,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_raft_leader_dispatchLog",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Write logs",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This measures the time it takes to commit a new entry to the Raft log on the leader.",
+ "fill": 1,
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_raft_commitTime",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Commit time Leader",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This counts the number of Raft transactions occurring over the interval, which is a general indicator of the write load on the Consul servers.",
+ "fill": 1,
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "delta(consul_raft_apply[30s])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Transactions",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Raft Transactions",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ops",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This will only be emitted by the Raft leader and measures the time since the leader was last able to contact the follower nodes when checking its leader lease. It can be used as a measure for how stable the Raft timing is and how close the leader is to timing out its lease.\n\nThe lease timeout is 500 ms times the raft_multiplier configuration, so this telemetry value should not be getting close to that configured value, otherwise the Raft timing is marginal and might need to be tuned, or more powerful servers might be needed. See the Server Performance guide for more details.",
+ "fill": 1,
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_raft_leader_lastcontact",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Leader lastContact",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 12,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "delta(consul_rpc_query{host=\"$consul\"}[30s])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Requests",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "RPC Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Consul uses a network tomography system to compute network coordinates for nodes in the cluster. These coordinates allow the network round trip time to be estimated between any two nodes using a very simple calculation. This allows for many useful applications, such as finding the service node nearest a requesting node, or failing over to services in the next closest datacenter.",
+ "fill": 1,
+ "id": 13,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "consul_serf_coordinate_adjustment_ms{host=\"$consul\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{quantile}}%",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Serf Coordinates",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Dashboard Row",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "consul",
+ "options": [],
+ "query": "label_values(consul_memberlist_gossep_sum, host)",
+ "refresh": 1,
+ "regex": "",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Consul",
+ "version": 1
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/docker_cadvisor.json b/terraform-ci-infra/1n_nmd/grafana/conf/docker_cadvisor.json
new file mode 100644
index 0000000000..bbad614bb4
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/docker_cadvisor.json
@@ -0,0 +1,2040 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "Prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "6.2.4"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "description": "A simple overview of the most important Docker host and container metrics. (cAdvisor/Prometheus)",
+ "editable": true,
+ "gnetId": 10657,
+ "graphTooltip": 1,
+ "id": null,
+ "iteration": 1564715574785,
+ "links": [],
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "editable": true,
+ "error": false,
+ "format": "s",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 0,
+ "y": 0
+ },
+ "height": "",
+ "id": 24,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "options": {},
+ "postfix": "",
+ "postfixFontSize": "30%",
+ "prefix": "",
+ "prefixFontSize": "20%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "time() - node_boot_time_seconds{instance=~\"$node:.*\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "",
+ "title": "Uptime",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 4,
+ "y": 0
+ },
+ "id": 31,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "options": {},
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(container_last_seen{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "",
+ "title": "Containers",
+ "type": "singlestat",
+ "valueFontSize": "120%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "editable": true,
+ "error": false,
+ "format": "decbytes",
+ "gauge": {
+ "maxValue": 500000000,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 8,
+ "y": 0
+ },
+ "id": 30,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "options": {},
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "(node_memory_SwapTotal_bytes{instance=~'$node:9100'} - node_memory_SwapFree_bytes{instance=~'$node:9100'})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "400000000",
+ "title": "Swap",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "editable": true,
+ "error": false,
+ "format": "percentunit",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 12,
+ "y": 0
+ },
+ "id": 27,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "options": {},
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(50, 189, 31, 0.18)",
+ "full": false,
+ "lineColor": "rgb(69, 193, 31)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_load1{instance=~\"$node:9100\"} / count by(job, instance)(count by(job, instance, cpu)(node_cpu_seconds_total{instance=~\"$node:9100\"}))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "0.8,0.9",
+ "title": "Load",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 10000000000
+ ],
+ "type": "gt"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Available Memory alert",
+ "noDataState": "keep_state",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Available Memory": "#7EB26D",
+ "Unavailable Memory": "#7EB26D"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 10,
+ "w": 4,
+ "x": 16,
+ "y": 0
+ },
+ "id": 20,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "container_memory_rss{name=~\".+\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "D",
+ "step": 20
+ },
+ {
+ "expr": "sum(container_memory_rss{name=~\".+\"})",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "A",
+ "step": 20
+ },
+ {
+ "expr": "container_memory_usage_bytes{name=~\".+\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "B",
+ "step": 20
+ },
+ {
+ "expr": "container_memory_rss{id=\"/\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "C",
+ "step": 20
+ },
+ {
+ "expr": "sum(container_memory_rss)",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "E",
+ "step": 20
+ },
+ {
+ "expr": "node_memory_Buffers",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "node_memory_Dirty",
+ "refId": "N",
+ "step": 30
+ },
+ {
+ "expr": "node_memory_MemFree",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "F",
+ "step": 20
+ },
+ {
+ "expr": "node_memory_MemAvailable",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "Available Memory",
+ "refId": "H",
+ "step": 20
+ },
+ {
+ "expr": "node_memory_MemTotal_bytes{instance=~\"$node:9100\"} - node_memory_MemAvailable_bytes{instance=~\"$node:9100\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Unavailable Memory",
+ "refId": "G",
+ "step": 600
+ },
+ {
+ "expr": "node_memory_Inactive",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "I",
+ "step": 30
+ },
+ {
+ "expr": "node_memory_KernelStack",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "J",
+ "step": 30
+ },
+ {
+ "expr": "node_memory_Active",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "K",
+ "step": 30
+ },
+ {
+ "expr": "node_memory_MemTotal - (node_memory_Active + node_memory_MemFree + node_memory_Inactive)",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "Unknown",
+ "refId": "L",
+ "step": 40
+ },
+ {
+ "expr": "node_memory_MemFree + node_memory_Inactive ",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "M",
+ "step": 30
+ },
+ {
+ "expr": "container_memory_rss{name=~\".+\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{__name__}}",
+ "refId": "O",
+ "step": 30
+ },
+ {
+ "expr": "node_memory_Inactive + node_memory_MemFree + node_memory_MemAvailable",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "P",
+ "step": 40
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 10000000000,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Available Memory",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": 16000000000,
+ "min": 0,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "alert": {
+ "conditions": [
+ {
+ "evaluator": {
+ "params": [
+ 850000000000
+ ],
+ "type": "gt"
+ },
+ "query": {
+ "params": [
+ "A",
+ "5m",
+ "now"
+ ]
+ },
+ "reducer": {
+ "params": [],
+ "type": "avg"
+ },
+ "type": "query"
+ }
+ ],
+ "executionErrorState": "alerting",
+ "frequency": "60s",
+ "handler": 1,
+ "name": "Free/Used Disk Space alert",
+ "noDataState": "keep_state",
+ "notifications": [
+ {
+ "id": 1
+ }
+ ]
+ },
+ "aliasColors": {
+ "Belegete Festplatte": "#BF1B00",
+ "Free Disk Space": "#7EB26D",
+ "Used Disk Space": "#7EB26D",
+ "{}": "#BF1B00"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 10,
+ "w": 4,
+ "x": 20,
+ "y": 0
+ },
+ "id": 13,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Used Disk Space",
+ "yaxis": 1
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_size_bytes{fstype=\"rootfs\"} - node_filesystem_free_bytes{fstype=\"rootfs\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Used Disk Space",
+ "refId": "A",
+ "step": 600
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "critical",
+ "fill": true,
+ "line": true,
+ "op": "gt",
+ "value": 850000000000
+ }
+ ],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Used Disk Space",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": 1000000000000,
+ "min": 0,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "SENT": "#BF1B00"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 0,
+ "y": 4
+ },
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 1,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(container_network_receive_bytes_total{id=\"/\"}[$interval])) by (id)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "RECEIVED",
+ "refId": "A",
+ "step": 600
+ },
+ {
+ "expr": "- sum(rate(container_network_transmit_bytes_total{id=\"/\"}[$interval])) by (id)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "SENT",
+ "refId": "B",
+ "step": 600
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "editable": true,
+ "error": false,
+ "format": "percent",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": true,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 4,
+ "y": 4
+ },
+ "id": 25,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "options": {},
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "((node_memory_MemTotal_bytes{instance=~\"$node:9100\"} - node_memory_MemAvailable_bytes{instance=~\"$node:9100\"}) / node_memory_MemTotal_bytes{instance=~\"$node:9100\"}) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "70, 90",
+ "title": "Memory",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {
+ "{id=\"/\",instance=\"cadvisor:8080\",job=\"prometheus\"}": "#BA43A9"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 8,
+ "y": 4
+ },
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(container_cpu_system_seconds_total[1m]))",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "a",
+ "refId": "B",
+ "step": 120
+ },
+ {
+ "expr": "sum(rate(container_cpu_system_seconds_total{name=~\".+\"}[1m]))",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "nur container",
+ "refId": "F",
+ "step": 10
+ },
+ {
+ "expr": "sum(rate(container_cpu_system_seconds_total{id=\"/\"}[1m]))",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "nur docker host",
+ "metric": "",
+ "refId": "A",
+ "step": 20
+ },
+ {
+ "expr": "sum(rate(process_cpu_seconds_total[$interval])) * 100",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "host",
+ "metric": "",
+ "refId": "C",
+ "step": 600
+ },
+ {
+ "expr": "sum(rate(container_cpu_system_seconds_total{name=~\".+\"}[1m])) + sum(rate(container_cpu_system_seconds_total{id=\"/\"}[1m])) + sum(rate(process_cpu_seconds_total[1m]))",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "D",
+ "step": 120
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "CPU Usage",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "IN on /sda": "#7EB26D",
+ "OUT on /sda": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 6,
+ "w": 4,
+ "x": 12,
+ "y": 4
+ },
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "-sum(rate(node_disk_read_bytes_total[$interval])) by (device)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "OUT on /{{device}}",
+ "metric": "node_disk_bytes_read",
+ "refId": "A",
+ "step": 600
+ },
+ {
+ "expr": "sum(rate(node_disk_written_bytes_total[$interval])) by (device)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "IN on /{{device}}",
+ "metric": "",
+ "refId": "B",
+ "step": 600
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk I/O",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 10
+ },
+ "id": 8,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(container_network_receive_bytes_total{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}[$interval])) by (name)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "- rate(container_network_transmit_bytes_total{name=~\".+\"}[$interval])",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "B",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Received Network Traffic per Container",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 1,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 10
+ },
+ "id": 9,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(container_network_transmit_bytes_total{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}[$interval])) by (name)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "rate(container_network_transmit_bytes_total{id=\"/\"}[$interval])",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sent Network Traffic per Container",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 10,
+ "max": 8,
+ "min": 0,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 5,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "id": 1,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(container_cpu_usage_seconds_total{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}[$interval])) by (name) * 100",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "metric": "",
+ "refId": "F",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "CPU Usage per Container",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 3,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "id": 34,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(container_memory_swap{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}) by (name)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "container_memory_usage_bytes{name=~\".+\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Swap per Container",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "editable": true,
+ "error": false,
+ "fill": 3,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 24
+ },
+ "id": 10,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null as zero",
+ "options": {},
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(container_memory_rss{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}) by (name)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "container_memory_usage_bytes{name=~\".+\"}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Usage per Container",
+ "tooltip": {
+ "msResolution": true,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "editable": true,
+ "error": false,
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 24
+ },
+ "id": 36,
+ "links": [],
+ "options": {},
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [
+ "10000000",
+ " 25000000"
+ ],
+ "type": "number",
+ "unit": "decbytes"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "sum(container_spec_memory_limit_bytes{name=~\".+\"} - container_memory_usage_bytes{name=~\".+\"}) by (name) ",
+ "format": "table",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "metric": "",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "sum(container_spec_memory_limit_bytes{instance=~\"$node:$port\",job=~\"$job\",image!=\"\"}) by (name) ",
+ "format": "table",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "container_memory_usage_bytes{name=~\".+\"}",
+ "format": "table",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{name}}",
+ "refId": "C",
+ "step": 240
+ }
+ ],
+ "title": "Limit memory",
+ "transform": "table",
+ "type": "table"
+ }
+ ],
+ "refresh": "5m",
+ "schemaVersion": 18,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "label_values(container_cpu_user_seconds_total, job)",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Job",
+ "multi": false,
+ "name": "job",
+ "options": [],
+ "query": "label_values(container_cpu_user_seconds_total, job)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "label_values(container_cpu_user_seconds_total{job=~\"$job\"}, instance)",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Host:",
+ "multi": false,
+ "name": "node",
+ "options": [],
+ "query": "label_values(container_cpu_user_seconds_total{job=~\"$job\"}, instance)",
+ "refresh": 1,
+ "regex": "/([^:]+):.*/",
+ "skipUrlSync": false,
+ "sort": 1,
+ "tagValuesQuery": null,
+ "tags": [],
+ "tagsQuery": null,
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "label_values(container_cpu_user_seconds_total{instance=~\"$node:(.*)\"}, instance)",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Port",
+ "multi": false,
+ "name": "port",
+ "options": [],
+ "query": "label_values(container_cpu_user_seconds_total{instance=~\"$node:(.*)\"}, instance)",
+ "refresh": 1,
+ "regex": "/[^:]+:(.*)/",
+ "skipUrlSync": false,
+ "sort": 3,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "auto": true,
+ "auto_count": 30,
+ "auto_min": "50s",
+ "current": {
+ "text": "1m",
+ "value": "1m"
+ },
+ "hide": 0,
+ "label": "Interval",
+ "name": "interval",
+ "options": [
+ {
+ "selected": false,
+ "text": "auto",
+ "value": "$__auto_interval_interval"
+ },
+ {
+ "selected": true,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "5m",
+ "value": "5m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ },
+ {
+ "selected": false,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "14d",
+ "value": "14d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ }
+ ],
+ "query": "1m,5m,10m,30m,1h,6h,12h,1d,7d,14d,30d",
+ "refresh": 2,
+ "skipUrlSync": false,
+ "type": "interval"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Docker cAdvisor",
+ "version": 1
+}
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/node_exporter.json b/terraform-ci-infra/1n_nmd/grafana/conf/node_exporter.json
new file mode 100644
index 0000000000..766d5afec3
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/node_exporter.json
@@ -0,0 +1,13696 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "Prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "panel",
+ "id": "gauge",
+ "name": "Gauge",
+ "version": ""
+ },
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "6.7.3"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "$$hashKey": "object:1058",
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": 1860,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1595837627257,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 261,
+ "panels": [],
+ "repeat": null,
+ "title": "Quick CPU / Mem / Disk",
+ "type": "row"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Busy state of all CPU cores together",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 0,
+ "y": 1
+ },
+ "id": 20,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "id": 0,
+ "op": "=",
+ "text": "N/A",
+ "type": 1,
+ "value": "null"
+ }
+ ],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 85
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 95
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "(((count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[5m])))) * 100) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "title": "CPU Busy",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Busy state of all CPU cores together (5 min average)",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 3,
+ "y": 1
+ },
+ "id": 155,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "id": 0,
+ "op": "=",
+ "text": "N/A",
+ "type": 1,
+ "value": "null"
+ }
+ ],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 85
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 95
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "avg(node_load5{instance=\"$node\",job=\"$job\"}) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)) * 100",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "title": "Sys Load (5m avg)",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Busy state of all CPU cores together (15 min average)",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 6,
+ "y": 1
+ },
+ "id": 19,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "id": 0,
+ "op": "=",
+ "text": "N/A",
+ "type": 1,
+ "value": "null"
+ }
+ ],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 85
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 95
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "avg(node_load15{instance=\"$node\",job=\"$job\"}) / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)) * 100",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "title": "Sys Load (15m avg)",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Non available RAM memory",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 9,
+ "y": 1
+ },
+ "hideTimeOverride": false,
+ "id": 16,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 80
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 90
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "((node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}) / (node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} )) * 100",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ },
+ {
+ "expr": "100 - ((node_memory_MemAvailable_bytes{instance=\"$node\",job=\"$job\"} * 100) / node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "B",
+ "step": 900
+ }
+ ],
+ "title": "RAM Used",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Used Swap",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 12,
+ "y": 1
+ },
+ "id": 21,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "id": 0,
+ "op": "=",
+ "text": "N/A",
+ "type": 1,
+ "value": "null"
+ }
+ ],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 10
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 25
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "((node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"}) / (node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} )) * 100",
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "title": "SWAP Used",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Used Root FS",
+ "gridPos": {
+ "h": 4,
+ "w": 3,
+ "x": 15,
+ "y": 1
+ },
+ "id": 154,
+ "links": [],
+ "options": {
+ "fieldOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "id": 0,
+ "op": "=",
+ "text": "N/A",
+ "type": 1,
+ "value": "null"
+ }
+ ],
+ "max": 100,
+ "min": 0,
+ "nullValueMode": "null",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "rgba(50, 172, 45, 0.97)",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 80
+ },
+ {
+ "color": "rgba(245, 54, 54, 0.9)",
+ "value": 90
+ }
+ ]
+ },
+ "unit": "percent"
+ },
+ "overrides": [],
+ "values": false
+ },
+ "orientation": "horizontal",
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "6.7.3",
+ "targets": [
+ {
+ "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "title": "Root FS Used",
+ "type": "gauge"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Total number of CPU cores",
+ "format": "short",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 18,
+ "y": 1
+ },
+ "id": 14,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "thresholds": "",
+ "title": "CPU Cores",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 1,
+ "description": "System uptime",
+ "format": "s",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 20,
+ "y": 1
+ },
+ "hideTimeOverride": true,
+ "id": 15,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "$$hashKey": "object:1094",
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "$$hashKey": "object:1095",
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "null",
+ "nullText": null,
+ "postfix": "s",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_time_seconds{instance=\"$node\",job=\"$job\"} - node_boot_time_seconds{instance=\"$node\",job=\"$job\"}",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 1800
+ }
+ ],
+ "thresholds": "",
+ "title": "Uptime",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "$$hashKey": "object:1097",
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "description": "Total RootFS",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 18,
+ "y": 3
+ },
+ "id": 23,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "thresholds": "70,90",
+ "title": "RootFS Total",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "description": "Total RAM",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 20,
+ "y": 3
+ },
+ "id": 75,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "70%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "thresholds": "",
+ "title": "RAM Total",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 0,
+ "description": "Total SWAP",
+ "format": "bytes",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 22,
+ "y": 3
+ },
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "70%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "intervalFactor": 1,
+ "refId": "A",
+ "step": 900
+ }
+ ],
+ "thresholds": "",
+ "title": "SWAP Total",
+ "type": "singlestat",
+ "valueFontSize": "50%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "collapsed": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 5
+ },
+ "id": 263,
+ "panels": [],
+ "repeat": null,
+ "title": "Basic CPU / Mem / Net / Disk",
+ "type": "row"
+ },
+ {
+ "aliasColors": {
+ "Busy": "#EAB839",
+ "Busy Iowait": "#890F02",
+ "Busy other": "#1F78C1",
+ "Idle": "#052B51",
+ "Idle - Waiting for something to happen": "#052B51",
+ "guest": "#9AC48A",
+ "idle": "#052B51",
+ "iowait": "#EAB839",
+ "irq": "#BF1B00",
+ "nice": "#C15C17",
+ "softirq": "#E24D42",
+ "steal": "#FCE2DE",
+ "system": "#508642",
+ "user": "#5195CE"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "description": "Basic CPU info",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 6
+ },
+ "hiddenSeries": false,
+ "id": 77,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 250,
+ "sort": null,
+ "sortDesc": null,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": true,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Busy Iowait",
+ "color": "#890F02"
+ },
+ {
+ "alias": "Idle",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "Busy System",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "Busy User",
+ "color": "#0A437C"
+ },
+ {
+ "alias": "Busy Other",
+ "color": "#6D1F62"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=\"system\",instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Busy System",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='user',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Busy User",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode='iowait',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Busy Iowait",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "sum by (instance)(irate(node_cpu_seconds_total{mode=~\".*irq\",instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Busy IRQs",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "sum (irate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Busy Other",
+ "refId": "E",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Idle",
+ "refId": "F",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "CPU Basic",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "SWAP Used": "#BF1B00",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap Used": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "description": "Basic memory usage",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 6
+ },
+ "hiddenSeries": false,
+ "id": 78,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "RAM Total",
+ "color": "#E0F9D7",
+ "fill": 0,
+ "stack": false
+ },
+ {
+ "alias": "RAM Cache + Buffer",
+ "color": "#052B51"
+ },
+ {
+ "alias": "RAM Free",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "Avaliable",
+ "color": "#DEDAF7",
+ "fill": 0,
+ "stack": false
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "RAM Total",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - (node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "RAM Used",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "RAM Cache + Buffer",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "RAM Free",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "SWAP Used",
+ "refId": "E",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Basic",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Recv_bytes_eth2": "#7EB26D",
+ "Recv_bytes_lo": "#0A50A1",
+ "Recv_drop_eth2": "#6ED0E0",
+ "Recv_drop_lo": "#E0F9D7",
+ "Recv_errs_eth2": "#BF1B00",
+ "Recv_errs_lo": "#CCA300",
+ "Trans_bytes_eth2": "#7EB26D",
+ "Trans_bytes_lo": "#0A50A1",
+ "Trans_drop_eth2": "#6ED0E0",
+ "Trans_drop_lo": "#E0F9D7",
+ "Trans_errs_eth2": "#BF1B00",
+ "Trans_errs_lo": "#CCA300",
+ "recv_bytes_lo": "#0A50A1",
+ "recv_drop_eth0": "#99440A",
+ "recv_drop_lo": "#967302",
+ "recv_errs_eth0": "#BF1B00",
+ "recv_errs_lo": "#890F02",
+ "trans_bytes_eth0": "#7EB26D",
+ "trans_bytes_lo": "#0A50A1",
+ "trans_drop_eth0": "#99440A",
+ "trans_drop_lo": "#967302",
+ "trans_errs_eth0": "#BF1B00",
+ "trans_errs_lo": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Basic network info per interface",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 13
+ },
+ "hiddenSeries": false,
+ "id": 74,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[5m])*8",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "recv {{device}}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "irate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[5m])*8",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "trans {{device}} ",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Basic",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "pps",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "Disk space used of all filesystems mounted",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 13
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 152,
+ "legend": {
+ "alignAsTable": false,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": false,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}}",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk Space Used Basic",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "percent",
+ "label": null,
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 20
+ },
+ "id": 265,
+ "panels": [
+ {
+ "aliasColors": {
+ "Idle - Waiting for something to happen": "#052B51",
+ "guest": "#9AC48A",
+ "idle": "#052B51",
+ "iowait": "#EAB839",
+ "irq": "#BF1B00",
+ "nice": "#C15C17",
+ "softirq": "#E24D42",
+ "steal": "#FCE2DE",
+ "system": "#508642",
+ "user": "#5195CE"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "description": "",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 0,
+ "y": 21
+ },
+ "hiddenSeries": false,
+ "id": 3,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 250,
+ "sort": null,
+ "sortDesc": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": true,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode=\"system\",instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "interval": "10s",
+ "intervalFactor": 2,
+ "legendFormat": "System - Processes executing in kernel mode",
+ "refId": "A",
+ "step": 20
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='user',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "User - Normal processes executing in user mode",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='nice',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Nice - Niced processes executing in user mode",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='idle',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Idle - Waiting for something to happen",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='iowait',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Iowait - Waiting for I/O to complete",
+ "refId": "E",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='irq',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Irq - Servicing interrupts",
+ "refId": "F",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='softirq',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Softirq - Servicing softirqs",
+ "refId": "G",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='steal',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment",
+ "refId": "H",
+ "step": 240
+ },
+ {
+ "expr": "sum by (mode)(irate(node_cpu_seconds_total{mode='guest',instance=\"$node\",job=\"$job\"}[5m])) * 100",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system",
+ "refId": "I",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "CPU",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "percentage",
+ "logBase": 1,
+ "max": "100",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap - Swap memory usage": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839",
+ "Unused - Free memory unassigned": "#052B51"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "description": "",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 12,
+ "y": 21
+ },
+ "hiddenSeries": false,
+ "id": 24,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "sort": null,
+ "sortDesc": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Hardware Corrupted - *./",
+ "stack": false
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"} - node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Apps - Memory used by user-space applications",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Cache - Parked file data (file content) cache",
+ "refId": "E",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Buffers - Block device (e.g. harddisk) cache",
+ "refId": "F",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Unused - Free memory unassigned",
+ "refId": "G",
+ "step": 240
+ },
+ {
+ "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Swap - Swap space used",
+ "refId": "H",
+ "step": 240
+ },
+ {
+ "expr": "node_memory_HardwareCorrupted_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working",
+ "refId": "I",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Stack",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "receive_packets_eth0": "#7EB26D",
+ "receive_packets_lo": "#E24D42",
+ "transmit_packets_eth0": "#7EB26D",
+ "transmit_packets_lo": "#E24D42"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 0,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 84,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:5871",
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[5m])*8",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "irate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[5m])*8",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:5884",
+ "format": "bps",
+ "label": "bits out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:5885",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 12,
+ "y": 33
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 156,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": false,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}}",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk Space Used",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 0,
+ "y": 45
+ },
+ "hiddenSeries": false,
+ "id": 229,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Read.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[5m])",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - Reads completed",
+ "refId": "A",
+ "step": 480
+ },
+ {
+ "expr": "irate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[5m])",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Writes completed",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk IOps",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "iops",
+ "label": "IO read (-) / write (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "io time": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 12,
+ "y": 45
+ },
+ "hiddenSeries": false,
+ "id": 42,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": null,
+ "sortDesc": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*read*./",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*sda.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde.*/",
+ "color": "#E24D42"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Successfully read bytes",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "irate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Successfully written bytes",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "I/O Usage Read / Write",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes read (-) / write (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "ms",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "io time": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "",
+ "fill": 4,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 12,
+ "w": 12,
+ "x": 0,
+ "y": 57
+ },
+ "hiddenSeries": false,
+ "id": 127,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": null,
+ "sortDesc": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"} [5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Time spent doing I/Os",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "I/O Usage Times",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": false,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "time",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "s",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "CPU / Memory / Net / Disk",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 21
+ },
+ "id": 266,
+ "panels": [
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 70
+ },
+ "hiddenSeries": false,
+ "id": 136,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 2,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Inactive_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Active_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Active / Inactive",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 70
+ },
+ "hiddenSeries": false,
+ "id": 135,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Committed_AS - *./"
+ },
+ {
+ "alias": "/.*CommitLimit - *./",
+ "color": "#BF1B00",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Committed_AS_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Committed_AS - Amount of memory presently allocated on the system",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_CommitLimit_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Commited",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 80
+ },
+ "hiddenSeries": false,
+ "id": 191,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Inactive_file_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Inactive_file - File-backed memory on inactive LRU list",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Inactive_anon_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Active_file_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Active_file - File-backed memory on active LRU list",
+ "refId": "C",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Active_anon_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs",
+ "refId": "D",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Active / Inactive Detail",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "Total Swap": "#614D93",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 80
+ },
+ "hiddenSeries": false,
+ "id": 130,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 2,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Writeback_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Writeback - Memory which is actively being written back to disk",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_WritebackTmp_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Dirty_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Dirty - Memory which is waiting to get written back to the disk",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Writeback and Dirty",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 90
+ },
+ "hiddenSeries": false,
+ "id": 138,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:4131",
+ "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages",
+ "fill": 0
+ },
+ {
+ "$$hashKey": "object:4138",
+ "alias": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Mapped_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Shmem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_ShmemHugePages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages",
+ "refId": "C",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_ShmemPmdMapped_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages",
+ "refId": "D",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Shared and Mapped",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4106",
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4107",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "Total Swap": "#614D93",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 90
+ },
+ "hiddenSeries": false,
+ "id": 131,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 2,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_SUnreclaim_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Slab",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 100
+ },
+ "hiddenSeries": false,
+ "id": 70,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_VmallocChunk_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_VmallocTotal_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "VmallocTotal - Total size of vmalloc memory area",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_VmallocUsed_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "VmallocUsed - Amount of vmalloc area which is used",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Vmalloc",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 100
+ },
+ "hiddenSeries": false,
+ "id": 159,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Bounce_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Bounce - Memory used for block device bounce buffers",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Bounce",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 110
+ },
+ "hiddenSeries": false,
+ "id": 129,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Inactive *./",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_AnonHugePages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "AnonHugePages - Memory in anonymous huge pages",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_AnonPages_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "AnonPages - Memory in user pages not backed by files",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Anonymous",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 110
+ },
+ "hiddenSeries": false,
+ "id": 160,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 2,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_KernelStack_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Percpu_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Kernel / CPU",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#806EB7",
+ "Total RAM + Swap": "#806EB7",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 120
+ },
+ "hiddenSeries": false,
+ "id": 140,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_HugePages_Free{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_HugePages_Rsvd{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_HugePages_Surp{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory HugePages Counter",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "pages",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#806EB7",
+ "Total RAM + Swap": "#806EB7",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 120
+ },
+ "hiddenSeries": false,
+ "id": 71,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 2,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_HugePages_Total{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "HugePages - Total size of the pool of huge pages",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Hugepagesize - Huge Page size",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory HugePages Size",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 130
+ },
+ "hiddenSeries": false,
+ "id": 128,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": false,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_DirectMap1G_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "DirectMap1G - Amount of pages mapped as this size",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_DirectMap2M_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "DirectMap2M - Amount of pages mapped as this size",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_DirectMap4k_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "DirectMap4K - Amount of pages mapped as this size",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory DirectMap",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 130
+ },
+ "hiddenSeries": false,
+ "id": 137,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_Unevictable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_memory_Mlocked_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Unevictable and MLocked",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "Total Swap": "#614D93",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 140
+ },
+ "hiddenSeries": false,
+ "id": 132,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_memory_NFS_Unstable_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory NFS",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Memory Meminfo",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 22
+ },
+ "id": 267,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 23
+ },
+ "hiddenSeries": false,
+ "id": 176,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*out/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_vmstat_pgpgin{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pagesin - Page in operations",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_vmstat_pgpgout{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pagesout - Page out operations",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Pages In / Out",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "pages out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 23
+ },
+ "hiddenSeries": false,
+ "id": 22,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*out/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_vmstat_pswpin{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pswpin - Pages swapped in",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_vmstat_pswpout{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pswpout - Pages swapped out",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Pages Swap In / Out",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "pages out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Apps": "#629E51",
+ "Buffers": "#614D93",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Free": "#0A437C",
+ "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working": "#CFFAFF",
+ "Inactive": "#584477",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "RAM_Free": "#E0F9D7",
+ "Slab": "#806EB7",
+ "Slab_Cache": "#E0752D",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Swap_Free": "#2F575E",
+ "Unused": "#EAB839"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 175,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 350,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:6118",
+ "alias": "Pgfault - Page major and minor fault operations",
+ "fill": 0,
+ "stack": false
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pgfault - Page major and minor fault operations",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pgmajfault - Major page fault operations",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[5m]) - irate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Pgminfault - Minor page fault operations",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Memory Page Faults",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6133",
+ "format": "short",
+ "label": "faults",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6134",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "Active": "#99440A",
+ "Buffers": "#58140C",
+ "Cache": "#6D1F62",
+ "Cached": "#511749",
+ "Committed": "#508642",
+ "Dirty": "#6ED0E0",
+ "Free": "#B7DBAB",
+ "Inactive": "#EA6460",
+ "Mapped": "#052B51",
+ "PageTables": "#0A50A1",
+ "Page_Tables": "#0A50A1",
+ "Slab_Cache": "#EAB839",
+ "Swap": "#BF1B00",
+ "Swap_Cache": "#C15C17",
+ "Total": "#511749",
+ "Total RAM": "#052B51",
+ "Total RAM + Swap": "#052B51",
+ "Total Swap": "#614D93",
+ "VmallocUsed": "#EA6460"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 2,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 307,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": null,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_vmstat_oom_kill{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "oom killer invocations ",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "OOM Killer",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:5373",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:5374",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Memory Vmstat",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 23
+ },
+ "id": 293,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 24
+ },
+ "hiddenSeries": false,
+ "id": 260,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Variation*./",
+ "color": "#890F02"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_timex_estimated_error_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Estimated error in seconds",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_timex_offset_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Time offset in between local system and reference clock",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_timex_maxerror_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Maximum error in seconds",
+ "refId": "C",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time Syncronized Drift",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 24
+ },
+ "hiddenSeries": false,
+ "id": 291,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_timex_loop_time_constant{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Phase-locked loop time adjust",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time PLL Adjust",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 34
+ },
+ "hiddenSeries": false,
+ "id": 168,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Variation*./",
+ "color": "#890F02"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_timex_sync_status{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_timex_frequency_adjustment_ratio{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Local clock frequency adjustment",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time Syncronized Status",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 34
+ },
+ "hiddenSeries": false,
+ "id": 294,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_timex_tick_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Seconds between clock ticks",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_timex_tai_offset_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "International Atomic Time (TAI) offset",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time Misc",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "System Timesync",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 24
+ },
+ "id": 312,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 7
+ },
+ "hiddenSeries": false,
+ "id": 62,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_procs_blocked{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Processes blocked waiting for I/O to complete",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_procs_running{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Processes in runnable state",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Processes Status",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6500",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6501",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 7
+ },
+ "hiddenSeries": false,
+ "id": 315,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_processes_state{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ state }}",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Processes State",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6500",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6501",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 17
+ },
+ "hiddenSeries": false,
+ "id": 148,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_forks_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Processes forks second",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Processes Forks",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6640",
+ "format": "short",
+ "label": "forks / sec",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6641",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 17
+ },
+ "hiddenSeries": false,
+ "id": 149,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Max.*/",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[5m])",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Processes virtual memory size in bytes",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "process_resident_memory_max_bytes{instance=\"$node\",job=\"$job\"}",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Maximum amount of virtual memory available in bytes",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "irate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[5m])",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Processes virtual memory size in bytes",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "irate(process_virtual_memory_max_bytes{instance=\"$node\",job=\"$job\"}[5m])",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Maximum amount of virtual memory available in bytes",
+ "refId": "D",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Processes Memory",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "decbytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 27
+ },
+ "hiddenSeries": false,
+ "id": 313,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:709",
+ "alias": "PIDs limit",
+ "color": "#F2495C",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_processes_pids{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Number of PIDs",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_processes_max_processes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "PIDs limit",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "PIDs Number and Limit",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6500",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6501",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 27
+ },
+ "hiddenSeries": false,
+ "id": 305,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:4963",
+ "alias": "/.*waiting.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{ cpu }} - seconds spent running a process",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "irate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Process schedule stats Running / Waiting",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4860",
+ "format": "s",
+ "label": "seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4861",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 314,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:709",
+ "alias": "Threads limit",
+ "color": "#F2495C",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_processes_threads{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Allocated threads",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_processes_max_threads{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Threads limit",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Threads Number and Limit",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6500",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6501",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "System Processes",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 25
+ },
+ "id": 269,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 8,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_context_switches_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Context switches",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "irate(node_intr_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "Interrupts",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Context Switches / Interrupts",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 7,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_load1{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 4,
+ "legendFormat": "Load 1m",
+ "refId": "A",
+ "step": 480
+ },
+ {
+ "expr": "node_load5{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 4,
+ "legendFormat": "Load 5m",
+ "refId": "B",
+ "step": 480
+ },
+ {
+ "expr": "node_load15{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 4,
+ "legendFormat": "Load 15m",
+ "refId": "C",
+ "step": 480
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "System Load",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6261",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6262",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 259,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Critical*./",
+ "color": "#E24D42",
+ "fill": 0
+ },
+ {
+ "alias": "/.*Max*./",
+ "color": "#EF843C",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_interrupts_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ type }} - {{ info }}",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Interrupts Detail",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 306,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_schedstat_timeslices_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{ cpu }}",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Schedule timeslices executed by each cpu",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4860",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4861",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 28
+ },
+ "hiddenSeries": false,
+ "id": 151,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_entropy_available_bits{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Entropy available to random number generators",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Entropy",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6568",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6569",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 28
+ },
+ "hiddenSeries": false,
+ "id": 308,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(process_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Time spent",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "CPU time spent in user and system contexts",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4860",
+ "format": "s",
+ "label": "seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4861",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 38
+ },
+ "hiddenSeries": false,
+ "id": 64,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:6323",
+ "alias": "/.*Max*./",
+ "color": "#890F02",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "process_max_fds{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Maximum open file descriptors",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "process_open_fds{instance=\"$node\",job=\"$job\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Open file descriptors",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "File Descriptors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6338",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6339",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "System Misc",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 26
+ },
+ "id": 304,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 26
+ },
+ "hiddenSeries": false,
+ "id": 158,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:6726",
+ "alias": "/.*Critical*./",
+ "color": "#E24D42",
+ "fill": 0
+ },
+ {
+ "$$hashKey": "object:6727",
+ "alias": "/.*Max*./",
+ "color": "#EF843C",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_hwmon_temp_celsius{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ chip }} {{ sensor }} temp",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_hwmon_temp_crit_alarm_celsius{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_hwmon_temp_crit_celsius{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ chip }} {{ sensor }} Critical",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "node_hwmon_temp_crit_hyst_celsius{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ chip }} {{ sensor }} Critical Historical",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "node_hwmon_temp_max_celsius{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ chip }} {{ sensor }} Max",
+ "refId": "E",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Hardware temperature monitor",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:6750",
+ "format": "celsius",
+ "label": "temperature",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:6751",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 26
+ },
+ "hiddenSeries": false,
+ "id": 300,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:1655",
+ "alias": "/.*Max*./",
+ "color": "#EF843C",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_cooling_device_cur_state{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Current {{ name }} in {{ type }}",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_cooling_device_max_state{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Max {{ name }} in {{ type }}",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Throttle cooling device",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1678",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1679",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 36
+ },
+ "hiddenSeries": false,
+ "id": 302,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_power_supply_online{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ power_supply }} online",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Power supply",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1678",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1679",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "Hardware Misc",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 27
+ },
+ "id": 296,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 10
+ },
+ "hiddenSeries": false,
+ "id": 297,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_systemd_socket_accepted_connections_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{ name }} Connections",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Systemd Sockets",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 10
+ },
+ "hiddenSeries": false,
+ "id": 298,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Failed",
+ "color": "#F2495C"
+ },
+ {
+ "alias": "Inactive",
+ "color": "#FF9830"
+ },
+ {
+ "alias": "Active",
+ "color": "#73BF69"
+ },
+ {
+ "alias": "Deactivating",
+ "color": "#FFCB7D"
+ },
+ {
+ "alias": "Activating",
+ "color": "#C8F2C2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"activating\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Activating",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"active\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Active",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"deactivating\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Deactivating",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"failed\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Failed",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"inactive\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Inactive",
+ "refId": "E",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Systemd Units State",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "Systemd",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 28
+ },
+ "id": 270,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 29
+ },
+ "hiddenSeries": false,
+ "id": 9,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": null,
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:2033",
+ "alias": "/.*Read.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "$$hashKey": "object:2034",
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "$$hashKey": "object:2035",
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "$$hashKey": "object:2036",
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "$$hashKey": "object:2037",
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "$$hashKey": "object:2038",
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "$$hashKey": "object:2039",
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "$$hashKey": "object:2040",
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "$$hashKey": "object:2041",
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "$$hashKey": "object:2042",
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "$$hashKey": "object:2043",
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "$$hashKey": "object:2044",
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "$$hashKey": "object:2045",
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "$$hashKey": "object:2046",
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "$$hashKey": "object:2047",
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "$$hashKey": "object:2048",
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "$$hashKey": "object:2049",
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "$$hashKey": "object:2050",
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "$$hashKey": "object:2051",
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "$$hashKey": "object:2052",
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "$$hashKey": "object:2053",
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - Reads completed",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "irate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Writes completed",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk IOps Completed",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:2186",
+ "format": "iops",
+ "label": "IO read (-) / write (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:2187",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 29
+ },
+ "hiddenSeries": false,
+ "id": 33,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Read.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - Read bytes",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "irate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Written bytes",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk R/W Data",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "Bps",
+ "label": "bytes read (-) / write (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 3,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 39
+ },
+ "hiddenSeries": false,
+ "id": 37,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Read.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_read_time_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "hide": false,
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - Read time",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "irate(node_disk_write_time_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Write time",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk R/W Time",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "time. read (-) / write (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 39
+ },
+ "hiddenSeries": false,
+ "id": 35,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_time_weighted_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - IO time weighted",
+ "refId": "A",
+ "step": 8
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk IOs Weighted",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "time",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 49
+ },
+ "hiddenSeries": false,
+ "id": 133,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Read.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_reads_merged_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Read merged",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_disk_writes_merged_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Write merged",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk R/W Merged",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "iops",
+ "label": "I/Os",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 3,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 49
+ },
+ "hiddenSeries": false,
+ "id": 36,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - IO time",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "irate(node_disk_discard_time_seconds_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - discard time",
+ "refId": "B",
+ "step": 8
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time Spent Doing I/Os",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "time",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 59
+ },
+ "hiddenSeries": false,
+ "id": 34,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_io_now{instance=\"$node\",job=\"$job\"}[5m])",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - IO now",
+ "refId": "A",
+ "step": 8
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk IOs Current in Progress",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "iops",
+ "label": "I/Os",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 59
+ },
+ "hiddenSeries": false,
+ "id": 301,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null as zero",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:2034",
+ "alias": "/.*sda_.*/",
+ "color": "#7EB26D"
+ },
+ {
+ "$$hashKey": "object:2035",
+ "alias": "/.*sdb_.*/",
+ "color": "#EAB839"
+ },
+ {
+ "$$hashKey": "object:2036",
+ "alias": "/.*sdc_.*/",
+ "color": "#6ED0E0"
+ },
+ {
+ "$$hashKey": "object:2037",
+ "alias": "/.*sdd_.*/",
+ "color": "#EF843C"
+ },
+ {
+ "$$hashKey": "object:2038",
+ "alias": "/.*sde_.*/",
+ "color": "#E24D42"
+ },
+ {
+ "$$hashKey": "object:2039",
+ "alias": "/.*sda1.*/",
+ "color": "#584477"
+ },
+ {
+ "$$hashKey": "object:2040",
+ "alias": "/.*sda2_.*/",
+ "color": "#BA43A9"
+ },
+ {
+ "$$hashKey": "object:2041",
+ "alias": "/.*sda3_.*/",
+ "color": "#F4D598"
+ },
+ {
+ "$$hashKey": "object:2042",
+ "alias": "/.*sdb1.*/",
+ "color": "#0A50A1"
+ },
+ {
+ "$$hashKey": "object:2043",
+ "alias": "/.*sdb2.*/",
+ "color": "#BF1B00"
+ },
+ {
+ "$$hashKey": "object:2044",
+ "alias": "/.*sdb3.*/",
+ "color": "#E0752D"
+ },
+ {
+ "$$hashKey": "object:2045",
+ "alias": "/.*sdc1.*/",
+ "color": "#962D82"
+ },
+ {
+ "$$hashKey": "object:2046",
+ "alias": "/.*sdc2.*/",
+ "color": "#614D93"
+ },
+ {
+ "$$hashKey": "object:2047",
+ "alias": "/.*sdc3.*/",
+ "color": "#9AC48A"
+ },
+ {
+ "$$hashKey": "object:2048",
+ "alias": "/.*sdd1.*/",
+ "color": "#65C5DB"
+ },
+ {
+ "$$hashKey": "object:2049",
+ "alias": "/.*sdd2.*/",
+ "color": "#F9934E"
+ },
+ {
+ "$$hashKey": "object:2050",
+ "alias": "/.*sdd3.*/",
+ "color": "#EA6460"
+ },
+ {
+ "$$hashKey": "object:2051",
+ "alias": "/.*sde1.*/",
+ "color": "#E0F9D7"
+ },
+ {
+ "$$hashKey": "object:2052",
+ "alias": "/.*sdd2.*/",
+ "color": "#FCEACA"
+ },
+ {
+ "$$hashKey": "object:2053",
+ "alias": "/.*sde3.*/",
+ "color": "#F9E2D2"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_disk_discards_completed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "intervalFactor": 4,
+ "legendFormat": "{{device}} - Discards completed",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "irate(node_disk_discards_merged_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Discards merged",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Disk IOps Discards completed / merged",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:2186",
+ "format": "iops",
+ "label": "IOs",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:2187",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Storage Disk",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 29
+ },
+ "id": 271,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 78
+ },
+ "hiddenSeries": false,
+ "id": 43,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - Available",
+ "metric": "",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_filesystem_free_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - Free",
+ "refId": "B",
+ "step": 2
+ },
+ {
+ "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - Size",
+ "refId": "C",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Filesystem space available",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3826",
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3827",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 78
+ },
+ "hiddenSeries": false,
+ "id": 41,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_files_free{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - Free file nodes",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "File Nodes Free",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3894",
+ "format": "short",
+ "label": "file nodes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3895",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 88
+ },
+ "hiddenSeries": false,
+ "id": 28,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filefd_maximum{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 4,
+ "legendFormat": "Max open files",
+ "refId": "A",
+ "step": 8
+ },
+ {
+ "expr": "node_filefd_allocated{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Open files",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "File Descriptor",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "files",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 88
+ },
+ "hiddenSeries": false,
+ "id": 219,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_files{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - File nodes total",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "File Nodes Size",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "file Nodes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {
+ "/ ReadOnly": "#890F02"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 98
+ },
+ "hiddenSeries": false,
+ "id": 44,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 6,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_filesystem_readonly{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - ReadOnly",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_filesystem_device_error{instance=\"$node\",job=\"$job\",device!~'rootfs',fstype!~'tmpfs'}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{mountpoint}} - Device error",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Filesystem in ReadOnly / Error",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3670",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": "1",
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3671",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Storage Filesystem",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 30
+ },
+ "id": 272,
+ "panels": [
+ {
+ "aliasColors": {
+ "receive_packets_eth0": "#7EB26D",
+ "receive_packets_lo": "#E24D42",
+ "transmit_packets_eth0": "#7EB26D",
+ "transmit_packets_lo": "#E24D42"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 60,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_packets_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_network_transmit_packets_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic by Packets",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 142,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_errs_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive errors",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_network_transmit_errs_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Rransmit errors",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 40
+ },
+ "hiddenSeries": false,
+ "id": 143,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_drop_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive drop",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_network_transmit_drop_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit drop",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Drop",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 40
+ },
+ "hiddenSeries": false,
+ "id": 141,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_compressed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive compressed",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_network_transmit_compressed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit compressed",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Compressed",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 50
+ },
+ "hiddenSeries": false,
+ "id": 146,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_multicast_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive multicast",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Multicast",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 50
+ },
+ "hiddenSeries": false,
+ "id": 144,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_fifo_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive fifo",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_network_transmit_fifo_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit fifo",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Fifo",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 60
+ },
+ "hiddenSeries": false,
+ "id": 145,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:576",
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_receive_frame_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Receive frame",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Frame",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:589",
+ "format": "pps",
+ "label": "packets out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:590",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 60
+ },
+ "hiddenSeries": false,
+ "id": 231,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_transmit_carrier_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Statistic transmit_carrier",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Carrier",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 70
+ },
+ "hiddenSeries": false,
+ "id": 232,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Trans.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_network_transmit_colls_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{device}} - Transmit colls",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Traffic Colls",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 70
+ },
+ "hiddenSeries": false,
+ "id": 61,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:663",
+ "alias": "NF conntrack limit",
+ "color": "#890F02",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_nf_conntrack_entries{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "NF conntrack entries",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_nf_conntrack_entries_limit{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "NF conntrack limit",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "NF Contrack",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:678",
+ "format": "short",
+ "label": "entries",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:679",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 80
+ },
+ "hiddenSeries": false,
+ "id": 230,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_arp_entries{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ device }} - ARP entries",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "ARP Entries",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Entries",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 80
+ },
+ "hiddenSeries": false,
+ "id": 288,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 1,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_network_mtu_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ device }} - Bytes",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "MTU",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 90
+ },
+ "hiddenSeries": false,
+ "id": 280,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 1,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_network_speed_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ device }} - Speed",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Speed",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 90
+ },
+ "hiddenSeries": false,
+ "id": 289,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 1,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_network_transmit_queue_length{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ device }} - Interface transmit queue length",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Queue Length",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "packets",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 100
+ },
+ "hiddenSeries": false,
+ "id": 290,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:232",
+ "alias": "/.*Dropped.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_softnet_processed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{cpu}} - Processed",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_softnet_dropped_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{cpu}} - Dropped",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Softnet Packets",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:207",
+ "format": "short",
+ "label": "packetes drop (-) / process (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:208",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 100
+ },
+ "hiddenSeries": false,
+ "id": 310,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_softnet_times_squeezed_total{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CPU {{cpu}} - Squeezed",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Softnet Out of Quota",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:207",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:208",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 110
+ },
+ "hiddenSeries": false,
+ "id": 309,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_network_up{operstate=\"up\",instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{interface}} - Operational state UP",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_network_carrier{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "instant": false,
+ "legendFormat": "{{device}} - Physical link state",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Network Operational Status",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Network Traffic",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 31
+ },
+ "id": 273,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 13
+ },
+ "hiddenSeries": false,
+ "id": 63,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_sockstat_TCP_alloc{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCP_alloc - Allocated sockets",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCP_inuse - Tcp sockets currently in use",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_TCP_mem{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCP_mem - Used memory for tcp",
+ "refId": "C",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_TCP_orphan{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCP_orphan - Orphan sockets",
+ "refId": "D",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_TCP_tw{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCP_tw - Sockets wating close",
+ "refId": "E",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sockstat TCP",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 13
+ },
+ "hiddenSeries": false,
+ "id": 124,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_sockstat_UDPLITE_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "UDP_inuse - Udp sockets currently in use",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_UDP_mem{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "UDP_mem - Used memory for udp",
+ "refId": "C",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sockstat UDP",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 23
+ },
+ "hiddenSeries": false,
+ "id": 126,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_sockstat_sockets_used{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Sockets_used - Sockets currently in use",
+ "refId": "A",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sockstat Used",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "sockets",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 23
+ },
+ "hiddenSeries": false,
+ "id": 220,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_sockstat_TCP_mem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "mem_bytes - TCP sockets in that state",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_UDP_mem_bytes{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "mem_bytes - UDP sockets in that state",
+ "refId": "B",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sockstat Memory Size",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": "bytes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 125,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_sockstat_FRAG_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "FRAG_inuse - Frag sockets currently in use",
+ "refId": "A",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_FRAG_memory{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "FRAG_memory - Used memory for frag",
+ "refId": "B",
+ "step": 240
+ },
+ {
+ "expr": "node_sockstat_RAW_inuse{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "RAW_inuse - Raw sockets currently in use",
+ "refId": "C",
+ "step": 240
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Sockstat FRAG / RAW",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1572",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1573",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Network Sockstat",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 32
+ },
+ "id": 274,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 32
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 221,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:1876",
+ "alias": "/.*Out.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_IpExt_InOctets{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InOctets - Received octets",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_IpExt_OutOctets{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "OutOctets - Sent octets",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Netstat IP In / Out Octets",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1889",
+ "format": "short",
+ "label": "octects out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1890",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 32
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 81,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sideWidth": 300,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Ip_Forwarding{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "Forwarding - IP forwarding",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Netstat IP Forwarding",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1957",
+ "format": "short",
+ "label": "datagrams",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1958",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 42
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 115,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Out.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Icmp_InMsgs{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Icmp_OutMsgs{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "ICMP In / Out",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "messages out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 42
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 50,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Out.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Icmp_InErrors{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "ICMP Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "messages out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 52
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 55,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Out.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*Snd.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Udp_InDatagrams{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InDatagrams - Datagrams received",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Udp_OutDatagrams{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "OutDatagrams - Datagrams sent",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "UDP In / Out",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "datagrams out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 52
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 109,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Udp_InErrors{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Udp_NoPorts{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_UdpLite_InErrors{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application",
+ "refId": "C"
+ },
+ {
+ "expr": "irate(node_netstat_Udp_RcvbufErrors{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "RcvbufErrors - UDP buffer errors received",
+ "refId": "D",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Udp_SndbufErrors{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "SndbufErrors - UDP buffer errors send",
+ "refId": "E",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "UDP Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4232",
+ "format": "short",
+ "label": "datagrams",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4233",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 62
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 299,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Out.*/",
+ "transform": "negative-Y"
+ },
+ {
+ "alias": "/.*Snd.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Tcp_InSegs{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "instant": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Tcp_OutSegs{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "TCP In / Out",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "datagrams out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 62
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 104,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_TcpExt_ListenOverflows{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_TcpExt_ListenDrops{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_TcpExt_TCPSynRetrans{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits",
+ "refId": "C",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Tcp_RetransSegs{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets",
+ "refId": "D"
+ },
+ {
+ "expr": "irate(node_netstat_Tcp_InErrs{instance=\"$node\",job=\"$job\"}[5m])",
+ "interval": "",
+ "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)",
+ "refId": "E"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "TCP Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 72
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 85,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:454",
+ "alias": "/.*MaxConn *./",
+ "color": "#890F02",
+ "fill": 0
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_netstat_Tcp_CurrEstab{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_netstat_Tcp_MaxConn{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "TCP Connections",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:469",
+ "format": "short",
+ "label": "connections",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:470",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 72
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 91,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideEmpty": false,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "/.*Sent.*/",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_TcpExt_SyncookiesFailed{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "SyncookiesFailed - Invalid SYN cookies received",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_TcpExt_SyncookiesRecv{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "SyncookiesRecv - SYN cookies received",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_TcpExt_SyncookiesSent{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "SyncookiesSent - SYN cookies sent",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "TCP SynCookie",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "counter out (-) / in (+)",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 82
+ },
+ "height": "",
+ "hiddenSeries": false,
+ "id": 82,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "hideZero": false,
+ "max": true,
+ "min": true,
+ "rightSide": false,
+ "show": true,
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "maxPerRow": 12,
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "irate(node_netstat_Tcp_ActiveOpens{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "irate(node_netstat_Tcp_PassiveOpens{instance=\"$node\",job=\"$job\"}[5m])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "TCP Direct Transition",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "connections",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Network Netstat",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": "${DS_PROMETHEUS}",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 33
+ },
+ "id": 279,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 54
+ },
+ "hiddenSeries": false,
+ "id": 40,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_scrape_collector_duration_seconds{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{collector}} - Scrape duration",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Node Exporter Scrape Time",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": "seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "",
+ "fill": 2,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 12,
+ "y": 54
+ },
+ "hiddenSeries": false,
+ "id": 157,
+ "legend": {
+ "alignAsTable": true,
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "dataLinks": []
+ },
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "$$hashKey": "object:1969",
+ "alias": "/.*error.*/",
+ "color": "#F2495C",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "node_scrape_collector_success{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{collector}} - Scrape success",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "node_textfile_scrape_error{instance=\"$node\",job=\"$job\"}",
+ "format": "time_series",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{collector}} - Scrape textfile error (1 = true)",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Node Exporter Scrape",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1484",
+ "format": "short",
+ "label": "counter",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:1485",
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "repeat": null,
+ "title": "Node Exporter",
+ "type": "row"
+ }
+ ],
+ "refresh": "1m",
+ "schemaVersion": 22,
+ "style": "dark",
+ "tags": [
+ "linux"
+ ],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "",
+ "hide": 0,
+ "includeAll": false,
+ "index": -1,
+ "label": "Job",
+ "multi": false,
+ "name": "job",
+ "options": [],
+ "query": "label_values(node_uname_info, job)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "definition": "label_values(node_uname_info{job=\"$job\"}, instance)",
+ "hide": 0,
+ "includeAll": false,
+ "index": -1,
+ "label": "Host:",
+ "multi": false,
+ "name": "node",
+ "options": [],
+ "query": "label_values(node_uname_info{job=\"$job\"}, instance)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": false,
+ "text": "[a-z]+|nvme[0-9]+n[0-9]+",
+ "value": "[a-z]+|nvme[0-9]+n[0-9]+"
+ },
+ "hide": 2,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "diskdevices",
+ "options": [
+ {
+ "selected": true,
+ "text": "[a-z]+|nvme[0-9]+n[0-9]+",
+ "value": "[a-z]+|nvme[0-9]+n[0-9]+"
+ }
+ ],
+ "query": "[a-z]+|nvme[0-9]+n[0-9]+",
+ "skipUrlSync": false,
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Node Exporter",
+ "version": 1
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/nomad.json b/terraform-ci-infra/1n_nmd/grafana/conf/nomad.json
new file mode 100644
index 0000000000..40ffeddf7b
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/nomad.json
@@ -0,0 +1,869 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "Prometheus",
+ "description": "",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "5.3.2"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": "5.0.0"
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "5.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": "5.0.0"
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "description": "Nomad Jobs metrics",
+ "editable": true,
+ "gnetId": 12787,
+ "graphTooltip": 0,
+ "id": null,
+ "iteration": 1596708119930,
+ "links": [],
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": null,
+ "format": "dtdurations",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 0,
+ "y": 0
+ },
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "alias": "",
+ "expr": "max(nomad_client_uptime{instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "rawSql": "SELECT\n UNIX_TIMESTAMP(<time_column>) as time_sec,\n <value column> as value,\n <series name column> as metric\nFROM <table name>\nWHERE $__timeFilter(time_column)\nORDER BY <time_column> ASC\n",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Uptime",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorPrefix": false,
+ "colorValue": false,
+ "colors": [
+ "#7eb26d",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 4,
+ "y": 0
+ },
+ "id": 17,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "alias": "",
+ "expr": "count(sum(nomad_client_allocs_memory_cache) by (exported_job))",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "rawSql": "SELECT\n UNIX_TIMESTAMP(<time_column>) as time_sec,\n <value column> as value,\n <series name column> as metric\nFROM <table name>\nWHERE $__timeFilter(time_column)\nORDER BY <time_column> ASC\n",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Jobs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorPrefix": false,
+ "colorValue": false,
+ "colors": [
+ "#7eb26d",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 4,
+ "x": 8,
+ "y": 0
+ },
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "alias": "",
+ "expr": "sum(nomad_client_allocations_running{datacenter=\"$datacenter\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "rawSql": "SELECT\n UNIX_TIMESTAMP(<time_column>) as time_sec,\n <value column> as value,\n <series name column> as metric\nFROM <table name>\nWHERE $__timeFilter(time_column)\nORDER BY <time_column> ASC\n",
+ "refId": "A"
+ }
+ ],
+ "thresholds": "",
+ "title": "Allocs",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 4,
+ "w": 12,
+ "x": 12,
+ "y": 0
+ },
+ "id": 14,
+ "legend": {
+ "alignAsTable": true,
+ "avg": false,
+ "current": true,
+ "max": false,
+ "min": false,
+ "rightSide": true,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "",
+ "expr": "sum(nomad_client_allocations_blocked{datacenter=\"$datacenter\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "Blocked",
+ "rawSql": "SELECT\n UNIX_TIMESTAMP(<time_column>) as time_sec,\n <value column> as value,\n <series name column> as metric\nFROM <table name>\nWHERE $__timeFilter(time_column)\nORDER BY <time_column> ASC\n",
+ "refId": "A"
+ },
+ {
+ "expr": "sum(nomad_client_allocations_pending{datacenter=\"$datacenter\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "Pending",
+ "refId": "B"
+ },
+ {
+ "expr": "sum(nomad_client_allocations_restart{datacenter=\"$datacenter\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 1,
+ "legendFormat": "Restart ",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Block/Peding/Restart",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 0,
+ "y": 13
+ },
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "host",
+ "repeatDirection": "v",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(nomad_client_allocs_cpu_total_percent[5m:10s]) > 1",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{task}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Usage Percent",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 3,
+ "format": "percentunit",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 13
+ },
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "host",
+ "repeatDirection": "v",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(nomad_client_allocs_cpu_total_ticks{instance=~\"$instance\"}) by(exported_job, task)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{task}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "CPU Total Ticks",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 3,
+ "format": "timeticks",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 0,
+ "y": 19
+ },
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "host",
+ "repeatDirection": "v",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(nomad_client_allocs_memory_rss{instance=~\"$instance\"}) by(exported_job, task)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{task}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "RSS",
+ "tooltip": {
+ "shared": false,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 3,
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 19
+ },
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "repeat": "host",
+ "repeatDirection": "v",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "avg(nomad_client_allocs_memory_cache{instance=~\"$instance\"}) by(exported_job, task)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{task}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Memory Cache",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 3,
+ "format": "decbytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "refresh": false,
+ "schemaVersion": 16,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": false,
+ "label": "DC",
+ "multi": false,
+ "name": "datacenter",
+ "options": [],
+ "query": "label_values(nomad_client_uptime, datacenter)",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Host",
+ "multi": true,
+ "name": "instance",
+ "options": [],
+ "query": "label_values(nomad_client_uptime{datacenter=~\"$datacenter\"}, instance)",
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Nomad",
+ "version": 1
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/nomad/grafana.hcl b/terraform-ci-infra/1n_nmd/grafana/conf/nomad/grafana.hcl
new file mode 100644
index 0000000000..7325c6aef4
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/nomad/grafana.hcl
@@ -0,0 +1,331 @@
+job "${job_name}" {
+ # The "region" parameter specifies the region in which to execute the job.
+ # If omitted, this inherits the default region name of "global".
+ # region = "global"
+ #
+ # The "datacenters" parameter specifies the list of datacenters which should
+ # be considered when placing this task. This must be provided.
+ datacenters = "${datacenters}"
+
+ # The "type" parameter controls the type of job, which impacts the scheduler's
+ # decision on placement. This configuration is optional and defaults to
+ # "service". For a full list of job types and their differences, please see
+ # the online documentation.
+ #
+ # For more information, please see the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/jobspec/schedulers
+ #
+ type = "service"
+
+ update {
+ # The "max_parallel" parameter specifies the maximum number of updates to
+ # perform in parallel. In this case, this specifies to update a single task
+ # at a time.
+ max_parallel = 1
+
+ health_check = "checks"
+
+ # The "min_healthy_time" parameter specifies the minimum time the allocation
+ # must be in the healthy state before it is marked as healthy and unblocks
+ # further allocations from being updated.
+ min_healthy_time = "10s"
+
+ # The "healthy_deadline" parameter specifies the deadline in which the
+ # allocation must be marked as healthy after which the allocation is
+ # automatically transitioned to unhealthy. Transitioning to unhealthy will
+ # fail the deployment and potentially roll back the job if "auto_revert" is
+ # set to true.
+ healthy_deadline = "3m"
+
+ # The "progress_deadline" parameter specifies the deadline in which an
+ # allocation must be marked as healthy. The deadline begins when the first
+ # allocation for the deployment is created and is reset whenever an allocation
+ # as part of the deployment transitions to a healthy state. If no allocation
+ # transitions to the healthy state before the progress deadline, the
+ # deployment is marked as failed.
+ progress_deadline = "10m"
+
+%{ if use_canary }
+ # The "canary" parameter specifies that changes to the job that would result
+ # in destructive updates should create the specified number of canaries
+ # without stopping any previous allocations. Once the operator determines the
+ # canaries are healthy, they can be promoted which unblocks a rolling update
+ # of the remaining allocations at a rate of "max_parallel".
+ #
+ # Further, setting "canary" equal to the count of the task group allows
+ # blue/green deployments. When the job is updated, a full set of the new
+ # version is deployed and upon promotion the old version is stopped.
+ canary = 1
+
+ # Specifies if the job should auto-promote to the canary version when all
+ # canaries become healthy during a deployment. Defaults to false which means
+ # canaries must be manually updated with the nomad deployment promote
+ # command.
+ auto_promote = true
+
+ # The "auto_revert" parameter specifies if the job should auto-revert to the
+ # last stable job on deployment failure. A job is marked as stable if all the
+ # allocations as part of its deployment were marked healthy.
+ auto_revert = true
+%{ endif }
+ }
+
+ # The "group" stanza defines a series of tasks that should be co-located on
+ # the same Nomad client. Any task within a group will be placed on the same
+ # client.
+ #
+ # For more information and examples on the "group" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/group
+ #
+ group "prod-group1-${service_name}" {
+ # The "count" parameter specifies the number of the task groups that should
+ # be running under this group. This value must be non-negative and defaults
+ # to 1.
+ count = ${group_count}
+
+
+ # The constraint allows restricting the set of eligible nodes. Constraints
+ # may filter on attributes or client metadata.
+ #
+ # For more information and examples on the "volume" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/constraint
+ #
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "!="
+ value = "arm64"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/task
+ #
+ task "prod-task1-${service_name}" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "docker"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ image = "${image}"
+ dns_servers = [ "$${attr.unique.network.ip-address}" ]
+ volumes = [
+ "secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml",
+ "secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml",
+ "secrets/grafana.ini:/etc/grafana/grafana.ini",
+ "secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json",
+ "secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json",
+ "secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json",
+ "secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json",
+ "secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json",
+ "secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json",
+ "secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json"
+ ]
+ }
+
+ artifact {
+ # Prometheus Node Exporter
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Docker cAdvisor
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Nomad
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Consul
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Prometheus
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Prometheus Blackbox Exporter HTTP
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json"
+ destination = "secrets/"
+ }
+
+ artifact {
+ # Prometheus Blackbox Exporter ICMP
+ source = "https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json"
+ destination = "secrets/"
+ }
+
+ # The "template" stanza instructs Nomad to manage a template, such as
+ # a configuration file or script. This template can optionally pull data
+ # from Consul or Vault to populate runtime configuration data.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/template
+ #
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/prometheus.yml"
+ data = <<EOH
+apiVersion: 1
+datasources:
+- name: Prometheus
+ type: prometheus
+ access: direct
+ orgId: 1
+ url: http://prometheus.service.consul:9090
+ basicAuth: false
+ isDefault: true
+ version: 1
+ editable: false
+EOH
+ }
+
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/dashboards.yml"
+ data = <<EOH
+apiVersion: 1
+providers:
+- name: dashboards
+ type: file
+ disableDeletion: false
+ updateIntervalSeconds: 10
+ allowUiUpdates: false
+ options:
+ path: /etc/grafana/provisioning/dashboards
+ foldersFromFilesStructure: true
+EOH
+ }
+
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/grafana.ini"
+ data = <<EOH
+app_mode = production
+
+[metrics]
+enabled = true
+
+[server]
+protocol = http
+http_port = ${port}
+root_url = http://${service_name}.service.consul:${port}
+enable_gzip = true
+;cert_file =
+;cert_key =
+
+[security]
+admin_user = grafanauser
+admin_password = Grafana1234
+secret_key = SW2YcwTIb9zpOOhoPsMm
+
+[users]
+allow_sign_up = false
+allow_org_create = false
+auto_assign_org = true
+auto_assign_org_role = Viewer
+default_theme = dark
+
+[auth.basic]
+enabled = true
+
+[auth]
+disable_login_form = false
+disable_signout_menu = false
+
+[auth.anonymous]
+enabled = false
+
+[log]
+mode = console
+level = info
+
+[log.console]
+level = info
+format = console
+EOH
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${service_name}"
+ port = "${service_name}"
+ tags = [ "${service_name}$${NOMAD_ALLOC_INDEX}" ]
+ check {
+ name = "Grafana Check Live"
+ type = "http"
+ protocol = "http"
+ tls_skip_verify = true
+ path = "/api/health"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # For more information and examples on the "resources" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = ${cpu}
+ memory = ${mem}
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${service_name}" {
+ static = ${port}
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/conf/prometheus.json b/terraform-ci-infra/1n_nmd/grafana/conf/prometheus.json
new file mode 100644
index 0000000000..0f07574b07
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/conf/prometheus.json
@@ -0,0 +1,3055 @@
+{
+ "__inputs": [
+ {
+ "name": "DS_PROMETHEUS",
+ "label": "prometheus",
+ "description": "A prometheus server with prometheus server metrics",
+ "type": "datasource",
+ "pluginId": "prometheus",
+ "pluginName": "Prometheus"
+ }
+ ],
+ "__requires": [
+ {
+ "type": "grafana",
+ "id": "grafana",
+ "name": "Grafana",
+ "version": "4.5.0-beta1"
+ },
+ {
+ "type": "panel",
+ "id": "graph",
+ "name": "Graph",
+ "version": ""
+ },
+ {
+ "type": "datasource",
+ "id": "prometheus",
+ "name": "Prometheus",
+ "version": "1.0.0"
+ },
+ {
+ "type": "panel",
+ "id": "singlestat",
+ "name": "Singlestat",
+ "version": ""
+ },
+ {
+ "type": "panel",
+ "id": "table",
+ "name": "Table",
+ "version": ""
+ }
+ ],
+ "annotations": {
+ "list": [
+ {
+ "datasource": "${DS_PROMETHEUS}",
+ "enable": true,
+ "expr": "sum(changes(prometheus_config_last_reload_success_timestamp_seconds{instance=~\"$instance\"}[10m])) by (instance)",
+ "hide": false,
+ "iconColor": "rgb(0, 96, 19)",
+ "limit": 100,
+ "name": "reloads",
+ "showIn": 0,
+ "step": "5m",
+ "type": "alert"
+ },
+ {
+ "datasource": "${DS_PROMETHEUS}",
+ "enable": true,
+ "expr": "count(sum(up{instance=\"$instance\"}) by (instance) < 1)",
+ "hide": false,
+ "iconColor": "rgba(255, 96, 96, 1)",
+ "limit": 100,
+ "name": "down",
+ "showIn": 0,
+ "step": "5m",
+ "type": "alert"
+ }
+ ]
+ },
+ "description": "Get started faster with Grafana Cloud then easily build these dashboards. https://grafana.com/products/cloud/\nOverview of metrics from Prometheus 2.0. \nUseful for using prometheus to monitor your prometheus.\nRevisions welcome!",
+ "editable": true,
+ "gnetId": 3662,
+ "graphTooltip": 0,
+ "hideControls": false,
+ "id": null,
+ "links": [],
+ "refresh": "30s",
+ "rows": [
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "decimals": 3,
+ "description": "Percentage of uptime during the most recent $interval period. Change the period with the 'interval' dropdown above.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": false
+ },
+ "id": 2,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "%",
+ "postfixFontSize": "100%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": true,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "avg(avg_over_time(up{instance=~\"$instance\",job=~\"$job\"}[$interval]) * 100)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "90, 99",
+ "title": "Uptime [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Servers which are DOWN RIGHT NOW! \nFIX THEM!!",
+ "fontSize": "100%",
+ "hideTimeOverride": true,
+ "id": 25,
+ "links": [],
+ "pageSize": null,
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "span": 3,
+ "styles": [
+ {
+ "alias": "Time",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "hidden"
+ },
+ {
+ "alias": "",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "pattern": "/__name__|job|Value/",
+ "thresholds": [],
+ "type": "hidden",
+ "unit": "short"
+ },
+ {
+ "alias": " ",
+ "colorMode": "cell",
+ "colors": [
+ "rgba(255, 0, 0, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(255, 0, 0, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "link": false,
+ "pattern": "instance",
+ "thresholds": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "expr": "up{instance=~\"$instance\",job=~\"$job\"} < 1",
+ "format": "table",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "timeFrom": "1s",
+ "title": "Currently Down",
+ "transform": "table",
+ "type": "table"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Total number of time series in prometheus",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": true,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(prometheus_tsdb_head_series{job=~\"$job\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "B",
+ "step": 40
+ }
+ ],
+ "thresholds": "1000000,2000000",
+ "title": "Total Series",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 14,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 3,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": true,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(prometheus_tsdb_head_chunks{job=~\"$job\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "B",
+ "step": 40
+ }
+ ],
+ "thresholds": "",
+ "title": "Memory Chunks",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "at a glance",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 236,
+ "panels": [
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "The total number of rule group evaluations missed due to slow rule group evaluation.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 16,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum_over_time(prometheus_evaluator_iterations_missed_total{job=~\"$job\",instance=~\"$instance\"}[$interval]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "1,10",
+ "title": "Missed Iterations [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "The total number of rule group evaluations skipped due to throttled metric storage.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 18,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum_over_time(prometheus_evaluator_iterations_skipped_total{job=~\"$job\",instance=~\"$instance\"}[$interval]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "1,10",
+ "title": "Skipped Iterations [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Total number of scrapes that hit the sample limit and were rejected.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 19,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum_over_time(prometheus_target_scrapes_exceeded_sample_limit_total{job=~\"$job\",instance=~\"$instance\"}[$interval]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "1,10",
+ "title": "Tardy Scrapes [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Number of times the database failed to reload block data from disk.",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 13,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum_over_time(prometheus_tsdb_reloads_failures_total{job=~\"$job\",instance=~\"$instance\"}[$interval]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "1,10",
+ "title": "Reload Failures [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": true,
+ "colors": [
+ "rgba(50, 172, 45, 0.97)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(245, 54, 54, 0.9)"
+ ],
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Sum of all skipped scrapes",
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 20,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": "",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "span": 4,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": false
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "sum(sum_over_time(prometheus_target_scrapes_exceeded_sample_limit_total{job=~\"$job\",instance=~\"$instance\"}[$interval])) + \nsum(sum_over_time(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=~\"$job\",instance=~\"$instance\"}[$interval])) + \nsum(sum_over_time(prometheus_target_scrapes_sample_out_of_bounds_total{job=~\"$job\",instance=~\"$instance\"}[$interval])) + \nsum(sum_over_time(prometheus_target_scrapes_sample_out_of_order_total{job=~\"$job\",instance=~\"$instance\"}[$interval])) ",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "refId": "A",
+ "step": 40
+ }
+ ],
+ "thresholds": "1,10",
+ "title": "Skipped Scrapes [$interval]",
+ "type": "singlestat",
+ "valueFontSize": "100%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "quick numbers",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "All non-zero failures and errors",
+ "fill": 1,
+ "id": 33,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(increase(net_conntrack_dialer_conn_failed_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Failed Connections",
+ "refId": "A",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_evaluator_iterations_missed_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Missed Iterations",
+ "refId": "B",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_evaluator_iterations_skipped_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Skipped Iterations",
+ "refId": "C",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_rule_evaluation_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Evaluation",
+ "refId": "D",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_azure_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Azure Refresh",
+ "refId": "E",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_consul_rpc_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Consul RPC",
+ "refId": "F",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_dns_lookup_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "DNS Lookup",
+ "refId": "G",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_ec2_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "EC2 Refresh",
+ "refId": "H",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_gce_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "GCE Refresh",
+ "refId": "I",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_marathon_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Marathon Refresh",
+ "refId": "J",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_openstack_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Openstack Refresh",
+ "refId": "K",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_sd_triton_refresh_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Triton Refresh",
+ "refId": "L",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_target_scrapes_exceeded_sample_limit_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Sample Limit",
+ "refId": "M",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_target_scrapes_sample_duplicate_timestamp_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Duplicate Timestamp",
+ "refId": "N",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_target_scrapes_sample_out_of_bounds_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Timestamp Out of Bounds",
+ "refId": "O",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_target_scrapes_sample_out_of_order_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Sample Out of Order",
+ "refId": "P",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_treecache_zookeeper_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Zookeeper",
+ "refId": "Q",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_tsdb_compactions_failed_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "TSDB Compactions",
+ "refId": "R",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_tsdb_head_series_not_found{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Series Not Found",
+ "refId": "S",
+ "step": 2
+ },
+ {
+ "expr": "sum(increase(prometheus_tsdb_reloads_failures_total{instance=~\"$instance\"}[5m])) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Reload",
+ "refId": "T",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failures and Errors",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Errors",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "errors",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": "250px",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 1,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "up{instance=~\"$instance\",job=~\"$job\"}",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Upness (stacked)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "none",
+ "label": "Up",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": false
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 5,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "prometheus_tsdb_head_chunks{job=~\"$job\",instance=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Storage Memory Chunks",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Chunks",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "up",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 3,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "prometheus_tsdb_head_series{job=~\"$job\",instance=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Series Count",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Series",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 32,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "removed",
+ "transform": "negative-Y"
+ }
+ ],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum( increase(prometheus_tsdb_head_series_created_total{instance=~\"$instance\"}[5m]) )",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "created",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "sum( increase(prometheus_tsdb_head_series_removed_total{instance=~\"$instance\"}[5m]) )",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "removed",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Series Created / Removed",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Series Count",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "series",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {
+ "10.58.3.10:80": "#BA43A9"
+ },
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Rate of total number of appended samples",
+ "fill": 1,
+ "id": 4,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(prometheus_tsdb_head_samples_appended_total{job=~\"$job\",instance=~\"$instance\"}[1m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Appended Samples per Second",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Samples / Second",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "appended samples",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Total number of syncs that were executed on a scrape pool.",
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(prometheus_target_scrape_pool_sync_total{job=~\"$job\",instance=~\"$instance\"}) by (scrape_job)",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "{{scrape_job}}",
+ "refId": "B",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Scrape Sync Total",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Syncs",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Actual interval to sync the scrape pool.",
+ "fill": 1,
+ "id": 21,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(prometheus_target_sync_length_seconds_sum{job=~\"$job\",instance=~\"$instance\"}[2m])) by (scrape_job) * 1000",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{scrape_job}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Target Sync",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Milliseconds",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "sync",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 29,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "scrape_duration_seconds{instance=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Scrape Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Seconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Total number of rejected scrapes",
+ "fill": 1,
+ "id": 30,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(prometheus_target_scrapes_exceeded_sample_limit_total{job=~\"$job\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "exceeded sample limit",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "sum(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=~\"$job\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "duplicate timestamp",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "sum(prometheus_target_scrapes_sample_out_of_bounds_total{job=~\"$job\",instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "out of bounds",
+ "refId": "C",
+ "step": 4
+ },
+ {
+ "expr": "sum(prometheus_target_scrapes_sample_out_of_order_total{job=~\"$job\",instance=~\"$instance\"}) ",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "out of order",
+ "refId": "D",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Rejected Scrapes",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "short",
+ "label": "Scrapes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "scrapes",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "The duration of rule group evaluations",
+ "fill": 1,
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "1000 * rate(prometheus_evaluator_duration_seconds_sum{job=~\"$job\", instance=~\"$instance\"}[5m]) / rate(prometheus_evaluator_duration_seconds_count{job=~\"$job\", instance=~\"$instance\"}[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "E",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Average Rule Evaluation Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Milliseconds",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 11,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(http_request_duration_microseconds_count{job=~\"$job\",instance=~\"$instance\"}[1m])) by (handler) > 0",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{handler}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "HTTP Request Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Microseconds",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 15,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(prometheus_engine_query_duration_seconds_sum{job=~\"$job\",instance=~\"$instance\"}) by (slice)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{slice}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Prometheus Engine Query Duration Seconds",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Seconds",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "Rule-group evaluations \n - total\n - missed due to slow rule group evaluation\n - skipped due to throttled metric storage",
+ "fill": 1,
+ "id": 31,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(prometheus_evaluator_iterations_total{job=~\"$job\", instance=~\"$instance\"}[5m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Total",
+ "refId": "B",
+ "step": 4
+ },
+ {
+ "expr": "sum(rate(prometheus_evaluator_iterations_missed_total{job=~\"$job\", instance=~\"$instance\"}[5m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Missed",
+ "refId": "A",
+ "step": 4
+ },
+ {
+ "expr": "sum(rate(prometheus_evaluator_iterations_skipped_total{job=~\"$job\", instance=~\"$instance\"}[5m]))",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "Skipped",
+ "refId": "C",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Rule Evaluator Iterations",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "iterations",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "durations",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 22,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "rate(prometheus_notifications_sent_total[5m])",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Notifications Sent",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Notifications",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "notifications",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 23,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "(time() - prometheus_config_last_reload_success_timestamp_seconds{job=~\"$job\",instance=~\"$instance\"}) / 60",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Minutes Since Successful Config Reload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Minutes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 24,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "prometheus_config_last_reload_successful{job=~\"$job\",instance=~\"$instance\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 4
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Successful Config Reload",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": 0,
+ "format": "short",
+ "label": "Success",
+ "logBase": 1,
+ "max": "1",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "config",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "GC invocation durations",
+ "fill": 1,
+ "id": 28,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 12,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(go_gc_duration_seconds_sum{instance=~\"$instance\",job=~\"$job\"}[2m])) by (instance)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{instance}}",
+ "refId": "A",
+ "step": 2
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "GC Rate / 2m",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "garbage collection",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": true,
+ "height": 250,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "description": "This is probably wrong! Please help.",
+ "fill": 1,
+ "id": 26,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "allocated",
+ "stack": false
+ }
+ ],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(go_memstats_alloc_bytes_total{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": true,
+ "intervalFactor": 2,
+ "legendFormat": "alloc_bytes_total",
+ "refId": "A",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_alloc_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "intervalFactor": 2,
+ "legendFormat": "allocated",
+ "refId": "B",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_buck_hash_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "profiling bucket hash table",
+ "refId": "C",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_gc_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "GC metadata",
+ "refId": "D",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_heap_alloc_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap in-use",
+ "refId": "E",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_heap_idle_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap idle",
+ "refId": "F",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_heap_inuse_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap in use",
+ "refId": "G",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_heap_released_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap released",
+ "refId": "H",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_heap_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap system",
+ "refId": "I",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_mcache_inuse_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "mcache in use",
+ "refId": "J",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_mcache_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "mcache sys",
+ "refId": "K",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_mspan_inuse_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "mspan in use",
+ "refId": "L",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_mspan_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "mspan sys",
+ "refId": "M",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_next_gc_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "heap next gc",
+ "refId": "N",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_other_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "other sys",
+ "refId": "O",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_stack_inuse_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "stack in use",
+ "refId": "P",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_stack_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "stack sys",
+ "refId": "Q",
+ "step": 10
+ },
+ {
+ "expr": "sum(go_memstats_sys_bytes{job=~\"$job\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "sys",
+ "refId": "R",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Go Memory Usage (FIXME)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 9,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "prometheus_target_interval_length_seconds{instance=~\"$instance\", job=~\"$job\"}",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{quantile}} {{interval}}",
+ "refId": "A",
+ "step": 20
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Scrape Duration",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Seconds",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "${DS_PROMETHEUS}",
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 3,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(rate(prometheus_target_interval_length_seconds_count{job=~\"$job\",instance=~\"$instance\"}[5m])) by (interval)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{interval}}",
+ "refId": "A",
+ "step": 20
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Target Scrapes / 5m",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": "Scrapes",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": false,
+ "title": "Broken, ignore",
+ "titleSize": "h6"
+ }
+ ],
+ "schemaVersion": 14,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "datasource",
+ "multi": false,
+ "name": "DS_PROMETHEUS",
+ "options": [],
+ "query": "prometheus",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "type": "datasource"
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "job",
+ "options": [],
+ "query": "query_result(prometheus_tsdb_head_samples_appended_total)",
+ "refresh": 2,
+ "regex": "/.*job=\"([^\"]+)/",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "${DS_PROMETHEUS}",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "instance",
+ "options": [],
+ "query": "query_result(up{job=~\"$job\"})",
+ "refresh": 2,
+ "regex": "/.*instance=\"([^\"]+).*/",
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "1h",
+ "value": "1h"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "interval",
+ "options": [
+ {
+ "selected": true,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "3h",
+ "value": "3h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "2d",
+ "value": "2d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ },
+ {
+ "selected": false,
+ "text": "90d",
+ "value": "90d"
+ },
+ {
+ "selected": false,
+ "text": "180d",
+ "value": "180d"
+ }
+ ],
+ "query": "1h, 3h, 6h, 12h, 1d, 2d, 7d, 30d, 90d, 180d",
+ "type": "custom"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-4h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Prometheus",
+ "version": 1
+}
diff --git a/terraform-ci-infra/1n_nmd/grafana/main.tf b/terraform-ci-infra/1n_nmd/grafana/main.tf
new file mode 100644
index 0000000000..b67ba03985
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/main.tf
@@ -0,0 +1,24 @@
+locals {
+ datacenters = join(",", var.nomad_datacenters)
+}
+
+data "template_file" "nomad_job_grafana" {
+ template = file("${path.module}/conf/nomad/grafana.hcl")
+ vars = {
+ datacenters = local.datacenters
+ job_name = var.grafana_job_name
+ use_canary = var.grafana_use_canary
+ group_count = var.grafana_group_count
+ service_name = var.grafana_service_name
+ use_vault_provider = var.grafana_vault_secret.use_vault_provider
+ image = var.grafana_container_image
+ cpu = var.grafana_cpu
+ mem = var.grafana_mem
+ port = var.grafana_port
+ }
+}
+
+resource "nomad_job" "nomad_job_grafana" {
+ jobspec = data.template_file.nomad_job_grafana.rendered
+ detach = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/grafana/variables.tf b/terraform-ci-infra/1n_nmd/grafana/variables.tf
new file mode 100644
index 0000000000..0c2382b16a
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/grafana/variables.tf
@@ -0,0 +1,66 @@
+# Nomad
+variable "nomad_datacenters" {
+ description = "Nomad data centers"
+ type = list(string)
+ default = [ "dc1" ]
+}
+
+# Grafana
+variable "grafana_job_name" {
+ description = "Grafana job name"
+ type = string
+ default = "grafana"
+}
+
+variable "grafana_group_count" {
+ description = "Number of grafana group instances"
+ type = number
+ default = 1
+}
+
+variable "grafana_service_name" {
+ description = "Grafana service name"
+ type = string
+ default = "grafana"
+}
+
+variable "grafana_container_image" {
+ description = "Grafana docker image"
+ type = string
+ default = "grafana/grafana:7.3.7"
+}
+
+variable "grafana_use_canary" {
+ description = "Uses canary deployment"
+ type = bool
+ default = false
+}
+
+variable "grafana_vault_secret" {
+ description = "Set of properties to be able to fetch secret from vault"
+ type = object({
+ use_vault_provider = bool,
+ vault_kv_policy_name = string,
+ vault_kv_path = string,
+ vault_kv_field_access_key = string,
+ vault_kv_field_secret_key = string
+ })
+}
+
+variable "grafana_cpu" {
+ description = "Grafana CPU allocation"
+ type = number
+ default = 2000
+}
+
+variable "grafana_mem" {
+ description = "Grafana RAM allocation"
+ type = number
+ default = 8192
+}
+
+variable "grafana_port" {
+ description = "Grafana TCP allocation"
+ type = number
+ default = 3000
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/main.tf b/terraform-ci-infra/1n_nmd/main.tf
new file mode 100644
index 0000000000..fdf3801a35
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/main.tf
@@ -0,0 +1,185 @@
+# For convenience in simple configurations, a child module automatically
+# inherits default (un-aliased) provider configurations from its parent.
+# This means that explicit provider blocks appear only in the root module,
+# and downstream modules can simply declare resources for that provider
+# and have them automatically associated with the root provider
+# configurations.
+module "alertmanager" {
+ source = "./alertmanager"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+
+ # alertmanager
+ alertmanager_job_name = "prod-alertmanager"
+ alertmanager_use_canary = true
+ alertmanager_group_count = 1
+ alertmanager_vault_secret = {
+ use_vault_provider = false,
+ vault_kv_policy_name = "kv-secret",
+ vault_kv_path = "secret/data/prometheus",
+ vault_kv_field_access_key = "access_key",
+ vault_kv_field_secret_key = "secret_key"
+ }
+ alertmanager_version = "0.21.0"
+ alertmanager_cpu = 1000
+ alertmanager_mem = 1024
+ alertmanager_port = 9093
+ alertmanager_slack_api_key = "TE07RD1V1/B01L7PQK9S8/pbADGhhhj60JSxHRi3K0NoW6"
+ alertmanager_slack_channel = "fdio-infra-monitoring"
+}
+
+module "exporter" {
+ source = "./exporter"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+
+ # exporter
+ exporter_job_name = "prod-exporter"
+ exporter_use_canary = false
+
+ # node
+ node_version = "1.0.1"
+ node_port = 9100
+
+ # blackbox
+ blackbox_version = "0.18.0"
+ blackbox_port = 9115
+
+ # cadvisor
+ cadvisor_image = "gcr.io/cadvisor/cadvisor:latest"
+ cadvisor_port = 8080
+}
+
+module "grafana" {
+ source = "./grafana"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+
+ # grafana
+ grafana_job_name = "prod-grafana"
+ grafana_use_canary = true
+ grafana_group_count = 1
+ grafana_vault_secret = {
+ use_vault_provider = false,
+ vault_kv_policy_name = "kv-secret",
+ vault_kv_path = "secret/data/grafana",
+ vault_kv_field_access_key = "access_key",
+ vault_kv_field_secret_key = "secret_key"
+ }
+ grafana_container_image = "grafana/grafana:7.3.7"
+ grafana_cpu = 1000
+ grafana_mem = 2048
+ grafana_port = 3000
+}
+
+module "minio" {
+ source = "./minio"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+ nomad_host_volume = "prod-volume-data1-1"
+
+ # minio
+ minio_job_name = "prod-minio"
+ minio_group_count = 4
+ minio_service_name = "storage"
+ minio_host = "http://10.32.8.1{4...7}"
+ minio_port = 9000
+ minio_container_image = "minio/minio:RELEASE.2020-12-03T05-49-24Z"
+ minio_vault_secret = {
+ use_vault_provider = false,
+ vault_kv_policy_name = "kv-secret",
+ vault_kv_path = "secret/data/minio",
+ vault_kv_field_access_key = "access_key",
+ vault_kv_field_secret_key = "secret_key"
+ }
+ minio_data_dir = "/data/"
+ minio_use_host_volume = true
+ minio_use_canary = true
+ minio_envs = [ "MINIO_BROWSER=\"off\"" ]
+
+ # minio client
+ mc_job_name = "prod-mc"
+ mc_container_image = "minio/mc:RELEASE.2020-12-10T01-26-17Z"
+ mc_extra_commands = [
+ "mc policy set public LOCALMINIO/logs.fd.io",
+ "mc policy set public LOCALMINIO/docs.fd.io",
+ "mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io",
+ "mc admin user add LOCALMINIO storage Storage1234",
+ "mc admin policy set LOCALMINIO writeonly user=storage"
+ ]
+ minio_buckets = [ "logs.fd.io", "docs.fd.io" ]
+}
+
+module "nginx" {
+ source = "./nginx"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+
+ # nginx
+ nginx_job_name = "prod-nginx"
+}
+
+module "prometheus" {
+ source = "./prometheus"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+ nomad_host_volume = "prod-volume-data1-1"
+
+ # prometheus
+ prometheus_job_name = "prod-prometheus"
+ prometheus_use_canary = true
+ prometheus_group_count = 4
+ prometheus_vault_secret = {
+ use_vault_provider = false,
+ vault_kv_policy_name = "kv-secret",
+ vault_kv_path = "secret/data/prometheus",
+ vault_kv_field_access_key = "access_key",
+ vault_kv_field_secret_key = "secret_key"
+ }
+ prometheus_data_dir = "/data/"
+ prometheus_use_host_volume = true
+ prometheus_version = "2.24.0"
+ prometheus_cpu = 2000
+ prometheus_mem = 8192
+ prometheus_port = 9090
+}
+
+module "vpp_device" {
+ source = "./vpp_device"
+ providers = {
+ nomad = nomad.yul1
+ }
+
+ # nomad
+ nomad_datacenters = [ "yul1" ]
+
+ # csit_shim
+ csit_shim_job_name = "prod-device-csit-shim"
+ csit_shim_group_count = "1"
+ csit_shim_cpu = "1000"
+ csit_shim_mem = "5000"
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/minio/outputs.tf b/terraform-ci-infra/1n_nmd/minio/outputs.tf
new file mode 100644
index 0000000000..309cd3b9d0
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/minio/outputs.tf
@@ -0,0 +1,4 @@
+output "minio_service_name" {
+ description = "Minio service name"
+ value = data.template_file.nomad_job_minio.vars.service_name
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/prometheus/conf/nomad/prometheus.hcl b/terraform-ci-infra/1n_nmd/prometheus/conf/nomad/prometheus.hcl
new file mode 100644
index 0000000000..2d74662f31
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/prometheus/conf/nomad/prometheus.hcl
@@ -0,0 +1,569 @@
+job "${job_name}" {
+ # The "region" parameter specifies the region in which to execute the job.
+ # If omitted, this inherits the default region name of "global".
+ # region = "global"
+ #
+ # The "datacenters" parameter specifies the list of datacenters which should
+ # be considered when placing this task. This must be provided.
+ datacenters = "${datacenters}"
+
+ # The "type" parameter controls the type of job, which impacts the scheduler's
+ # decision on placement. This configuration is optional and defaults to
+ # "service". For a full list of job types and their differences, please see
+ # the online documentation.
+ #
+ # For more information, please see the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/jobspec/schedulers
+ #
+ type = "service"
+
+ update {
+ # The "max_parallel" parameter specifies the maximum number of updates to
+ # perform in parallel. In this case, this specifies to update a single task
+ # at a time.
+ max_parallel = 1
+
+ health_check = "checks"
+
+ # The "min_healthy_time" parameter specifies the minimum time the allocation
+ # must be in the healthy state before it is marked as healthy and unblocks
+ # further allocations from being updated.
+ min_healthy_time = "10s"
+
+ # The "healthy_deadline" parameter specifies the deadline in which the
+ # allocation must be marked as healthy after which the allocation is
+ # automatically transitioned to unhealthy. Transitioning to unhealthy will
+ # fail the deployment and potentially roll back the job if "auto_revert" is
+ # set to true.
+ healthy_deadline = "3m"
+
+ # The "progress_deadline" parameter specifies the deadline in which an
+ # allocation must be marked as healthy. The deadline begins when the first
+ # allocation for the deployment is created and is reset whenever an allocation
+ # as part of the deployment transitions to a healthy state. If no allocation
+ # transitions to the healthy state before the progress deadline, the
+ # deployment is marked as failed.
+ progress_deadline = "10m"
+
+%{ if use_canary }
+ # The "canary" parameter specifies that changes to the job that would result
+ # in destructive updates should create the specified number of canaries
+ # without stopping any previous allocations. Once the operator determines the
+ # canaries are healthy, they can be promoted which unblocks a rolling update
+ # of the remaining allocations at a rate of "max_parallel".
+ #
+ # Further, setting "canary" equal to the count of the task group allows
+ # blue/green deployments. When the job is updated, a full set of the new
+ # version is deployed and upon promotion the old version is stopped.
+ canary = 1
+
+ # Specifies if the job should auto-promote to the canary version when all
+ # canaries become healthy during a deployment. Defaults to false which means
+ # canaries must be manually updated with the nomad deployment promote
+ # command.
+ auto_promote = true
+
+ # The "auto_revert" parameter specifies if the job should auto-revert to the
+ # last stable job on deployment failure. A job is marked as stable if all the
+ # allocations as part of its deployment were marked healthy.
+ auto_revert = true
+%{ endif }
+ }
+
+ # The "group" stanza defines a series of tasks that should be co-located on
+ # the same Nomad client. Any task within a group will be placed on the same
+ # client.
+ #
+ # For more information and examples on the "group" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/group
+ #
+ group "prod-group1-${service_name}" {
+ # The "count" parameter specifies the number of the task groups that should
+ # be running under this group. This value must be non-negative and defaults
+ # to 1.
+ count = ${group_count}
+
+ # The volume stanza allows the group to specify that it requires a given
+ # volume from the cluster.
+ #
+ # For more information and examples on the "volume" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/volume
+ #
+ %{ if use_host_volume }
+ volume "prod-volume1-${service_name}" {
+ type = "host"
+ read_only = false
+ source = "${host_volume}"
+ }
+ %{ endif }
+
+ # The constraint allows restricting the set of eligible nodes. Constraints
+ # may filter on attributes or client metadata.
+ #
+ # For more information and examples on the "volume" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/constraint
+ #
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "!="
+ value = "arm64"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/task
+ #
+ task "prod-task1-${service_name}" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "exec"
+
+ %{ if use_host_volume }
+ volume_mount {
+ volume = "prod-volume1-${service_name}"
+ destination = "${data_dir}"
+ read_only = false
+ }
+ %{ endif }
+
+ %{ if use_vault_provider }
+ vault {
+ policies = "${vault_kv_policy_name}"
+ }
+ %{ endif }
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ command = "local/prometheus-${version}.linux-amd64/prometheus"
+ args = [
+ "--config.file=secrets/prometheus.yml",
+ "--storage.tsdb.path=${data_dir}prometheus/",
+ "--storage.tsdb.retention.time=15d"
+ ]
+ }
+
+ # The artifact stanza instructs Nomad to fetch and unpack a remote resource,
+ # such as a file, tarball, or binary. Nomad downloads artifacts using the
+ # popular go-getter library, which permits downloading artifacts from a
+ # variety of locations using a URL as the input source.
+ #
+ # For more information and examples on the "artifact" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/artifact
+ #
+ artifact {
+ source = "${url}"
+ }
+
+ # The "template" stanza instructs Nomad to manage a template, such as
+ # a configuration file or script. This template can optionally pull data
+ # from Consul or Vault to populate runtime configuration data.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/template
+ #
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/alerts.yml"
+ left_delimiter = "{{{"
+ right_delimiter = "}}}"
+ data = <<EOH
+---
+groups:
+- name: "Consul"
+ rules:
+ - alert: ConsulServiceHealthcheckFailed
+ expr: consul_catalog_service_node_healthy == 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Consul service healthcheck failed (instance {{ $labels.instance }})."
+ description: "Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`."
+ - alert: ConsulMissingMasterNode
+ expr: consul_raft_peers < 3
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Consul missing master node (instance {{ $labels.instance }})."
+ description: "Numbers of consul raft peers should be 3, in order to preserve quorum."
+ - alert: ConsulAgentUnhealthy
+ expr: consul_health_node_status{status="critical"} == 1
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Consul agent unhealthy (instance {{ $labels.instance }})."
+ description: "A Consul agent is down."
+- name: "Hosts"
+ rules:
+ - alert: NodeDown
+ expr: up == 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus target missing (instance {{ $labels.instance }})."
+ description: "A Prometheus target has disappeared. An exporter might be crashed."
+ - alert: HostHighCpuLoad
+ expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host high CPU load (instance {{ $labels.instance }})."
+ description: "CPU load is > 80%."
+ - alert: HostOutOfMemory
+ expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
+ for: 2m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host out of memory (instance {{ $labels.instance }})."
+ description: "Node memory is filling up (< 10% left)."
+ - alert: HostOomKillDetected
+ expr: increase(node_vmstat_oom_kill[1m]) > 0
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host OOM kill detected (instance {{ $labels.instance }})."
+ description: "OOM kill detected."
+ - alert: HostMemoryUnderMemoryPressure
+ expr: rate(node_vmstat_pgmajfault[1m]) > 1000
+ for: 2m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host memory under memory pressure (instance {{ $labels.instance }})."
+ description: "The node is under heavy memory pressure. High rate of major page faults."
+ - alert: HostOutOfDiskSpace
+ expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
+ for: 2m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host out of disk space (instance {{ $labels.instance }})."
+ description: "Disk is almost full (< 10% left)."
+ - alert: HostRaidDiskFailure
+ expr: node_md_disks{state="failed"} > 0
+ for: 2m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host RAID disk failure (instance {{ $labels.instance }})."
+ description: "At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap."
+ - alert: HostConntrackLimit
+ expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit > 0.8
+ for: 5m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host conntrack limit (instance {{ $labels.instance }})."
+ description: "The number of conntrack is approching limit."
+ - alert: HostNetworkInterfaceSaturated
+ expr: (rate(node_network_receive_bytes_total{device!~"^tap.*"}[1m]) + rate(node_network_transmit_bytes_total{device!~"^tap.*"}[1m])) / node_network_speed_bytes{device!~"^tap.*"} > 0.8
+ for: 1m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host Network Interface Saturated (instance {{ $labels.instance }})."
+ description: "The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded."
+ - alert: HostSystemdServiceCrashed
+ expr: node_systemd_unit_state{state="failed"} == 1
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host SystemD service crashed (instance {{ $labels.instance }})."
+ description: "SystemD service crashed."
+ - alert: HostEdacCorrectableErrorsDetected
+ expr: increase(node_edac_correctable_errors_total[1m]) > 0
+ for: 0m
+ labels:
+ severity: info
+ annotations:
+ summary: "Host EDAC Correctable Errors detected (instance {{ $labels.instance }})."
+ description: '{{ $labels.instance }} has had {{ printf "%.0f" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'
+ - alert: HostEdacUncorrectableErrorsDetected
+ expr: node_edac_uncorrectable_errors_total > 0
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }})."
+ description: '{{ $labels.instance }} has had {{ printf "%.0f" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'
+- name: "Min.io"
+ rules:
+ - alert: MinioDiskOffline
+ expr: minio_offline_disks > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Minio disk offline (instance {{ $labels.instance }})"
+ description: "Minio disk is offline."
+ - alert: MinioStorageSpaceExhausted
+ expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 < 10
+ for: 2m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Minio storage space exhausted (instance {{ $labels.instance }})."
+ description: "Minio storage space is low (< 10 GB)."
+- name: "Prometheus"
+ rules:
+ - alert: PrometheusConfigurationReloadFailure
+ expr: prometheus_config_last_reload_successful != 1
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Prometheus configuration reload failure (instance {{ $labels.instance }})."
+ description: "Prometheus configuration reload error."
+ - alert: PrometheusTooManyRestarts
+ expr: changes(process_start_time_seconds{job=~"prometheus|pushgateway|alertmanager"}[15m]) > 2
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Prometheus too many restarts (instance {{ $labels.instance }})."
+ description: "Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping."
+ - alert: PrometheusAlertmanagerConfigurationReloadFailure
+ expr: alertmanager_config_last_reload_successful != 1
+ for: 0m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }})."
+ description: "AlertManager configuration reload error."
+ - alert: PrometheusRuleEvaluationFailures
+ expr: increase(prometheus_rule_evaluation_failures_total[3m]) > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus rule evaluation failures (instance {{ $labels.instance }})."
+ description: "Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts."
+ - alert: PrometheusTargetScrapingSlow
+ expr: prometheus_target_interval_length_seconds{quantile="0.9"} > 60
+ for: 5m
+ labels:
+ severity: warning
+ annotations:
+ summary: "Prometheus target scraping slow (instance {{ $labels.instance }})."
+ description: "Prometheus is scraping exporters slowly."
+ - alert: PrometheusTsdbCompactionsFailed
+ expr: increase(prometheus_tsdb_compactions_failed_total[1m]) > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus TSDB compactions failed (instance {{ $labels.instance }})."
+ description: "Prometheus encountered {{ $value }} TSDB compactions failures."
+ - alert: PrometheusTsdbHeadTruncationsFailed
+ expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus TSDB head truncations failed (instance {{ $labels.instance }})."
+ description: "Prometheus encountered {{ $value }} TSDB head truncation failures."
+ - alert: PrometheusTsdbWalCorruptions
+ expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus TSDB WAL corruptions (instance {{ $labels.instance }})."
+ description: "Prometheus encountered {{ $value }} TSDB WAL corruptions."
+ - alert: PrometheusTsdbWalTruncationsFailed
+ expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) > 0
+ for: 0m
+ labels:
+ severity: critical
+ annotations:
+ summary: "Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }})."
+ description: "Prometheus encountered {{ $value }} TSDB WAL truncation failures."
+EOH
+ }
+
+ template {
+ change_mode = "noop"
+ change_signal = "SIGINT"
+ destination = "secrets/prometheus.yml"
+ data = <<EOH
+---
+global:
+ scrape_interval: 5s
+ scrape_timeout: 5s
+ evaluation_interval: 5s
+
+alerting:
+ alertmanagers:
+ - consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'alertmanager' ]
+
+rule_files:
+ - 'alerts.yml'
+
+scrape_configs:
+
+ - job_name: 'Nomad Cluster'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'nomad-client', 'nomad' ]
+ relabel_configs:
+ - source_labels: [__meta_consul_tags]
+ regex: '(.*)http(.*)'
+ action: keep
+ metrics_path: /v1/metrics
+ params:
+ format: [ 'prometheus' ]
+
+ - job_name: 'Consul Cluster'
+ static_configs:
+ - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]
+ metrics_path: /v1/agent/metrics
+ params:
+ format: [ 'prometheus' ]
+
+ - job_name: 'Alertmanager'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'alertmanager' ]
+
+ - job_name: 'Blackbox Exporter (icmp)'
+ static_configs:
+ - targets: [ 'gerrit.fd.io' ]
+ - targets: [ 'jenkins.fd.io' ]
+ - targets: [ '10.30.51.32' ]
+ params:
+ module: [ 'icmp_v4' ]
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: localhost:9115
+ metrics_path: /probe
+
+ - job_name: 'Blackbox Exporter (http)'
+ static_configs:
+ - targets: [ 'gerrit.fd.io' ]
+ - targets: [ 'jenkins.fd.io' ]
+ params:
+ module: [ 'http_2xx' ]
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: localhost:9115
+ metrics_path: /probe
+
+ - job_name: 'cAdvisor Exporter'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'cadvisorexporter' ]
+
+ - job_name: 'Grafana'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'grafana' ]
+
+ - job_name: 'Node Exporter'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'nodeexporter' ]
+
+ - job_name: 'Prometheus'
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'prometheus' ]
+
+ - job_name: 'Minio'
+ bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg
+ consul_sd_configs:
+ - server: '{{ env "NOMAD_IP_prometheus" }}:8500'
+ services: [ 'storage' ]
+ metrics_path: /minio/prometheus/metrics
+EOH
+ }
+
+ # The service stanza instructs Nomad to register a service with Consul.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/service
+ #
+ service {
+ name = "${service_name}"
+ port = "${service_name}"
+ tags = [ "${service_name}$${NOMAD_ALLOC_INDEX}" ]
+ check {
+ name = "Prometheus Check Live"
+ type = "http"
+ path = "/-/healthy"
+ interval = "10s"
+ timeout = "2s"
+ }
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # For more information and examples on the "resources" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources
+ #
+ resources {
+ cpu = ${cpu}
+ memory = ${mem}
+ # The network stanza specifies the networking requirements for the task
+ # group, including the network mode and port allocations. When scheduling
+ # jobs in Nomad they are provisioned across your fleet of machines along
+ # with other jobs and services. Because you don't know in advance what host
+ # your job will be provisioned on, Nomad will provide your tasks with
+ # network configuration when they start up.
+ #
+ # For more information and examples on the "template" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/network
+ #
+ network {
+ port "${service_name}" {
+ static = ${port}
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/prometheus/main.tf b/terraform-ci-infra/1n_nmd/prometheus/main.tf
new file mode 100644
index 0000000000..9506ba3941
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/prometheus/main.tf
@@ -0,0 +1,37 @@
+locals {
+ datacenters = join(",", var.nomad_datacenters)
+
+ prometheus_url = join("",
+ [
+ "https://github.com",
+ "/prometheus/prometheus/releases/download/",
+ "v${var.prometheus_version}/",
+ "prometheus-${var.prometheus_version}.linux-amd64.tar.gz"
+ ]
+ )
+}
+
+data "template_file" "nomad_job_prometheus" {
+ template = file("${path.module}/conf/nomad/prometheus.hcl")
+ vars = {
+ datacenters = local.datacenters
+ url = local.prometheus_url
+ job_name = var.prometheus_job_name
+ use_canary = var.prometheus_use_canary
+ group_count = var.prometheus_group_count
+ use_host_volume = var.prometheus_use_host_volume
+ host_volume = var.nomad_host_volume
+ data_dir = var.prometheus_data_dir
+ service_name = var.prometheus_service_name
+ use_vault_provider = var.prometheus_vault_secret.use_vault_provider
+ version = var.prometheus_version
+ cpu = var.prometheus_cpu
+ mem = var.prometheus_mem
+ port = var.prometheus_port
+ }
+}
+
+resource "nomad_job" "nomad_job_prometheus" {
+ jobspec = data.template_file.nomad_job_prometheus.rendered
+ detach = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/prometheus/variables.tf b/terraform-ci-infra/1n_nmd/prometheus/variables.tf
new file mode 100644
index 0000000000..a509533ccd
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/prometheus/variables.tf
@@ -0,0 +1,84 @@
+# Nomad
+variable "nomad_datacenters" {
+ description = "Nomad data centers"
+ type = list(string)
+ default = [ "dc1" ]
+}
+
+variable "nomad_host_volume" {
+ description = "Nomad Host Volume"
+ type = string
+ default = "persistence"
+}
+
+# Prometheus
+variable "prometheus_job_name" {
+ description = "Prometheus job name"
+ type = string
+ default = "prometheus"
+}
+
+variable "prometheus_group_count" {
+ description = "Number of prometheus group instances"
+ type = number
+ default = 1
+}
+
+variable "prometheus_service_name" {
+ description = "Prometheus service name"
+ type = string
+ default = "prometheus"
+}
+
+variable "prometheus_version" {
+ description = "Prometheus version"
+ type = string
+ default = "v2.24.0"
+}
+
+variable "prometheus_use_canary" {
+ description = "Uses canary deployment"
+ type = bool
+ default = false
+}
+
+variable "prometheus_vault_secret" {
+ description = "Set of properties to be able to fetch secret from vault"
+ type = object({
+ use_vault_provider = bool,
+ vault_kv_policy_name = string,
+ vault_kv_path = string,
+ vault_kv_field_access_key = string,
+ vault_kv_field_secret_key = string
+ })
+}
+
+variable "prometheus_cpu" {
+ description = "Prometheus CPU allocation"
+ type = number
+ default = 2000
+}
+
+variable "prometheus_mem" {
+ description = "Prometheus RAM allocation"
+ type = number
+ default = 8192
+}
+
+variable "prometheus_port" {
+ description = "Prometheus TCP allocation"
+ type = number
+ default = 9200
+}
+
+variable "prometheus_data_dir" {
+ description = "Prometheus DISK allocation"
+ type = string
+ default = "/data"
+}
+
+variable "prometheus_use_host_volume" {
+ description = "Use Nomad host volume feature"
+ type = bool
+ default = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/terraform.tfstate b/terraform-ci-infra/1n_nmd/terraform.tfstate
new file mode 100644
index 0000000000..62c0864830
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/terraform.tfstate
@@ -0,0 +1,824 @@
+{
+ "version": 4,
+ "terraform_version": "0.14.5",
+ "serial": 1034,
+ "lineage": "e4e7f30a-652d-7a31-e31c-5e3a3388c9b9",
+ "outputs": {},
+ "resources": [
+ {
+ "module": "module.alertmanager",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_alertmanager",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "ad663ce4420bb5e99efc3b23d4038bf0538eeed5e73135d34e8104aaba94fce4",
+ "rendered": "job \"prod-alertmanager\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-alertmanager\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-alertmanager\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-0.21.0.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: 'https://hooks.slack.com/services/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'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: 'default-receiver'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: default-receiver\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: 'default-receiver'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: 'default-receiver'\n slack_configs:\n - channel: '#fdio-infra-monitoring'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"alertmanager\"\n port = \"alertmanager\"\n tags = [ \"alertmanager${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 1024\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"alertmanager\" {\n static = 9093\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-${version}.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${url}\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: 'https://hooks.slack.com/services/${slack_api_key}'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: '${default_receiver}'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: ${default_receiver}\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: '${default_receiver}'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: '${default_receiver}'\n slack_configs:\n - channel: '#${slack_channel}'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "1000",
+ "datacenters": "yul1",
+ "default_receiver": "default-receiver",
+ "group_count": "1",
+ "job_name": "prod-alertmanager",
+ "mem": "1024",
+ "port": "9093",
+ "service_name": "alertmanager",
+ "slack_api_key": "TE07RD1V1/B01L7PQK9S8/xncEcMAvF0GtJpTbC30E0AyL",
+ "slack_channel": "fdio-infra-monitoring",
+ "url": "https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz",
+ "use_canary": "true",
+ "use_vault_provider": "false",
+ "version": "0.21.0"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.alertmanager",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_alertmanager",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "a0e6d97f-c9fa-dba3-a58a-24540493931e",
+ "464144d9-8c27-dc03-71bb-6f8d525bc486"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "b4e00636-7610-9e21-7a46-0dc211c21abd",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-alertmanager",
+ "jobspec": "job \"prod-alertmanager\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-alertmanager\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-alertmanager\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-0.21.0.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: 'https://hooks.slack.com/services/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'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: 'default-receiver'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: default-receiver\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: 'default-receiver'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: 'default-receiver'\n slack_configs:\n - channel: '#fdio-infra-monitoring'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"alertmanager\"\n port = \"alertmanager\"\n tags = [ \"alertmanager${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 1024\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"alertmanager\" {\n static = 9093\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7148912",
+ "name": "prod-alertmanager",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-alertmanager",
+ "task": [
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task1-alertmanager",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.alertmanager.data.template_file.nomad_job_alertmanager"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.exporter",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_exporter",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "28db119a83617686c94496ed114455041d4fc500d93c4de8f8b8cfbe7d4c1db2",
+ "rendered": "job \"prod-exporter\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n task \"prod-task2-blackboxexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"gcr.io/cadvisor/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n\n task \"prod-task2-blackboxexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${node_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-${node_version}.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${node_url_amd64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${node_service_name}\"\n port = \"${node_service_name}\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${node_service_name}\" {\n static = ${node_port}\n }\n }\n }\n }\n task \"prod-task2-${blackbox_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-${blackbox_version}.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${blackbox_url_amd64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${blackbox_service_name}\"\n port = \"${blackbox_service_name}\"\n tags = [ \"${blackbox_service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${blackbox_service_name}\" {\n static = ${blackbox_port}\n }\n }\n }\n }\n\n task \"prod-task3-${cadvisor_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${cadvisor_image}\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${cadvisor_service_name}\"\n port = \"${cadvisor_service_name}\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${cadvisor_service_name}\" {\n static = ${cadvisor_port}\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${node_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-${node_version}.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${node_url_arm64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${node_service_name}\"\n port = \"${node_service_name}\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${node_service_name}\" {\n static = ${node_port}\n }\n }\n }\n }\n\n task \"prod-task2-${blackbox_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-${blackbox_version}.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${blackbox_url_arm64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${blackbox_service_name}\"\n port = \"${blackbox_service_name}\"\n tags = [ \"${blackbox_service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${blackbox_service_name}\" {\n static = ${blackbox_port}\n }\n }\n }\n }\n\n task \"prod-task3-${cadvisor_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${cadvisor_service_name}\"\n port = \"${cadvisor_service_name}\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${cadvisor_service_name}\" {\n static = ${cadvisor_port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "blackbox_port": "9115",
+ "blackbox_service_name": "blackboxexporter",
+ "blackbox_url_amd64": "https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz",
+ "blackbox_url_arm64": "https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz",
+ "blackbox_version": "0.18.0",
+ "cadvisor_image": "gcr.io/cadvisor/cadvisor:latest",
+ "cadvisor_port": "8080",
+ "cadvisor_service_name": "cadvisorexporter",
+ "datacenters": "yul1",
+ "job_name": "prod-exporter",
+ "node_port": "9100",
+ "node_service_name": "nodeexporter",
+ "node_url_amd64": "https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz",
+ "node_url_arm64": "https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz",
+ "node_version": "1.0.1",
+ "use_canary": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.exporter",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_exporter",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "e11d14cf-0b12-7f11-f982-e75abb2fa245",
+ "be1d7792-8b38-0769-1899-4d78ac17d775",
+ "33190f8d-6b97-5a79-32c3-c2a48eb33cab",
+ "7b9a89f3-3094-73aa-de9e-b674cdf3962b",
+ "1b730294-e8c6-d330-72a6-7502ef6d8195",
+ "3b3932ce-d57e-d0c6-0d36-b32724d83a0f",
+ "d07855d6-29a8-dba5-92a8-bed5673c3b81",
+ "4ea7fa69-4819-5050-37ea-bbce995e994d",
+ "2c694f1a-fb0e-67b9-407a-dd5f1d72daa0",
+ "52e828d4-79a7-9e43-2cdb-1ba6088f3257",
+ "e23fc3eb-1699-e1e8-629b-82a21b72ecf4",
+ "6f83b8c0-4313-eb5a-9c22-e8db2226e832",
+ "15ee749c-07f0-2864-f907-919faa62cee2",
+ "12025e7c-4a27-9a9b-b0aa-a205179139eb",
+ "a6234b96-8c7b-1fd4-e85f-d361774d3005",
+ "fadf8b49-0e1c-98ea-42b5-119667fa092e",
+ "2cb8905c-3d36-878d-917e-493f8a982970",
+ "a1426c7b-a4a1-0f19-cc11-162b396e9ce9",
+ "f24eee7b-e480-3386-9a6e-357edb9ae137",
+ "7b7c32b2-9cc9-bb99-b203-2842e4495f5c"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-exporter",
+ "jobspec": "job \"prod-exporter\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n task \"prod-task2-blackboxexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"gcr.io/cadvisor/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n\n task \"prod-task2-blackboxexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7147927",
+ "name": "prod-exporter",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-exporter-amd64",
+ "task": [
+ {
+ "driver": "raw_exec",
+ "meta": {},
+ "name": "prod-task1-nodeexporter-amd64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task2-blackboxexporter-amd64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task3-cadvisorexporter-amd64",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ },
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-exporter-arm64",
+ "task": [
+ {
+ "driver": "raw_exec",
+ "meta": {},
+ "name": "prod-task1-nodeexporter-arm64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task2-blackboxexporter-arm64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task3-cadvisorexporter-arm64",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "system"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.exporter.data.template_file.nomad_job_exporter"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.grafana",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_grafana",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "5c802f79894e52718b0d713abec8e46bf8b9831b7caa677ff22b657ea3254b42",
+ "rendered": "job \"prod-grafana\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-grafana\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-grafana\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"grafana/grafana:7.3.7\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = 3000\nroot_url = http://grafana.service.consul:3000\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"grafana\"\n port = \"grafana\"\n tags = [ \"grafana${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 2048\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"grafana\" {\n static = 3000\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = ${port}\nroot_url = http://${service_name}.service.consul:${port}\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "1000",
+ "datacenters": "yul1",
+ "group_count": "1",
+ "image": "grafana/grafana:7.3.7",
+ "job_name": "prod-grafana",
+ "mem": "2048",
+ "port": "3000",
+ "service_name": "grafana",
+ "use_canary": "true",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.grafana",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_grafana",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": null,
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "4b6abbd0-0129-03d7-b8e3-e7c256c5bcb6",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-grafana",
+ "jobspec": "job \"prod-grafana\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-grafana\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-grafana\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"grafana/grafana:7.3.7\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = 3000\nroot_url = http://grafana.service.consul:3000\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"grafana\"\n port = \"grafana\"\n tags = [ \"grafana${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 2048\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"grafana\" {\n static = 3000\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7148913",
+ "name": "prod-grafana",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-grafana",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-grafana",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.grafana.data.template_file.nomad_job_grafana"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_mc",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "ca0c95bbe91c4ac393d5cd5bef8efb90fb5f176f266ba233542fd4338b51c6cc",
+ "rendered": "job \"prod-mc\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/mc:RELEASE.2020-12-10T01-26-17Z\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage\"\n ]\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n \n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n \n \n }\n }\n }\n}\n",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"${command}\"\n ]\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n %{ if use_vault_provider }\n {{ with secret \"${vault_kv_path}\" }}\n MINIO_ACCESS_KEY = \"{{ .Data.data.${vault_kv_field_access_key} }}\"\n MINIO_SECRET_KEY = \"{{ .Data.data.${vault_kv_field_secret_key} }}\"\n {{ end }}\n %{ else }\n MINIO_ACCESS_KEY = \"${access_key}\"\n MINIO_SECRET_KEY = \"${secret_key}\"\n %{ endif }\n ${ envs }\n }\n }\n }\n}\n",
+ "vars": {
+ "access_key": "minio",
+ "command": "mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage",
+ "datacenters": "yul1",
+ "envs": "",
+ "image": "minio/mc:RELEASE.2020-12-10T01-26-17Z",
+ "job_name": "prod-mc",
+ "minio_port": "9000",
+ "minio_service_name": "storage",
+ "secret_key": "minio123",
+ "service_name": "mc",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_minio",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "c38a0b7182d39c70ec07bdaa998f57a215d7193b264c1b1c1a299c84e7ca53de",
+ "rendered": "job \"prod-minio\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # https://www.nomadproject.io/docs/job-specification/volume\n \n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/minio:RELEASE.2020-12-03T05-49-24Z\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"http://10.32.8.1{4...7}:9000/data/\" ]\n port_map {\n http = 9000\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n\n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n\n MINIO_BROWSER=\"off\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"storage\"\n port = \"http\"\n tags = [ \"storage${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 40000\n memory = 40000\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n network {\n port \"http\" {\n static = 9000\n }\n }\n }\n }\n }\n}\n",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # https://www.nomadproject.io/docs/job-specification/volume\n %{ if use_host_volume }\n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"${host_volume}\"\n }\n %{ endif }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n %{ if use_host_volume }\n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"${data_dir}\"\n read_only = false\n }\n %{ endif }\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"${host}:${port}${data_dir}\" ]\n port_map {\n http = ${port}\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n%{ if use_vault_provider }\n{{ with secret \"${vault_kv_path}\" }}\n MINIO_ACCESS_KEY = \"{{ .Data.data.${vault_kv_field_access_key} }}\"\n MINIO_SECRET_KEY = \"{{ .Data.data.${vault_kv_field_secret_key} }}\"\n{{ end }}\n%{ else }\n MINIO_ACCESS_KEY = \"${access_key}\"\n MINIO_SECRET_KEY = \"${secret_key}\"\n%{ endif }\n ${ envs }\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"${service_name}\"\n port = \"http\"\n tags = [ \"storage$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${memory}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n network {\n port \"http\" {\n static = ${port}\n }\n }\n }\n }\n }\n}\n",
+ "vars": {
+ "access_key": "minio",
+ "cpu": "40000",
+ "cpu_proxy": "200",
+ "data_dir": "/data/",
+ "datacenters": "yul1",
+ "envs": "MINIO_BROWSER=\"off\"",
+ "group_count": "4",
+ "host": "http://10.32.8.1{4...7}",
+ "host_volume": "prod-volume-data1-1",
+ "image": "minio/minio:RELEASE.2020-12-03T05-49-24Z",
+ "job_name": "prod-minio",
+ "memory": "40000",
+ "memory_proxy": "128",
+ "port": "9000",
+ "secret_key": "minio123",
+ "service_name": "storage",
+ "upstreams": "[]",
+ "use_canary": "true",
+ "use_host_volume": "true",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_mc",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "3ff45a9a-4635-3719-ae12-c750ebb3e800"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-mc",
+ "jobspec": "job \"prod-mc\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/mc:RELEASE.2020-12-10T01-26-17Z\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage\"\n ]\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n \n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n \n \n }\n }\n }\n}\n",
+ "json": null,
+ "modify_index": "7148928",
+ "name": "prod-mc",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-mc",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-create-buckets",
+ "volume_mounts": null
+ }
+ ],
+ "volumes": null
+ }
+ ],
+ "type": "batch"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.minio.data.template_file.nomad_job_mc",
+ "module.minio.data.template_file.nomad_job_minio",
+ "module.minio.nomad_job.nomad_job_minio"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_minio",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "322e6ea5-acc7-2f37-3022-cd0a31c2f3db",
+ "619833b9-dd70-46ae-f576-75c3cd058a13",
+ "0510561a-c828-dd23-5910-b92d9f2c41ef",
+ "504924c8-387b-abe2-c4d5-d6a7424a4689"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "cd6d79cf-6e6f-289d-a0bb-6b2bb8da769a",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-minio",
+ "jobspec": "job \"prod-minio\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # https://www.nomadproject.io/docs/job-specification/volume\n \n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/minio:RELEASE.2020-12-03T05-49-24Z\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"http://10.32.8.1{4...7}:9000/data/\" ]\n port_map {\n http = 9000\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n\n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n\n MINIO_BROWSER=\"off\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"storage\"\n port = \"http\"\n tags = [ \"storage${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n cpu = 40000\n memory = 40000\n network {\n port \"http\" {\n static = 9000\n }\n }\n }\n }\n }\n}\n",
+ "json": null,
+ "modify_index": "5933603",
+ "name": "prod-minio",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 4,
+ "meta": {},
+ "name": "prod-group1-minio",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-minio",
+ "volume_mounts": [
+ {
+ "destination": "/data/",
+ "read_only": false,
+ "volume": "prod-volume1-minio"
+ }
+ ]
+ }
+ ],
+ "volumes": [
+ {
+ "name": "prod-volume1-minio",
+ "read_only": false,
+ "source": "prod-volume-data1-1",
+ "type": "host"
+ }
+ ]
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.minio.data.template_file.nomad_job_minio"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.nginx",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_nginx",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "2816603491214d9abe10981b9f9cc6a4cb806acbc6981b952653847fec86e9ff",
+ "rendered": "job \"prod-nginx\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "datacenters": "yul1",
+ "job_name": "prod-nginx"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.nginx",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_nginx",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "1dea6de0-d5cd-2a1b-fb42-0468e986e0d6"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-nginx",
+ "jobspec": "job \"prod-nginx\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "5922474",
+ "name": "prod-nginx",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-nginx",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-nginx",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.nginx.data.template_file.nomad_job_nginx"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.prometheus",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_prometheus",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "cd26d062785357d96c95d6f8f40b2d8d7b430be3399de176e6b250822c4af86c",
+ "rendered": "job \"prod-prometheus\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-prometheus\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n \n volume \"prod-volume1-prometheus\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-prometheus\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n volume_mount {\n volume = \"prod-volume1-prometheus\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-2.24.0.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=/data/prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"prometheus\"\n port = \"prometheus\"\n tags = [ \"prometheus${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 8192\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"prometheus\" {\n static = 9090\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n %{ if use_host_volume }\n volume \"prod-volume1-${service_name}\" {\n type = \"host\"\n read_only = false\n source = \"${host_volume}\"\n }\n %{ endif }\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n %{ if use_host_volume }\n volume_mount {\n volume = \"prod-volume1-${service_name}\"\n destination = \"${data_dir}\"\n read_only = false\n }\n %{ endif }\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-${version}.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=${data_dir}prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${url}\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "2000",
+ "data_dir": "/data/",
+ "datacenters": "yul1",
+ "group_count": "4",
+ "host_volume": "prod-volume-data1-1",
+ "job_name": "prod-prometheus",
+ "mem": "8192",
+ "port": "9090",
+ "service_name": "prometheus",
+ "url": "https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz",
+ "use_canary": "true",
+ "use_host_volume": "true",
+ "use_vault_provider": "false",
+ "version": "2.24.0"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.prometheus",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_prometheus",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "79c4c6b7-e8e4-79e7-9dae-9a26142cd94c",
+ "2e11f44e-814e-db74-a9ee-8bcbebb1fa0b",
+ "83f9c9aa-f4f2-b832-a937-aaee4181493e",
+ "231f1338-a871-b44e-d545-e8af01d7eebe"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "4cbf8370-f2d7-16c2-d500-f6495d43537d",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-prometheus",
+ "jobspec": "job \"prod-prometheus\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-prometheus\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n \n volume \"prod-volume1-prometheus\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-prometheus\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n volume_mount {\n volume = \"prod-volume1-prometheus\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-2.24.0.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=/data/prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"prometheus\"\n port = \"prometheus\"\n tags = [ \"prometheus${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 8192\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"prometheus\" {\n static = 9090\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7147932",
+ "name": "prod-prometheus",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 4,
+ "meta": {},
+ "name": "prod-group1-prometheus",
+ "task": [
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task1-prometheus",
+ "volume_mounts": [
+ {
+ "destination": "/data/",
+ "read_only": false,
+ "volume": "prod-volume1-prometheus"
+ }
+ ]
+ }
+ ],
+ "volumes": [
+ {
+ "name": "prod-volume1-prometheus",
+ "read_only": false,
+ "source": "prod-volume-data1-1",
+ "type": "host"
+ }
+ ]
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.prometheus.data.template_file.nomad_job_prometheus"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.vpp_device",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_csit_shim",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "a285223159ce0af9e5427d857021e5651c09408af90decd3b93a90efd4fd7ce8",
+ "rendered": "job \"prod-device-csit-shim\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n constraint {\n attribute = \"$${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n constraint {\n attribute = \"$${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "1000",
+ "datacenters": "yul1",
+ "group_count": "1",
+ "job_name": "prod-device-csit-shim",
+ "mem": "5000"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.vpp_device",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_csit_shim",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "ecfcd9ad-b959-0fa4-c1ec-8b82195830f1",
+ "190f5699-0d10-7f85-ac68-96927702070b",
+ "2fbbef45-f00a-1367-08c4-c2239de9e78d",
+ "dd57bc83-2229-d242-1caf-b743f186e7a2"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-device-csit-shim",
+ "jobspec": "job \"prod-device-csit-shim\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7077736",
+ "name": "prod-device-csit-shim",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-csit-shim-amd",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-csit-shim-amd",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ },
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-csit-shim-arm",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-csit-shim-arm",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "system"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.vpp_device.data.template_file.nomad_job_csit_shim"
+ ]
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/terraform.tfstate.backup b/terraform-ci-infra/1n_nmd/terraform.tfstate.backup
new file mode 100644
index 0000000000..d988fb539d
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/terraform.tfstate.backup
@@ -0,0 +1,826 @@
+{
+ "version": 4,
+ "terraform_version": "0.14.5",
+ "serial": 1030,
+ "lineage": "e4e7f30a-652d-7a31-e31c-5e3a3388c9b9",
+ "outputs": {},
+ "resources": [
+ {
+ "module": "module.alertmanager",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_alertmanager",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "ae09d392c808970a05f2423cd8dbf158f6cb6d3ae50260cd7d16f1575ce43871",
+ "rendered": "job \"prod-alertmanager\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-alertmanager\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-alertmanager\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-0.21.0.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: 'https://hooks.slack.com/services/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'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: 'default-receiver'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: default-receiver\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: 'default-receiver'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: 'default-receiver'\n slack_configs:\n - channel: '#fdio-infra-monitoring'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"alertmanager\"\n port = \"alertmanager\"\n tags = [ \"alertmanager${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 1024\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"alertmanager\" {\n static = 9093\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-${version}.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${url}\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: '${slack_api_url}'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: '${default_receiver}'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: ${default_receiver}\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: '${default_receiver}'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: '${default_receiver}'\n slack_configs:\n - channel: '#${slack_channel}'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "1000",
+ "datacenters": "yul1",
+ "default_receiver": "default-receiver",
+ "group_count": "1",
+ "job_name": "prod-alertmanager",
+ "mem": "1024",
+ "port": "9093",
+ "service_name": "alertmanager",
+ "slack_api_url": "https://hooks.slack.com/services/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",
+ "slack_channel": "fdio-infra-monitoring",
+ "url": "https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz",
+ "use_canary": "true",
+ "use_vault_provider": "false",
+ "version": "0.21.0"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.alertmanager",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_alertmanager",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "464144d9-8c27-dc03-71bb-6f8d525bc486"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "d69d73a6-2a1b-ebf6-e421-30ce1f34f519",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-alertmanager",
+ "jobspec": "job \"prod-alertmanager\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-alertmanager\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-alertmanager\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/alertmanager-0.21.0.linux-amd64/alertmanager\"\n args = [\n \"--config.file=secrets/alertmanager.yml\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alertmanager.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\nglobal:\n # The API URL to use for Slack notifications.\n slack_api_url: 'https://hooks.slack.com/services/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'\n\n# The directory from which notification templates are read.\ntemplates:\n- '/etc/alertmanager/template/*.tmpl'\n\n#tls_config:\n# # CA certificate to validate the server certificate with.\n# ca_file: \u003cfilepath\u003e ]\n#\n# # Certificate and key files for client cert authentication to the server.\n# cert_file: \u003cfilepath\u003e\n# key_file: \u003cfilepath\u003e\n#\n# # ServerName extension to indicate the name of the server.\n# # http://tools.ietf.org/html/rfc4366#section-3.1\n# server_name: \u003cstring\u003e\n#\n# # Disable validation of the server certificate.\n# insecure_skip_verify: true\n\n# The root route on which each incoming alert enters.\nroute:\n receiver: 'default-receiver'\n\n # The labels by which incoming alerts are grouped together. For example,\n # multiple alerts coming in for cluster=A and alertname=LatencyHigh would\n # be batched into a single group.\n #\n # To aggregate by all possible labels use '...' as the sole label name.\n # This effectively disables aggregation entirely, passing through all\n # alerts as-is. This is unlikely to be what you want, unless you have\n # a very low alert volume or your upstream notification system performs\n # its own grouping. Example: group_by: [...]\n group_by: ['alertname', 'cluster', 'service']\n\n # When a new group of alerts is created by an incoming alert, wait at\n # least 'group_wait' to send the initial notification.\n # This way ensures that you get multiple alerts for the same group that start\n # firing shortly after another are batched together on the first\n # notification.\n group_wait: 30s\n\n # When the first notification was sent, wait 'group_interval' to send a batch\n # of new alerts that started firing for that group.\n group_interval: 5m\n\n # If an alert has successfully been sent, wait 'repeat_interval' to\n # resend them.\n repeat_interval: 3h\n\n # All the above attributes are inherited by all child routes and can\n # overwritten on each.\n # The child route trees.\n routes:\n # This routes performs a regular expression match on alert labels to\n # catch alerts that are related to a list of services.\n - match_re:\n service: .*\n receiver: default-receiver\n # The service has a sub-route for critical alerts, any alerts\n # that do not match, i.e. severity != critical, fall-back to the\n # parent node and are sent to 'team-X-mails'\n routes:\n - match:\n severity: critical\n receiver: 'default-receiver'\n\n# Inhibition rules allow to mute a set of alerts given that another alert is\n# firing.\n# We use this to mute any warning-level notifications if the same alert is\n# already critical.\ninhibit_rules:\n- source_match:\n severity: 'critical'\n target_match:\n severity: 'warning'\n # Apply inhibition if the alertname is the same.\n # CAUTION:\n # If all label names listed in `equal` are missing\n # from both the source and target alerts,\n # the inhibition rule will apply!\n equal: ['alertname', 'cluster', 'service']\n\nreceivers:\n- name: 'default-receiver'\n slack_configs:\n - channel: '#fdio-infra-monitoring'\n send_resolved: true\n icon_url: https://avatars3.githubusercontent.com/u/3380462\n title: |-\n [{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}\n {{- if gt (len .CommonLabels) (len .GroupLabels) -}}\n {{\" \"}}(\n {{- with .CommonLabels.Remove .GroupLabels.Names }}\n {{- range $index, $label := .SortedPairs -}}\n {{ if $index }}, {{ end }}\n {{- $label.Name }}=\"{{ $label.Value -}}\"\n {{- end }}\n {{- end -}}\n )\n {{- end }}\n text: \u003e-\n {{ range .Alerts -}}\n *Alert:* {{ .Annotations.summary }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}\n\n *Description:* {{ .Annotations.description }}\n\n *Details:*\n {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n {{ end }}\n {{ end }}\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"alertmanager\"\n port = \"alertmanager\"\n tags = [ \"alertmanager${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Alertmanager Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 1000\n memory = 1024\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"alertmanager\" {\n static = 9093\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7147924",
+ "name": "prod-alertmanager",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-alertmanager",
+ "task": [
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task1-alertmanager",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.alertmanager.data.template_file.nomad_job_alertmanager"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.exporter",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_exporter",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "28db119a83617686c94496ed114455041d4fc500d93c4de8f8b8cfbe7d4c1db2",
+ "rendered": "job \"prod-exporter\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n task \"prod-task2-blackboxexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"gcr.io/cadvisor/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n\n task \"prod-task2-blackboxexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${node_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-${node_version}.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${node_url_amd64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${node_service_name}\"\n port = \"${node_service_name}\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${node_service_name}\" {\n static = ${node_port}\n }\n }\n }\n }\n task \"prod-task2-${blackbox_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-${blackbox_version}.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${blackbox_url_amd64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${blackbox_service_name}\"\n port = \"${blackbox_service_name}\"\n tags = [ \"${blackbox_service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${blackbox_service_name}\" {\n static = ${blackbox_port}\n }\n }\n }\n }\n\n task \"prod-task3-${cadvisor_service_name}-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${cadvisor_image}\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${cadvisor_service_name}\"\n port = \"${cadvisor_service_name}\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${cadvisor_service_name}\" {\n static = ${cadvisor_port}\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${node_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-${node_version}.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${node_url_arm64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${node_service_name}\"\n port = \"${node_service_name}\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${node_service_name}\" {\n static = ${node_port}\n }\n }\n }\n }\n\n task \"prod-task2-${blackbox_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-${blackbox_version}.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${blackbox_url_arm64}\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${blackbox_service_name}\"\n port = \"${blackbox_service_name}\"\n tags = [ \"${blackbox_service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${blackbox_service_name}\" {\n static = ${blackbox_port}\n }\n }\n }\n }\n\n task \"prod-task3-${cadvisor_service_name}-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${cadvisor_service_name}\"\n port = \"${cadvisor_service_name}\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${cadvisor_service_name}\" {\n static = ${cadvisor_port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "blackbox_port": "9115",
+ "blackbox_service_name": "blackboxexporter",
+ "blackbox_url_amd64": "https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz",
+ "blackbox_url_arm64": "https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz",
+ "blackbox_version": "0.18.0",
+ "cadvisor_image": "gcr.io/cadvisor/cadvisor:latest",
+ "cadvisor_port": "8080",
+ "cadvisor_service_name": "cadvisorexporter",
+ "datacenters": "yul1",
+ "job_name": "prod-exporter",
+ "node_port": "9100",
+ "node_service_name": "nodeexporter",
+ "node_url_amd64": "https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz",
+ "node_url_arm64": "https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz",
+ "node_version": "1.0.1",
+ "use_canary": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.exporter",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_exporter",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "e11d14cf-0b12-7f11-f982-e75abb2fa245",
+ "be1d7792-8b38-0769-1899-4d78ac17d775",
+ "33190f8d-6b97-5a79-32c3-c2a48eb33cab",
+ "7b9a89f3-3094-73aa-de9e-b674cdf3962b",
+ "1b730294-e8c6-d330-72a6-7502ef6d8195",
+ "3b3932ce-d57e-d0c6-0d36-b32724d83a0f",
+ "d07855d6-29a8-dba5-92a8-bed5673c3b81",
+ "4ea7fa69-4819-5050-37ea-bbce995e994d",
+ "2c694f1a-fb0e-67b9-407a-dd5f1d72daa0",
+ "52e828d4-79a7-9e43-2cdb-1ba6088f3257",
+ "e23fc3eb-1699-e1e8-629b-82a21b72ecf4",
+ "6f83b8c0-4313-eb5a-9c22-e8db2226e832",
+ "15ee749c-07f0-2864-f907-919faa62cee2",
+ "12025e7c-4a27-9a9b-b0aa-a205179139eb",
+ "a6234b96-8c7b-1fd4-e85f-d361774d3005",
+ "fadf8b49-0e1c-98ea-42b5-119667fa092e",
+ "2cb8905c-3d36-878d-917e-493f8a982970",
+ "a1426c7b-a4a1-0f19-cc11-162b396e9ce9",
+ "f24eee7b-e480-3386-9a6e-357edb9ae137",
+ "7b7c32b2-9cc9-bb99-b203-2842e4495f5c"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-exporter",
+ "jobspec": "job \"prod-exporter\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"system\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-exporter-amd64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-amd64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n task \"prod-task2-blackboxexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-amd64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-amd64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-amd64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"gcr.io/cadvisor/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n\n group \"prod-group1-exporter-arm64\" {\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"==\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-nodeexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"raw_exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/node_exporter-1.0.1.linux-arm64/node_exporter\"\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"nodeexporter\"\n port = \"nodeexporter\"\n check {\n name = \"Node Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"nodeexporter\" {\n static = 9100\n }\n }\n }\n }\n\n task \"prod-task2-blackboxexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/blackbox_exporter-0.18.0.linux-arm64/blackbox_exporter\"\n args = [\n \"--config.file=secrets/blackbox.yml\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/blackbox.yml\"\n data = \u003c\u003cEOH\nmodules:\n http_2xx:\n prober: http\n timeout: 5s\n http:\n valid_http_versions: [\"HTTP/1.1\", \"HTTP/2.0\"]\n no_follow_redirects: false\n fail_if_ssl: false\n fail_if_not_ssl: true\n tls_config:\n insecure_skip_verify: false\n preferred_ip_protocol: \"ip4\"\n icmp_v4:\n prober: icmp\n timeout: 5s\n icmp:\n preferred_ip_protocol: \"ip4\"\n dns_udp:\n prober: dns\n timeout: 5s\n dns:\n query_name: \"jenkins.fd.io\"\n query_type: \"A\"\n valid_rcodes:\n - NOERROR\nEOH\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/blackbox_exporter/releases/download/v0.18.0/blackbox_exporter-0.18.0.linux-arm64.tar.gz\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"blackboxexporter\"\n port = \"blackboxexporter\"\n tags = [ \"blackboxexporter${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Blackbox Exporter Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"blackboxexporter\" {\n static = 9115\n }\n }\n }\n }\n\n task \"prod-task3-cadvisorexporter-arm64\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n # There is currently no official release for arm yet...using community.\n image = \"zcube/cadvisor:latest\"\n volumes = [\n \"/:/rootfs:ro\",\n \"/var/run:/var/run:rw\",\n \"/sys:/sys:ro\",\n \"/var/lib/docker/:/var/lib/docker:ro\",\n \"/cgroup:/cgroup:ro\"\n ]\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"cadvisorexporter\"\n port = \"cadvisorexporter\"\n check {\n name = \"cAdvisor Check Live\"\n type = \"http\"\n path = \"/metrics\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 500\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"cadvisorexporter\" {\n static = 8080\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7147927",
+ "name": "prod-exporter",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-exporter-amd64",
+ "task": [
+ {
+ "driver": "raw_exec",
+ "meta": {},
+ "name": "prod-task1-nodeexporter-amd64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task2-blackboxexporter-amd64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task3-cadvisorexporter-amd64",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ },
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-exporter-arm64",
+ "task": [
+ {
+ "driver": "raw_exec",
+ "meta": {},
+ "name": "prod-task1-nodeexporter-arm64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task2-blackboxexporter-arm64",
+ "volume_mounts": []
+ },
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task3-cadvisorexporter-arm64",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "system"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.exporter.data.template_file.nomad_job_exporter"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.grafana",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_grafana",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "080a6dd88248c6a78ec3025a0ec9e471aed9acde495ca47db868b0893b4446b7",
+ "rendered": "job \"prod-grafana\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-grafana\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-grafana\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"grafana/grafana:7.3.7\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = 3000\nroot_url = http://grafana.service.consul:3000\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"grafana\"\n port = \"grafana\"\n tags = [ \"grafana${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 2048\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"grafana\" {\n static = 3000\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = ${port}\nroot_url = http://${service_name}.service.consul:${port}\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "2000",
+ "datacenters": "yul1",
+ "group_count": "1",
+ "image": "grafana/grafana:7.3.7",
+ "job_name": "prod-grafana",
+ "mem": "2048",
+ "port": "3000",
+ "service_name": "grafana",
+ "use_canary": "true",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.grafana",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_grafana",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "1cf5f45a-3d10-b433-600e-f92696e49a25",
+ "d2ddca98-1bb8-680d-06f1-00fcf4887eca"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "fef8bdc5-f769-c504-f089-8886755e45ef",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-grafana",
+ "jobspec": "job \"prod-grafana\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-grafana\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-grafana\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"grafana/grafana:7.3.7\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n volumes = [\n \"secrets/prometheus.yml:/etc/grafana/provisioning/datasources/prometheus.yml\",\n \"secrets/dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml\",\n \"secrets/grafana.ini:/etc/grafana/grafana.ini\",\n \"secrets/node_exporter.json:/etc/grafana/provisioning/dashboards/node_exporter.json\",\n \"secrets/docker_cadvisor.json:/etc/grafana/provisioning/dashboards/docker_cadvisor.json\",\n \"secrets/nomad.json:/etc/grafana/provisioning/dashboards/nomad.json\",\n \"secrets/consul.json:/etc/grafana/provisioning/dashboards/consul.json\",\n \"secrets/prometheus.json:/etc/grafana/provisioning/dashboards/prometheus.json\",\n \"secrets/blackbox_exporter_http.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_http.json\",\n \"secrets/blackbox_exporter_icmp.json:/etc/grafana/provisioning/dashboards/blackbox_exporter_icmp.json\"\n ]\n }\n\n artifact {\n # Prometheus Node Exporter\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/node_exporter.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Docker cAdvisor\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/docker_cadvisor.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Nomad\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/nomad.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Consul\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/consul.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/prometheus.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter ICMP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_icmp.json\"\n destination = \"secrets/\"\n }\n\n artifact {\n # Prometheus Blackbox Exporter HTTP\n source = \"https://raw.githubusercontent.com/pmikus/grafana-dashboards/main/blackbox_exporter_http.json\"\n destination = \"secrets/\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\ndatasources:\n- name: Prometheus\n type: prometheus\n access: direct\n orgId: 1\n url: http://prometheus.service.consul:9090\n basicAuth: false\n isDefault: true\n version: 1\n editable: false\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/dashboards.yml\"\n data = \u003c\u003cEOH\napiVersion: 1\nproviders:\n- name: dashboards\n type: file\n disableDeletion: false\n updateIntervalSeconds: 10\n allowUiUpdates: false\n options:\n path: /etc/grafana/provisioning/dashboards\n foldersFromFilesStructure: true\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/grafana.ini\"\n data = \u003c\u003cEOH\napp_mode = production\n\n[metrics]\nenabled = true\n\n[server]\nprotocol = http\nhttp_port = 3000\nroot_url = http://grafana.service.consul:3000\nenable_gzip = true\n;cert_file =\n;cert_key =\n\n[security]\nadmin_user = grafanauser\nadmin_password = Grafana1234\nsecret_key = SW2YcwTIb9zpOOhoPsMm\n\n[users]\nallow_sign_up = false\nallow_org_create = false\nauto_assign_org = true\nauto_assign_org_role = Viewer\ndefault_theme = dark\n\n[auth.basic]\nenabled = true\n\n[auth]\ndisable_login_form = false\ndisable_signout_menu = false\n\n[auth.anonymous]\nenabled = false\n\n[log]\nmode = console\nlevel = info\n\n[log.console]\nlevel = info\nformat = console\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"grafana\"\n port = \"grafana\"\n tags = [ \"grafana${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Grafana Check Live\"\n type = \"http\"\n protocol = \"http\"\n tls_skip_verify = true\n path = \"/api/health\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 2048\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"grafana\" {\n static = 3000\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7148410",
+ "name": "prod-grafana",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-grafana",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-grafana",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.grafana.data.template_file.nomad_job_grafana"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_mc",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "ca0c95bbe91c4ac393d5cd5bef8efb90fb5f176f266ba233542fd4338b51c6cc",
+ "rendered": "job \"prod-mc\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/mc:RELEASE.2020-12-10T01-26-17Z\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage\"\n ]\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n \n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n \n \n }\n }\n }\n}\n",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"${command}\"\n ]\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n %{ if use_vault_provider }\n {{ with secret \"${vault_kv_path}\" }}\n MINIO_ACCESS_KEY = \"{{ .Data.data.${vault_kv_field_access_key} }}\"\n MINIO_SECRET_KEY = \"{{ .Data.data.${vault_kv_field_secret_key} }}\"\n {{ end }}\n %{ else }\n MINIO_ACCESS_KEY = \"${access_key}\"\n MINIO_SECRET_KEY = \"${secret_key}\"\n %{ endif }\n ${ envs }\n }\n }\n }\n}\n",
+ "vars": {
+ "access_key": "minio",
+ "command": "mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage",
+ "datacenters": "yul1",
+ "envs": "",
+ "image": "minio/mc:RELEASE.2020-12-10T01-26-17Z",
+ "job_name": "prod-mc",
+ "minio_port": "9000",
+ "minio_service_name": "storage",
+ "secret_key": "minio123",
+ "service_name": "mc",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_minio",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "c38a0b7182d39c70ec07bdaa998f57a215d7193b264c1b1c1a299c84e7ca53de",
+ "rendered": "job \"prod-minio\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # https://www.nomadproject.io/docs/job-specification/volume\n \n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/minio:RELEASE.2020-12-03T05-49-24Z\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"http://10.32.8.1{4...7}:9000/data/\" ]\n port_map {\n http = 9000\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n\n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n\n MINIO_BROWSER=\"off\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"storage\"\n port = \"http\"\n tags = [ \"storage${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 40000\n memory = 40000\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n network {\n port \"http\" {\n static = 9000\n }\n }\n }\n }\n }\n}\n",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # https://www.nomadproject.io/docs/job-specification/volume\n %{ if use_host_volume }\n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"${host_volume}\"\n }\n %{ endif }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n %{ if use_host_volume }\n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"${data_dir}\"\n read_only = false\n }\n %{ endif }\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"${image}\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"${host}:${port}${data_dir}\" ]\n port_map {\n http = ${port}\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n%{ if use_vault_provider }\n{{ with secret \"${vault_kv_path}\" }}\n MINIO_ACCESS_KEY = \"{{ .Data.data.${vault_kv_field_access_key} }}\"\n MINIO_SECRET_KEY = \"{{ .Data.data.${vault_kv_field_secret_key} }}\"\n{{ end }}\n%{ else }\n MINIO_ACCESS_KEY = \"${access_key}\"\n MINIO_SECRET_KEY = \"${secret_key}\"\n%{ endif }\n ${ envs }\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"${service_name}\"\n port = \"http\"\n tags = [ \"storage$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${memory}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n network {\n port \"http\" {\n static = ${port}\n }\n }\n }\n }\n }\n}\n",
+ "vars": {
+ "access_key": "minio",
+ "cpu": "40000",
+ "cpu_proxy": "200",
+ "data_dir": "/data/",
+ "datacenters": "yul1",
+ "envs": "MINIO_BROWSER=\"off\"",
+ "group_count": "4",
+ "host": "http://10.32.8.1{4...7}",
+ "host_volume": "prod-volume-data1-1",
+ "image": "minio/minio:RELEASE.2020-12-03T05-49-24Z",
+ "job_name": "prod-minio",
+ "memory": "40000",
+ "memory_proxy": "128",
+ "port": "9000",
+ "secret_key": "minio123",
+ "service_name": "storage",
+ "upstreams": "[]",
+ "use_canary": "true",
+ "use_host_volume": "true",
+ "use_vault_provider": "false"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_mc",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "8ca5aa5b-2616-f167-f40e-a0becb50c87e"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-mc",
+ "jobspec": "job \"prod-mc\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"batch\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-mc\" {\n task \"prod-task1-create-buckets\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/mc:RELEASE.2020-12-10T01-26-17Z\"\n entrypoint = [\n \"/bin/sh\",\n \"-c\",\n \"mc config host add LOCALMINIO http://storage.service.consul:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY \u0026\u0026 mc mb -p LOCALMINIO/logs.fd.io LOCALMINIO/docs.fd.io ; mc policy set public LOCALMINIO/logs.fd.io mc policy set public LOCALMINIO/docs.fd.io mc ilm add --expiry-days '180' LOCALMINIO/logs.fd.io mc admin user add LOCALMINIO storage Storage1234 mc admin policy set LOCALMINIO writeonly user=storage\"\n ]\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n \n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n \n \n }\n }\n }\n}\n",
+ "json": null,
+ "modify_index": "7148419",
+ "name": "prod-mc",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-mc",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-create-buckets",
+ "volume_mounts": null
+ }
+ ],
+ "volumes": null
+ }
+ ],
+ "type": "batch"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.minio.data.template_file.nomad_job_mc",
+ "module.minio.data.template_file.nomad_job_minio",
+ "module.minio.nomad_job.nomad_job_minio"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.minio",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_minio",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "322e6ea5-acc7-2f37-3022-cd0a31c2f3db",
+ "619833b9-dd70-46ae-f576-75c3cd058a13",
+ "0510561a-c828-dd23-5910-b92d9f2c41ef",
+ "504924c8-387b-abe2-c4d5-d6a7424a4689"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "cd6d79cf-6e6f-289d-a0bb-6b2bb8da769a",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-minio",
+ "jobspec": "job \"prod-minio\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # All groups in this job should be scheduled on different hosts.\n constraint {\n operator = \"distinct_hosts\"\n value = \"true\"\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-minio\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # https://www.nomadproject.io/docs/job-specification/volume\n \n volume \"prod-volume1-minio\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-minio\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n \n volume_mount {\n volume = \"prod-volume1-minio\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"minio/minio:RELEASE.2020-12-03T05-49-24Z\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n network_mode = \"host\"\n command = \"server\"\n args = [ \"http://10.32.8.1{4...7}:9000/data/\" ]\n port_map {\n http = 9000\n }\n privileged = false\n }\n\n # The env stanza configures a list of environment variables to populate\n # the task's environment before starting.\n env {\n\n MINIO_ACCESS_KEY = \"minio\"\n MINIO_SECRET_KEY = \"minio123\"\n\n MINIO_BROWSER=\"off\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"storage\"\n port = \"http\"\n tags = [ \"storage${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Min.io Server HTTP Check Live\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/live\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n check {\n name = \"Min.io Server HTTP Check Ready\"\n type = \"http\"\n port = \"http\"\n protocol = \"http\"\n method = \"GET\"\n path = \"/minio/health/ready\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network.html\n #\n cpu = 40000\n memory = 40000\n network {\n port \"http\" {\n static = 9000\n }\n }\n }\n }\n }\n}\n",
+ "json": null,
+ "modify_index": "5933603",
+ "name": "prod-minio",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 4,
+ "meta": {},
+ "name": "prod-group1-minio",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-minio",
+ "volume_mounts": [
+ {
+ "destination": "/data/",
+ "read_only": false,
+ "volume": "prod-volume1-minio"
+ }
+ ]
+ }
+ ],
+ "volumes": [
+ {
+ "name": "prod-volume1-minio",
+ "read_only": false,
+ "source": "prod-volume-data1-1",
+ "type": "host"
+ }
+ ]
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.minio.data.template_file.nomad_job_minio"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.nginx",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_nginx",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "2816603491214d9abe10981b9f9cc6a4cb806acbc6981b952653847fec86e9ff",
+ "rendered": "job \"prod-nginx\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"$${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "datacenters": "yul1",
+ "job_name": "prod-nginx"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.nginx",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_nginx",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "1dea6de0-d5cd-2a1b-fb42-0468e986e0d6"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-nginx",
+ "jobspec": "job \"prod-nginx\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 0\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = false\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 0\n }\n\n # The reschedule stanza specifies the group's rescheduling strategy. If\n # specified at the job level, the configuration will apply to all groups\n # within the job. If the reschedule stanza is present on both the job and the\n # group, they are merged with the group stanza taking the highest precedence\n # and then the job.\n reschedule {\n delay = \"30s\"\n delay_function = \"constant\"\n unlimited = true\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-nginx\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n # The restart stanza configures a tasks's behavior on task failure. Restarts\n # happen on the client that is running the task.\n restart {\n interval = \"10m\"\n attempts = 2\n delay = \"15s\"\n mode = \"fail\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-nginx\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"nginx:stable\"\n dns_servers = [ \"${attr.unique.network.ip-address}\" ]\n port_map {\n https = 443\n }\n privileged = false\n volumes = [\n \"/etc/consul.d/ssl/consul.pem:/etc/ssl/certs/nginx-cert.pem\",\n \"/etc/consul.d/ssl/consul-key.pem:/etc/ssl/private/nginx-key.pem\",\n \"custom/upstream.conf:/etc/nginx/conf.d/upstream.conf\",\n \"custom/logs.conf:/etc/nginx/conf.d/logs.conf\",\n \"custom/docs.conf:/etc/nginx/conf.d/docs.conf\"\n ]\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template.html\n #\n template {\n data = \u003c\u003cEOH\n upstream storage {\n server storage0.storage.service.consul:9000;\n server storage1.storage.service.consul:9000;\n server storage2.storage.service.consul:9000;\n server storage3.storage.service.consul:9000;\n }\n EOH\n destination = \"custom/upstream.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl default_server;\n server_name logs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/;\n server_name_in_redirect off;\n }\n location ~ (.*html.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/html;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*txt.gz|.*log.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type text/plain;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n location ~ (.*xml.gz)$ {\n add_header Content-Encoding gzip;\n add_header Content-Type application/xml;\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/logs.fd.io/$1;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/logs.conf\"\n }\n template {\n data = \u003c\u003cEOH\n server {\n listen 443 ssl;\n server_name docs.nginx.service.consul;\n keepalive_timeout 70;\n ssl_session_cache shared:SSL:10m;\n ssl_session_timeout 10m;\n ssl_protocols TLSv1.2;\n ssl_prefer_server_ciphers on;\n ssl_ciphers \"ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384\";\n ssl_certificate /etc/ssl/certs/nginx-cert.pem;\n ssl_certificate_key /etc/ssl/private/nginx-key.pem;\n location / {\n chunked_transfer_encoding off;\n proxy_connect_timeout 300;\n proxy_http_version 1.1;\n proxy_set_header Host $host:$server_port;\n proxy_set_header Connection \"\";\n proxy_pass http://storage/docs.fd.io/;\n server_name_in_redirect off;\n }\n }\n EOH\n destination = \"custom/docs.conf\"\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service.html\n #\n service {\n name = \"nginx\"\n port = \"https\"\n tags = [ \"docs\", \"logs\" ]\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 1024\n network {\n mode = \"bridge\"\n port \"https\" {\n static = 443\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "5922474",
+ "name": "prod-nginx",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-nginx",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-nginx",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.nginx.data.template_file.nomad_job_nginx"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.prometheus",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_prometheus",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "cd26d062785357d96c95d6f8f40b2d8d7b430be3399de176e6b250822c4af86c",
+ "rendered": "job \"prod-prometheus\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-prometheus\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n \n volume \"prod-volume1-prometheus\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-prometheus\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n volume_mount {\n volume = \"prod-volume1-prometheus\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-2.24.0.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=/data/prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"prometheus\"\n port = \"prometheus\"\n tags = [ \"prometheus${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 8192\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"prometheus\" {\n static = 9090\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n%{ if use_canary }\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n%{ endif }\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-${service_name}\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n %{ if use_host_volume }\n volume \"prod-volume1-${service_name}\" {\n type = \"host\"\n read_only = false\n source = \"${host_volume}\"\n }\n %{ endif }\n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"$${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-${service_name}\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n %{ if use_host_volume }\n volume_mount {\n volume = \"prod-volume1-${service_name}\"\n destination = \"${data_dir}\"\n read_only = false\n }\n %{ endif }\n\n %{ if use_vault_provider }\n vault {\n policies = \"${vault_kv_policy_name}\"\n }\n %{ endif }\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-${version}.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=${data_dir}prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"${url}\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"${service_name}\"\n port = \"${service_name}\"\n tags = [ \"${service_name}$${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"${service_name}\" {\n static = ${port}\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "2000",
+ "data_dir": "/data/",
+ "datacenters": "yul1",
+ "group_count": "4",
+ "host_volume": "prod-volume-data1-1",
+ "job_name": "prod-prometheus",
+ "mem": "8192",
+ "port": "9090",
+ "service_name": "prometheus",
+ "url": "https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz",
+ "use_canary": "true",
+ "use_host_volume": "true",
+ "use_vault_provider": "false",
+ "version": "2.24.0"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.prometheus",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_prometheus",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "79c4c6b7-e8e4-79e7-9dae-9a26142cd94c",
+ "2e11f44e-814e-db74-a9ee-8bcbebb1fa0b",
+ "83f9c9aa-f4f2-b832-a937-aaee4181493e",
+ "231f1338-a871-b44e-d545-e8af01d7eebe"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "4cbf8370-f2d7-16c2-d500-f6495d43537d",
+ "deployment_status": "successful",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-prometheus",
+ "jobspec": "job \"prod-prometheus\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers\n #\n type = \"service\"\n\n update {\n # The \"max_parallel\" parameter specifies the maximum number of updates to\n # perform in parallel. In this case, this specifies to update a single task\n # at a time.\n max_parallel = 1\n\n health_check = \"checks\"\n\n # The \"min_healthy_time\" parameter specifies the minimum time the allocation\n # must be in the healthy state before it is marked as healthy and unblocks\n # further allocations from being updated.\n min_healthy_time = \"10s\"\n\n # The \"healthy_deadline\" parameter specifies the deadline in which the\n # allocation must be marked as healthy after which the allocation is\n # automatically transitioned to unhealthy. Transitioning to unhealthy will\n # fail the deployment and potentially roll back the job if \"auto_revert\" is\n # set to true.\n healthy_deadline = \"3m\"\n\n # The \"progress_deadline\" parameter specifies the deadline in which an\n # allocation must be marked as healthy. The deadline begins when the first\n # allocation for the deployment is created and is reset whenever an allocation\n # as part of the deployment transitions to a healthy state. If no allocation\n # transitions to the healthy state before the progress deadline, the\n # deployment is marked as failed.\n progress_deadline = \"10m\"\n\n\n # The \"canary\" parameter specifies that changes to the job that would result\n # in destructive updates should create the specified number of canaries\n # without stopping any previous allocations. Once the operator determines the\n # canaries are healthy, they can be promoted which unblocks a rolling update\n # of the remaining allocations at a rate of \"max_parallel\".\n #\n # Further, setting \"canary\" equal to the count of the task group allows\n # blue/green deployments. When the job is updated, a full set of the new\n # version is deployed and upon promotion the old version is stopped.\n canary = 1\n\n # Specifies if the job should auto-promote to the canary version when all\n # canaries become healthy during a deployment. Defaults to false which means\n # canaries must be manually updated with the nomad deployment promote\n # command.\n auto_promote = true\n\n # The \"auto_revert\" parameter specifies if the job should auto-revert to the\n # last stable job on deployment failure. A job is marked as stable if all the\n # allocations as part of its deployment were marked healthy.\n auto_revert = true\n\n }\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group\n #\n group \"prod-group1-prometheus\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 4\n\n # The volume stanza allows the group to specify that it requires a given\n # volume from the cluster.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/volume\n #\n \n volume \"prod-volume1-prometheus\" {\n type = \"host\"\n read_only = false\n source = \"prod-volume-data1-1\"\n }\n \n\n # The constraint allows restricting the set of eligible nodes. Constraints\n # may filter on attributes or client metadata.\n #\n # For more information and examples on the \"volume\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/constraint\n #\n constraint {\n attribute = \"${attr.cpu.arch}\"\n operator = \"!=\"\n value = \"arm64\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task\n #\n task \"prod-task1-prometheus\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"exec\"\n\n \n volume_mount {\n volume = \"prod-volume1-prometheus\"\n destination = \"/data/\"\n read_only = false\n }\n \n\n \n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n command = \"local/prometheus-2.24.0.linux-amd64/prometheus\"\n args = [\n \"--config.file=secrets/prometheus.yml\",\n \"--storage.tsdb.path=/data/prometheus/\",\n \"--storage.tsdb.retention.time=15d\"\n ]\n }\n\n # The artifact stanza instructs Nomad to fetch and unpack a remote resource,\n # such as a file, tarball, or binary. Nomad downloads artifacts using the\n # popular go-getter library, which permits downloading artifacts from a\n # variety of locations using a URL as the input source.\n #\n # For more information and examples on the \"artifact\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/artifact\n #\n artifact {\n source = \"https://github.com/prometheus/prometheus/releases/download/v2.24.0/prometheus-2.24.0.linux-amd64.tar.gz\"\n }\n\n # The \"template\" stanza instructs Nomad to manage a template, such as\n # a configuration file or script. This template can optionally pull data\n # from Consul or Vault to populate runtime configuration data.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/template\n #\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/alerts.yml\"\n left_delimiter = \"{{{\"\n right_delimiter = \"}}}\"\n data = \u003c\u003cEOH\n---\ngroups:\n- name: \"Consul\"\n rules:\n - alert: ConsulServiceHealthcheckFailed\n expr: consul_catalog_service_node_healthy == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul service healthcheck failed (instance {{ $labels.instance }}).\"\n description: \"Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`.\"\n - alert: ConsulMissingMasterNode\n expr: consul_raft_peers \u003c 3\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul missing master node (instance {{ $labels.instance }}).\"\n description: \"Numbers of consul raft peers should be 3, in order to preserve quorum.\"\n - alert: ConsulAgentUnhealthy\n expr: consul_health_node_status{status=\"critical\"} == 1\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Consul agent unhealthy (instance {{ $labels.instance }}).\"\n description: \"A Consul agent is down.\"\n- name: \"Hosts\"\n rules:\n - alert: NodeDown\n expr: up == 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus target missing (instance {{ $labels.instance }}).\"\n description: \"A Prometheus target has disappeared. An exporter might be crashed.\"\n - alert: HostHighCpuLoad\n expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[2m])) * 100) \u003e 80\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host high CPU load (instance {{ $labels.instance }}).\"\n description: \"CPU load is \u003e 80%.\"\n - alert: HostOutOfMemory\n expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of memory (instance {{ $labels.instance }}).\"\n description: \"Node memory is filling up (\u003c 10% left).\"\n - alert: HostOomKillDetected\n expr: increase(node_vmstat_oom_kill[1m]) \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host OOM kill detected (instance {{ $labels.instance }}).\"\n description: \"OOM kill detected.\"\n - alert: HostMemoryUnderMemoryPressure\n expr: rate(node_vmstat_pgmajfault[1m]) \u003e 1000\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host memory under memory pressure (instance {{ $labels.instance }}).\"\n description: \"The node is under heavy memory pressure. High rate of major page faults.\"\n - alert: HostOutOfDiskSpace\n expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes \u003c 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host out of disk space (instance {{ $labels.instance }}).\"\n description: \"Disk is almost full (\u003c 10% left).\"\n - alert: HostRaidDiskFailure\n expr: node_md_disks{state=\"failed\"} \u003e 0\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Host RAID disk failure (instance {{ $labels.instance }}).\"\n description: \"At least one device in RAID array on {{ $labels.instance }} failed. Array {{ $labels.md_device }} needs attention and possibly a disk swap.\"\n - alert: HostConntrackLimit\n expr: node_nf_conntrack_entries / node_nf_conntrack_entries_limit \u003e 0.8\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Host conntrack limit (instance {{ $labels.instance }}).\"\n description: \"The number of conntrack is approching limit.\"\n - alert: HostNetworkInterfaceSaturated\n expr: (rate(node_network_receive_bytes_total{device!~\"^tap.*\"}[1m]) + rate(node_network_transmit_bytes_total{device!~\"^tap.*\"}[1m])) / node_network_speed_bytes{device!~\"^tap.*\"} \u003e 0.8\n for: 1m\n labels:\n severity: warning\n annotations:\n summary: \"Host Network Interface Saturated (instance {{ $labels.instance }}).\"\n description: \"The network interface {{ $labels.interface }} on {{ $labels.instance }} is getting overloaded.\"\n - alert: HostSystemdServiceCrashed\n expr: node_systemd_unit_state{state=\"failed\"} == 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host SystemD service crashed (instance {{ $labels.instance }}).\"\n description: \"SystemD service crashed.\"\n - alert: HostEdacCorrectableErrorsDetected\n expr: increase(node_edac_correctable_errors_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: info\n annotations:\n summary: \"Host EDAC Correctable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} correctable memory errors reported by EDAC in the last 5 minutes.'\n - alert: HostEdacUncorrectableErrorsDetected\n expr: node_edac_uncorrectable_errors_total \u003e 0\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Host EDAC Uncorrectable Errors detected (instance {{ $labels.instance }}).\"\n description: '{{ $labels.instance }} has had {{ printf \"%.0f\" $value }} uncorrectable memory errors reported by EDAC in the last 5 minutes.'\n- name: \"Min.io\"\n rules:\n - alert: MinioDiskOffline\n expr: minio_offline_disks \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Minio disk offline (instance {{ $labels.instance }})\"\n description: \"Minio disk is offline.\"\n - alert: MinioStorageSpaceExhausted\n expr: minio_disk_storage_free_bytes / 1024 / 1024 / 1024 \u003c 10\n for: 2m\n labels:\n severity: warning\n annotations:\n summary: \"Minio storage space exhausted (instance {{ $labels.instance }}).\"\n description: \"Minio storage space is low (\u003c 10 GB).\"\n- name: \"Prometheus\"\n rules:\n - alert: PrometheusConfigurationReloadFailure\n expr: prometheus_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"Prometheus configuration reload error.\"\n - alert: PrometheusTooManyRestarts\n expr: changes(process_start_time_seconds{job=~\"prometheus|pushgateway|alertmanager\"}[15m]) \u003e 2\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus too many restarts (instance {{ $labels.instance }}).\"\n description: \"Prometheus has restarted more than twice in the last 15 minutes. It might be crashlooping.\"\n - alert: PrometheusAlertmanagerConfigurationReloadFailure\n expr: alertmanager_config_last_reload_successful != 1\n for: 0m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus AlertManager configuration reload failure (instance {{ $labels.instance }}).\"\n description: \"AlertManager configuration reload error.\"\n - alert: PrometheusRuleEvaluationFailures\n expr: increase(prometheus_rule_evaluation_failures_total[3m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus rule evaluation failures (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} rule evaluation failures, leading to potentially ignored alerts.\"\n - alert: PrometheusTargetScrapingSlow\n expr: prometheus_target_interval_length_seconds{quantile=\"0.9\"} \u003e 60\n for: 5m\n labels:\n severity: warning\n annotations:\n summary: \"Prometheus target scraping slow (instance {{ $labels.instance }}).\"\n description: \"Prometheus is scraping exporters slowly.\"\n - alert: PrometheusTsdbCompactionsFailed\n expr: increase(prometheus_tsdb_compactions_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB compactions failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB compactions failures.\"\n - alert: PrometheusTsdbHeadTruncationsFailed\n expr: increase(prometheus_tsdb_head_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB head truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB head truncation failures.\"\n - alert: PrometheusTsdbWalCorruptions\n expr: increase(prometheus_tsdb_wal_corruptions_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL corruptions (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL corruptions.\"\n - alert: PrometheusTsdbWalTruncationsFailed\n expr: increase(prometheus_tsdb_wal_truncations_failed_total[1m]) \u003e 0\n for: 0m\n labels:\n severity: critical\n annotations:\n summary: \"Prometheus TSDB WAL truncations failed (instance {{ $labels.instance }}).\"\n description: \"Prometheus encountered {{ $value }} TSDB WAL truncation failures.\"\nEOH\n }\n\n template {\n change_mode = \"noop\"\n change_signal = \"SIGINT\"\n destination = \"secrets/prometheus.yml\"\n data = \u003c\u003cEOH\n---\nglobal:\n scrape_interval: 5s\n scrape_timeout: 5s\n evaluation_interval: 5s\n\nalerting:\n alertmanagers:\n - consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\nrule_files:\n - 'alerts.yml'\n\nscrape_configs:\n\n - job_name: 'Nomad Cluster'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nomad-client', 'nomad' ]\n relabel_configs:\n - source_labels: [__meta_consul_tags]\n regex: '(.*)http(.*)'\n action: keep\n metrics_path: /v1/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Consul Cluster'\n static_configs:\n - targets: [ '10.30.51.30:8500', '10.30.51.32:8500', '10.30.51.33:8500' ]\n metrics_path: /v1/agent/metrics\n params:\n format: [ 'prometheus' ]\n\n - job_name: 'Alertmanager'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'alertmanager' ]\n\n - job_name: 'Blackbox Exporter (icmp)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n - targets: [ '10.30.51.32' ]\n params:\n module: [ 'icmp_v4' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'Blackbox Exporter (http)'\n static_configs:\n - targets: [ 'gerrit.fd.io' ]\n - targets: [ 'jenkins.fd.io' ]\n params:\n module: [ 'http_2xx' ]\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: localhost:9115\n metrics_path: /probe\n\n - job_name: 'cAdvisor Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'cadvisorexporter' ]\n\n - job_name: 'Grafana'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'grafana' ]\n\n - job_name: 'Node Exporter'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'nodeexporter' ]\n\n - job_name: 'Prometheus'\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'prometheus' ]\n\n - job_name: 'Minio'\n bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NjQ1ODEzMzcsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pbyJ9.oeTw3EIaiFmlDikrHXWiWXMH2vxLfDLkfjEC7G2N3M_keH_xyA_l2ofLLNYtopa_3GCEZnxLQdPuFZrmgpkDWg\n consul_sd_configs:\n - server: '{{ env \"NOMAD_IP_prometheus\" }}:8500'\n services: [ 'storage' ]\n metrics_path: /minio/prometheus/metrics\nEOH\n }\n\n # The service stanza instructs Nomad to register a service with Consul.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/service\n #\n service {\n name = \"prometheus\"\n port = \"prometheus\"\n tags = [ \"prometheus${NOMAD_ALLOC_INDEX}\" ]\n check {\n name = \"Prometheus Check Live\"\n type = \"http\"\n path = \"/-/healthy\"\n interval = \"10s\"\n timeout = \"2s\"\n }\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources\n #\n resources {\n cpu = 2000\n memory = 8192\n # The network stanza specifies the networking requirements for the task\n # group, including the network mode and port allocations. When scheduling\n # jobs in Nomad they are provisioned across your fleet of machines along\n # with other jobs and services. Because you don't know in advance what host\n # your job will be provisioned on, Nomad will provide your tasks with\n # network configuration when they start up.\n #\n # For more information and examples on the \"template\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/network\n #\n network {\n port \"prometheus\" {\n static = 9090\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7147932",
+ "name": "prod-prometheus",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 4,
+ "meta": {},
+ "name": "prod-group1-prometheus",
+ "task": [
+ {
+ "driver": "exec",
+ "meta": {},
+ "name": "prod-task1-prometheus",
+ "volume_mounts": [
+ {
+ "destination": "/data/",
+ "read_only": false,
+ "volume": "prod-volume1-prometheus"
+ }
+ ]
+ }
+ ],
+ "volumes": [
+ {
+ "name": "prod-volume1-prometheus",
+ "read_only": false,
+ "source": "prod-volume-data1-1",
+ "type": "host"
+ }
+ ]
+ }
+ ],
+ "type": "service"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.prometheus.data.template_file.nomad_job_prometheus"
+ ]
+ }
+ ]
+ },
+ {
+ "module": "module.vpp_device",
+ "mode": "data",
+ "type": "template_file",
+ "name": "nomad_job_csit_shim",
+ "provider": "provider[\"registry.terraform.io/hashicorp/template\"]",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "filename": null,
+ "id": "a285223159ce0af9e5427d857021e5651c09408af90decd3b93a90efd4fd7ce8",
+ "rendered": "job \"prod-device-csit-shim\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "template": "job \"${job_name}\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"${datacenters}\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n constraint {\n attribute = \"$${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = ${group_count}\n\n constraint {\n attribute = \"$${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = ${cpu}\n memory = ${mem}\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "vars": {
+ "cpu": "1000",
+ "datacenters": "yul1",
+ "group_count": "1",
+ "job_name": "prod-device-csit-shim",
+ "mem": "5000"
+ }
+ },
+ "sensitive_attributes": []
+ }
+ ]
+ },
+ {
+ "module": "module.vpp_device",
+ "mode": "managed",
+ "type": "nomad_job",
+ "name": "nomad_job_csit_shim",
+ "provider": "provider[\"registry.terraform.io/hashicorp/nomad\"].yul1",
+ "instances": [
+ {
+ "schema_version": 0,
+ "attributes": {
+ "allocation_ids": [
+ "ecfcd9ad-b959-0fa4-c1ec-8b82195830f1",
+ "190f5699-0d10-7f85-ac68-96927702070b",
+ "2fbbef45-f00a-1367-08c4-c2239de9e78d",
+ "dd57bc83-2229-d242-1caf-b743f186e7a2"
+ ],
+ "datacenters": [
+ "yul1"
+ ],
+ "deployment_id": "",
+ "deployment_status": "",
+ "deregister_on_destroy": true,
+ "deregister_on_id_change": true,
+ "detach": false,
+ "id": "prod-device-csit-shim",
+ "jobspec": "job \"prod-device-csit-shim\" {\n # The \"region\" parameter specifies the region in which to execute the job.\n # If omitted, this inherits the default region name of \"global\".\n # region = \"global\"\n #\n # The \"datacenters\" parameter specifies the list of datacenters which should\n # be considered when placing this task. This must be provided.\n datacenters = \"yul1\"\n\n # The \"type\" parameter controls the type of job, which impacts the scheduler's\n # decision on placement. This configuration is optional and defaults to\n # \"service\". For a full list of job types and their differences, please see\n # the online documentation.\n #\n # For more information, please see the online documentation at:\n #\n # https://www.nomadproject.io/docs/jobspec/schedulers.html\n #\n type = \"system\"\n\n # The \"group\" stanza defines a series of tasks that should be co-located on\n # the same Nomad client. Any task within a group will be placed on the same\n # client.\n #\n # For more information and examples on the \"group\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/group.html\n #\n group \"prod-group1-csit-shim-amd\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csit\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-amd\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n\n group \"prod-group1-csit-shim-arm\" {\n # The \"count\" parameter specifies the number of the task groups that should\n # be running under this group. This value must be non-negative and defaults\n # to 1.\n count = 1\n\n constraint {\n attribute = \"${node.class}\"\n value = \"csitarm\"\n }\n\n restart {\n interval = \"1m\"\n attempts = 3\n delay = \"15s\"\n mode = \"delay\"\n }\n\n # The \"task\" stanza creates an individual unit of work, such as a Docker\n # container, web application, or batch processing.\n #\n # For more information and examples on the \"task\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/task.html\n #\n task \"prod-task1-csit-shim-arm\" {\n # The \"driver\" parameter specifies the task driver that should be used to\n # run the task.\n driver = \"docker\"\n\n # The \"config\" stanza specifies the driver configuration, which is passed\n # directly to the driver to start the task. The details of configurations\n # are specific to each driver, so please see specific driver\n # documentation for more information.\n config {\n image = \"csit_shim-ubuntu1804:local\"\n network_mode = \"host\"\n pid_mode = \"host\"\n volumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ]\n privileged = true\n }\n\n # The \"resources\" stanza describes the requirements a task needs to\n # execute. Resource requirements include memory, network, cpu, and more.\n # This ensures the task will execute on a machine that contains enough\n # resource capacity.\n #\n # For more information and examples on the \"resources\" stanza, please see\n # the online documentation at:\n #\n # https://www.nomadproject.io/docs/job-specification/resources.html\n #\n resources {\n cpu = 1000\n memory = 5000\n network {\n port \"ssh\" {\n static = 6022\n }\n port \"ssh2\" {\n static = 6023\n }\n }\n }\n }\n }\n}",
+ "json": null,
+ "modify_index": "7077736",
+ "name": "prod-device-csit-shim",
+ "namespace": "default",
+ "policy_override": null,
+ "purge_on_destroy": null,
+ "region": "global",
+ "task_groups": [
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-csit-shim-amd",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-csit-shim-amd",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ },
+ {
+ "count": 1,
+ "meta": {},
+ "name": "prod-group1-csit-shim-arm",
+ "task": [
+ {
+ "driver": "docker",
+ "meta": {},
+ "name": "prod-task1-csit-shim-arm",
+ "volume_mounts": []
+ }
+ ],
+ "volumes": []
+ }
+ ],
+ "type": "system"
+ },
+ "sensitive_attributes": [],
+ "private": "bnVsbA==",
+ "dependencies": [
+ "module.vpp_device.data.template_file.nomad_job_csit_shim"
+ ]
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl b/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl
new file mode 100644
index 0000000000..cf065429d1
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl
@@ -0,0 +1,169 @@
+job "${job_name}" {
+ # The "region" parameter specifies the region in which to execute the job.
+ # If omitted, this inherits the default region name of "global".
+ # region = "global"
+ #
+ # The "datacenters" parameter specifies the list of datacenters which should
+ # be considered when placing this task. This must be provided.
+ datacenters = "${datacenters}"
+
+ # The "type" parameter controls the type of job, which impacts the scheduler's
+ # decision on placement. This configuration is optional and defaults to
+ # "service". For a full list of job types and their differences, please see
+ # the online documentation.
+ #
+ # For more information, please see the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/jobspec/schedulers.html
+ #
+ type = "system"
+
+ # The "group" stanza defines a series of tasks that should be co-located on
+ # the same Nomad client. Any task within a group will be placed on the same
+ # client.
+ #
+ # For more information and examples on the "group" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/group.html
+ #
+ group "prod-group1-csit-shim-amd" {
+ # The "count" parameter specifies the number of the task groups that should
+ # be running under this group. This value must be non-negative and defaults
+ # to 1.
+ count = ${group_count}
+
+ constraint {
+ attribute = "$${node.class}"
+ value = "csit"
+ }
+
+ restart {
+ interval = "1m"
+ attempts = 3
+ delay = "15s"
+ mode = "delay"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/task.html
+ #
+ task "prod-task1-csit-shim-amd" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "docker"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ image = "csit_shim-ubuntu1804:local"
+ network_mode = "host"
+ pid_mode = "host"
+ volumes = [
+ "/var/run/docker.sock:/var/run/docker.sock"
+ ]
+ privileged = true
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # For more information and examples on the "resources" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources.html
+ #
+ resources {
+ cpu = ${cpu}
+ memory = ${mem}
+ network {
+ port "ssh" {
+ static = 6022
+ }
+ port "ssh2" {
+ static = 6023
+ }
+ }
+ }
+ }
+ }
+
+ group "prod-group1-csit-shim-arm" {
+ # The "count" parameter specifies the number of the task groups that should
+ # be running under this group. This value must be non-negative and defaults
+ # to 1.
+ count = ${group_count}
+
+ constraint {
+ attribute = "$${node.class}"
+ value = "csitarm"
+ }
+
+ restart {
+ interval = "1m"
+ attempts = 3
+ delay = "15s"
+ mode = "delay"
+ }
+
+ # The "task" stanza creates an individual unit of work, such as a Docker
+ # container, web application, or batch processing.
+ #
+ # For more information and examples on the "task" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/task.html
+ #
+ task "prod-task1-csit-shim-arm" {
+ # The "driver" parameter specifies the task driver that should be used to
+ # run the task.
+ driver = "docker"
+
+ # The "config" stanza specifies the driver configuration, which is passed
+ # directly to the driver to start the task. The details of configurations
+ # are specific to each driver, so please see specific driver
+ # documentation for more information.
+ config {
+ image = "csit_shim-ubuntu1804:local"
+ network_mode = "host"
+ pid_mode = "host"
+ volumes = [
+ "/var/run/docker.sock:/var/run/docker.sock"
+ ]
+ privileged = true
+ }
+
+ # The "resources" stanza describes the requirements a task needs to
+ # execute. Resource requirements include memory, network, cpu, and more.
+ # This ensures the task will execute on a machine that contains enough
+ # resource capacity.
+ #
+ # For more information and examples on the "resources" stanza, please see
+ # the online documentation at:
+ #
+ # https://www.nomadproject.io/docs/job-specification/resources.html
+ #
+ resources {
+ cpu = ${cpu}
+ memory = ${mem}
+ network {
+ port "ssh" {
+ static = 6022
+ }
+ port "ssh2" {
+ static = 6023
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/main.tf b/terraform-ci-infra/1n_nmd/vpp_device/main.tf
new file mode 100644
index 0000000000..c4a3e27970
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/main.tf
@@ -0,0 +1,19 @@
+locals {
+ datacenters = join(",", var.nomad_datacenters)
+}
+
+data "template_file" "nomad_job_csit_shim" {
+ template = file("${path.module}/conf/nomad/csit_shim.hcl")
+ vars = {
+ datacenters = local.datacenters
+ job_name = var.csit_shim_job_name
+ group_count = var.csit_shim_group_count
+ cpu = var.csit_shim_cpu
+ mem = var.csit_shim_mem
+ }
+}
+
+resource "nomad_job" "nomad_job_csit_shim" {
+ jobspec = data.template_file.nomad_job_csit_shim.rendered
+ detach = false
+} \ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/variables.tf b/terraform-ci-infra/1n_nmd/vpp_device/variables.tf
new file mode 100644
index 0000000000..ca574e770a
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/variables.tf
@@ -0,0 +1,31 @@
+# Nomad
+variable "nomad_datacenters" {
+ description = "Nomad data centers"
+ type = list(string)
+ default = [ "dc1" ]
+}
+
+# CSIT SHIM
+variable "csit_shim_job_name" {
+ description = "CSIT SHIM job name"
+ type = string
+ default = "prod-csit-shim"
+}
+
+variable "csit_shim_group_count" {
+ description = "Number of CSIT SHIM group instances"
+ type = number
+ default = 1
+}
+
+variable "csit_shim_cpu" {
+ description = "CSIT SHIM task CPU"
+ type = number
+ default = 2000
+}
+
+variable "csit_shim_mem" {
+ description = "CSIT SHIM task memory"
+ type = number
+ default = 10000
+} \ No newline at end of file
diff --git a/tests/vpp/device/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-dev.robot b/tests/vpp/device/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-dev.robot
index 866975cbc5..5c1122211c 100644
--- a/tests/vpp/device/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-dev.robot
+++ b/tests/vpp/device/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-dev.robot
@@ -64,14 +64,9 @@
| |
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
-| | ${cb}= | Get Average Frame Size | ${frame_size}
-| | ${eb}= | Get Average Frame Size | ${frame_size}
-| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${cb}
-| | Set Test Variable | \${eb}
-| |
| | Given Set Max Rate And Jumbo
+| | And Set Rates For Policer
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
diff --git a/tests/vpp/device/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-dev.robot b/tests/vpp/device/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-dev.robot
index 02b8728f3d..688e912767 100644
--- a/tests/vpp/device/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-dev.robot
+++ b/tests/vpp/device/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-dev.robot
@@ -65,10 +65,9 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${cb} | ${frame_size}
-| | Set Test Variable | \${eb} | ${frame_size}
| |
| | Given Set Max Rate And Jumbo
+| | And Set Rates For Policer
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot
index 07c2480e2f..6a5f288d6d 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot
@@ -65,7 +65,7 @@
# TG subnets used by T-Rex
| ${tg_if1_net}= | 10.10.10.0
| ${tg_if2_net}= | 20.20.20.0
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4src254
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
index 5ca8c561e8..3ebc380342 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
index fffbfd6e0d..afd4624d55 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
index 1e5396c787..3597eab7d7 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
@@ -62,7 +62,7 @@
| ${cir}= | ${100}
| ${eir}= | ${150}
| ${dscp}= | AF22
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4src253
*** Keywords ***
@@ -80,14 +80,10 @@
| |
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
-| | ${cb}= | Get Average Frame Size | ${frame_size}
-| | ${eb}= | Get Average Frame Size | ${frame_size}
-| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${cb}
-| | Set Test Variable | \${eb}
| |
| | Given Set Max Rate And Jumbo
+| | And Set Rates For Policer
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ndrpdr.robot
index 452ef5b358..992a9fd851 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4base-ndrpdr.robot
@@ -57,7 +57,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
index ca83d2e2fe..1ae46ec4eb 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${100000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
index f91928f1f3..3218c986af 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${10000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
index 157b897c04..c2d26a9ac3 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${1000000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot
index f2f3d9ed9e..75dafd82e1 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot
index 111c841260..a6f90ee238 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot
index 7c8763b484..45285d48fc 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot
index d2221196af..4fbf64b48f 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot
index 99517b1338..74b32cf8ec 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot
index c486f0ec03..002629e772 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot
index 43d080cb07..ddd9b09cf2 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot
index f1b5d74904..386c735d81 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
index a73d7dc49f..41c1c450f7 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot
index 8acd18115e..8e6bcb7bd4 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot
index 5f200c0e70..dcf6b1c964 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
index bcdc9f66e9..5a43e41b37 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot
index 6da1d78a32..8c97b59742 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot
index 83a7b2bc5b..443e6c7341 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
index df6d93cd25..5a08b2bc4d 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot
index dd8ec71f9f..2dc5ddeb3c 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot
index 6fa61ee687..2068b80b0a 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
index 309b22be91..838c5e1108 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot
index 260b778f1c..578c93e1b8 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot
index 811a6a3707..64dc87dcdf 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot
index 6abfb81b28..d3b65f42ec 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot
index 4591c06983..4293a3182f 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot
index 2d4175a3ca..402cbd43e7 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot
index aff7e7f3a6..1ba7cdf821 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot
index d1489480d9..7bb8154fef 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot
index b639b462de..b529c4d1b4 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot
index f7e422f8a0..16cc90306c 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot
index d691960d55..afc9d49d95 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot
index 4cb6385712..d48b1db27d 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot
index 6a81eb5317..7f461b4e3f 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot
index 5d48849e00..9600a10370 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot
index 9cd248d737..c0b1442ec8 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
index 554867afef..696dc3f756 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot
index 556815764a..a15049c7d1 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u10p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot
index 0512e723fd..f8d51a3aeb 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-100u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
index e7b5ce1b19..e3e3414e76 100644
--- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
@@ -74,7 +74,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-3n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot
index 0f8ad95031..c70585dbfb 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot
@@ -64,7 +64,7 @@
# TG subnets used by T-Rex
| ${tg_if1_net}= | 10.10.10.0
| ${tg_if2_net}= | 20.20.20.0
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-dot1qip4asym-ip4src254
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
index 0b2250c6b0..1ec02d2fc3 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-copwhtlistbase-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
index 2f6b8123cb..238913461a 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
index 991beec6e0..5ea69a0ab4 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-ndrpdr.robot
@@ -60,7 +60,7 @@
| ${cir}= | ${100}
| ${eir}= | ${150}
| ${dscp}= | AF22
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4src253
*** Keywords ***
@@ -78,14 +78,10 @@
| |
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
-| | ${cb}= | Get Average Frame Size | ${frame_size}
-| | ${eb}= | Get Average Frame Size | ${frame_size}
-| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${cb}
-| | Set Test Variable | \${eb}
| |
| | Given Set Max Rate And Jumbo
+| | And Set Rates For Policer
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ndrpdr.robot
index b244172385..6b40a2df9f 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4base-ndrpdr.robot
@@ -57,7 +57,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4src253
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
index f766c15186..4dbfcccba8 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot
@@ -57,7 +57,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${100000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot
index 79e6ae4a00..e23349edbd 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${100000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst-rnd${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
index dc24444dd8..e27bedc849 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot
@@ -57,7 +57,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${10000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot
index 91da04bd0b..ee3c500ac2 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${10000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst-rnd${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
index dcb016305b..2c9419bd5a 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot
@@ -57,7 +57,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${1000000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot
index 9d4baf6584..37e6297659 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot
@@ -59,7 +59,7 @@
| ${osi_layer}= | L3
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${1000000}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4-ip4dst-rnd${rts_per_flow}
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot
index e402382c20..984454c948 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | TCP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4tcp-ip4base-h1024-p63-s64512
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_CPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h1024-p63-s64512-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,21 +26,21 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
-| ... | routing and two static IPv4 /24 route entries. DUT1 tested with
-| ... | ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
-| ... | contain L7 flows (${cps} bi-directional UDP flows) with all packets\
+| ... | contain L7 flows (${cps} bi-directional TCP flows) with all packets\
| ... | containing Ethernet header, IPv4 header with TCP header and static\
| ... | payload. MAC addresses are matching MAC addresses of the TG node\
| ... | interfaces.
@@ -57,12 +57,16 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-1024h
-| ${cps}= | ${64512}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +84,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +93,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +101,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${22}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-1c-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-2c-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-4c-ethip4tcp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot
new file mode 100644
index 0000000000..26bf1604ba
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h1024-p63-s64512-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${22}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot
index 45ba61ef42..93adf5bfef 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | TCP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4tcp-ip4base-h16384-p63-s1032192
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_CPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h16384-p63-s1032192-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,14 +26,14 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty TCP transactions with IPv4 routing*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
-| ... | routing and two static IPv4 /24 route entries. DUT1 tested with
-| ... | ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -41,7 +41,7 @@
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
| ... | contain L7 flows (${cps} bi-directional TCP flows) with all packets\
-| ... | containing Ethernet header, IPv4 header with UDP header and static\
+| ... | containing Ethernet header, IPv4 header with TCP header and static\
| ... | payload. MAC addresses are matching MAC addresses of the TG node\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
@@ -57,12 +57,16 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-16384h
-| ${cps}= | ${1032192}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +84,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +93,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +101,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${18}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-1c-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-2c-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-4c-ethip4tcp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot
new file mode 100644
index 0000000000..c0b2193157
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h16384-p63-s1032192-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${18}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot
index b3d1f84c8c..5892edea9d 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | TCP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4tcp-ip4base-h262144-p63-s16515072
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_CPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h262144-p63-s16515072-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,14 +26,14 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty TCP transactions with IPv4 routing*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
-| ... | routing and two static IPv4 /24 route entries. DUT1 tested with
-| ... | ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -41,7 +41,7 @@
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
| ... | contain L7 flows (${cps} bi-directional TCP flows) with all packets\
-| ... | containing Ethernet header, IPv4 header with UDP header and static\
+| ... | containing Ethernet header, IPv4 header with TCP header and static\
| ... | payload. MAC addresses are matching MAC addresses of the TG node\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
@@ -57,12 +57,16 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-262144h
-| ${cps}= | ${16515072}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +84,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +93,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +101,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 172.16.0.0 | 20.16.0.0 | ${14}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-1c-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-2c-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-4c-ethip4tcp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot
new file mode 100644
index 0000000000..554f4070e7
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h262144-p63-s16515072-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 172.16.0.0 | 20.16.0.0 | ${14}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot
index 2229f90c80..96c5bc062f 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | TCP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4tcp-ip4base-h4096-p63-s258048
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_CPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h4096-p63-s258048-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,21 +26,21 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty TCP transactions with IPv4 routing*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
-| ... | routing and two static IPv4 /24 route entries. DUT1 tested with
-| ... | ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
-| ... | contain L7 flows (${cps} bi-directional UDP flows) with all packets\
+| ... | contain L7 flows (${cps} bi-directional TCP flows) with all packets\
| ... | containing Ethernet header, IPv4 header with TCP header and static\
| ... | payload. MAC addresses are matching MAC addresses of the TG node\
| ... | interfaces.
@@ -57,12 +57,16 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-4096h
-| ${cps}= | ${258048}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +84,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +93,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +101,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${20}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-1c-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-2c-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-4c-ethip4tcp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot
new file mode 100644
index 0000000000..9fd4c4229e
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h4096-p63-s258048-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${20}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot
index 1a51c68365..ca3d2cfc41 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | TCP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4tcp-ip4base-h65536-p63-s4128768
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_CPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h65536-p63-s4128768-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,21 +26,21 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty TCP transactions with IPv4 routing*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
-| ... | routing and two static IPv4 /24 route entries. DUT1 tested with
-| ... | ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
-| ... | contain L7 flows (${cps} bi-directional UDP flows) with all packets\
+| ... | contain L7 flows (${cps} bi-directional TCP flows) with all packets\
| ... | containing Ethernet header, IPv4 header with TCP header and static\
| ... | payload. MAC addresses are matching MAC addresses of the TG node\
| ... | interfaces.
@@ -57,12 +57,16 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-65536h
-| ${cps}= | ${4128768}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +84,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +93,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +101,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${16}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-1c-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-2c-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-4c-ethip4tcp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot
new file mode 100644
index 0000000000..7327b854c8
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-ip4base-h65536-p63-s4128768-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${16}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
index 905c5526f8..34a7384d45 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP | TCP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_1024 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed-h1024-p63-s64512-cps
|
@@ -29,15 +29,14 @@
|
| Test Template | Local Template
|
-| Documentation | *Connections per second NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty TCP transactions with NAT44ED*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and
-| ... | one static IPv4 /18 route entries.
-| ... | DUT1 is tested with ${nic_name}.\
+| ... | one static IPv4 /18 route entries.\
+| ... | DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -85,12 +84,13 @@
| ${n_hosts}= | ${1024}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-1024h
-| ${cps}= | ${64512}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +109,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +118,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +131,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
@@ -146,39 +145,3 @@
| 64B-4c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot
new file mode 100644
index 0000000000..ec0260ce99
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-nat44ed-h1024-p63-s64512-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${22}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${22}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.0
+| ${out_mask}= | ${32}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
index 836f60208a..1778833fbe 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP | TCP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_16384 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed-h16384-p63-s1032192-cps
|
@@ -29,15 +29,14 @@
|
| Test Template | Local Template
|
-| Documentation | *Connections per second NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty TCP transactions with NAT44ED*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and
-| ... | one static IPv4 /18 route entries.
-| ... | DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\
+| ... | one static IPv4 /18 route entries.\
+| ... | DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -85,12 +84,13 @@
| ${n_hosts}= | ${16384}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-16384h
-| ${cps}= | ${1032192}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +109,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +118,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +131,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
@@ -146,39 +145,3 @@
| 64B-4c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot
new file mode 100644
index 0000000000..189a5494fe
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-nat44ed-h16384-p63-s1032192-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${18}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${18}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.15
+| ${out_mask}= | ${28}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
index 47aa07ff44..ac009da7a1 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP | TCP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_262144 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed-h262144-p63-s16515072-cps
|
@@ -29,15 +29,14 @@
|
| Test Template | Local Template
|
-| Documentation | *Connections per second NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty TCP transactions with NAT44ED*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and
-| ... | one static IPv4 /18 route entries.
-| ... | DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\
+| ... | one static IPv4 /18 route entries.\
+| ... | DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -85,12 +84,15 @@
| ${n_hosts}= | ${262144}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-262144h
-| ${cps}= | ${16515072}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +111,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +120,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +133,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
@@ -146,39 +147,3 @@
| 64B-4c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot
new file mode 100644
index 0000000000..172709b7e0
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-nat44ed-h262144-p63-s16515072-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.16.0.0
+| ${dest_mask}= | ${14}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 172.16.0.0
+| ${in_mask}= | ${14}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.255
+| ${out_mask}= | ${24}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${n_sessions}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
index 873ac1a30a..114069e9e6 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP | TCP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_4096 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed-h4096-p63-s258048-cps
|
@@ -29,14 +29,13 @@
|
| Test Template | Local Template
|
-| Documentation | *Connections per second NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty TCP transactions with NAT44ED*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and
-| ... | one static IPv4 /18 route entries.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\
+| ... | one static IPv4 /18 route entries.\
| ... | DUT1 is tested with ${nic_name}.\
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
@@ -85,12 +84,13 @@
| ${n_hosts}= | ${4096}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-4096h
-| ${cps}= | ${258048}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +109,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +118,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +131,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
@@ -146,39 +145,3 @@
| 64B-4c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot
new file mode 100644
index 0000000000..fa2545f562
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-nat44ed-h4096-p63-s258048-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${20}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${20}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.3
+| ${out_mask}= | ${30}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
index 7f98f1c9bb..e0740029c0 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | TCP | TCP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_65536 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed-h65536-p63-s4128768-cps
|
@@ -29,15 +29,14 @@
|
| Test Template | Local Template
|
-| Documentation | *Connections per second NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty TCP transactions with NAT44ED*
|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and
-| ... | one static IPv4 /18 route entries.
-| ... | DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\
+| ... | one static IPv4 /18 route entries.\
+| ... | DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
@@ -85,12 +84,15 @@
| ${n_hosts}= | ${65536}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4tcp-65536h
-| ${cps}= | ${4128768}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${4}
+| ${packets_per_transaction_aggregated}= | ${7}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h
+| ${transaction_type}= | tcp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +111,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +120,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +133,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
@@ -146,39 +147,3 @@
| 64B-4c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4tcp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot
new file mode 100644
index 0000000000..faa9aaae99
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | TCP | TCP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4tcp-nat44ed-h65536-p63-s4128768-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight TCP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-TCP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, TCP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${16}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${16}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.63
+| ${out_mask}= | ${26}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${11}
+| ${transaction_scale}= | ${n_sessions}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4tcp-${n_hosts}h-pps
+| ${transaction_type}= | tcp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4tcp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot
index c107d3e8f3..77d3ee210c 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | UDP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-ip4base-h1024-p63-s64512
+| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | IP4BASE | DRV_VFIO_PCI
+| ... | UDP | UDP_CPS | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h1024-p63-s64512-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,7 +26,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty UDP transactions with IPv4 routing*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -57,12 +57,14 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-1024h
-| ${cps}= | ${64512}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +82,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +91,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +99,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${22}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-1c-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-2c-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
+| 64B-4c-ethip4udp-ip4base-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-ip4base-h1024-p63-s64512-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot
new file mode 100644
index 0000000000..d27b1bda85
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h1024-p63-s64512-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /22 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${22}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-ip4base-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot
index eec0cfcef6..74f34b64f7 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | UDP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-ip4base-h16384-p63-s1032192
+| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | IP4BASE | DRV_VFIO_PCI
+| ... | UDP | UDP_CPS | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h16384-p63-s1032192-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,7 +26,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty UDP transactions with IPv4 routing*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -57,12 +57,14 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-16384h
-| ${cps}= | ${1032192}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +82,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +91,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +99,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${18}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-1c-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-2c-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
+| 64B-4c-ethip4udp-ip4base-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-ip4base-h16384-p63-s1032192-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot
new file mode 100644
index 0000000000..3510c84f9c
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h16384-p63-s1032192-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| Documentation | *PPS on lightweight UDP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
+| ... | routing and two static IPv4 /18 route entries. DUT1 tested with
+| ... | ${nic_name}.\
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${18}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-ip4base-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot
index 64c0013955..44b7740f5c 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | UDP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-ip4base-h262144-p63-s16515072
+| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | IP4BASE | DRV_VFIO_PCI
+| ... | UDP | UDP_CPS | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h262144-p63-s16515072-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,7 +26,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty UDP transactions with IPv4 routing*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -57,12 +57,14 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-262144h
-| ${cps}= | ${16515072}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +82,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +91,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +99,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 172.16.0.0 | 20.16.0.0 | ${14}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-1c-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-2c-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
+| 64B-4c-ethip4udp-ip4base-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-ip4base-h262144-p63-s16515072-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot
new file mode 100644
index 0000000000..7a80bf07d5
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h262144-p63-s16515072-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| Documentation | *PPS on lightweight UDP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
+| ... | routing and two static IPv4 /14 route entries. DUT1 tested with
+| ... | ${nic_name}.\
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 172.16.0.0 | 20.16.0.0 | ${14}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-ip4base-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot
index 76bf239508..4226656f14 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | UDP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-ip4base-h4096-p63-s258048
+| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | IP4BASE | DRV_VFIO_PCI
+| ... | UDP | UDP_CPS | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h4096-p63-s258048-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,7 +26,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty UDP transactions with IPv4 routing*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -57,12 +57,14 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-4096h
-| ${cps}= | ${258048}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +82,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +91,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +99,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${20}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-1c-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-2c-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
+| 64B-4c-ethip4udp-ip4base-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-ip4base-h4096-p63-s258048-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot
new file mode 100644
index 0000000000..314b6fcf48
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h4096-p63-s258048-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| Documentation | *PPS on lightweight UDP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
+| ... | routing and two static IPv4 /20 route entries. DUT1 tested with
+| ... | ${nic_name}.\
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${20}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-ip4base-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot
index 1807b880f4..301f7643b1 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr.robot
@@ -15,9 +15,9 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI | UDP_SYN
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-ip4base-h65536-p63-s4128768
+| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | IP4BASE | DRV_VFIO_PCI
+| ... | UDP | UDP_CPS | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h65536-p63-s4128768-cps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
@@ -26,7 +26,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| Documentation | *CPS on empty UDP transactions with IPv4 routing*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -57,12 +57,14 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L7
| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-65536h
-| ${cps}= | ${4128768}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -80,7 +82,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -90,7 +91,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Apply startup configuration on all VPP DUTs
@@ -98,53 +99,17 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding in circular topology
| | ... | 192.168.0.0 | 20.0.0.0 | ${16}
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| 64B-1c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-1c-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| 64B-2c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-2c-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| 64B-4c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
+| 64B-4c-ethip4udp-ip4base-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-ip4base-h65536-p63-s4128768-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot
new file mode 100644
index 0000000000..480bbc38e1
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr.robot
@@ -0,0 +1,116 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | IP4BASE | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-ip4base-h65536-p63-s4128768-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance
+|
+| Test Template | Local Template
+|
+| Documentation | *PPS on lightweight UDP transactions with IPv4 routing*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4
+| ... | routing and two static IPv4 /16 route entries. DUT1 tested with
+| ... | ${nic_name}.\
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${transaction_scale}= | ${${n_hosts} * ${n_ports}}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile:
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs IPv4 routing config.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding in circular topology
+| | ... | 192.168.0.0 | 20.0.0.0 | ${16}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-ip4base-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
index 12f62d94c4..b1e4c301d1 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
index 44d3dc0a1b..c3a379fbfa 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
index 4189c071be..eb5c01401d 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
index 92ad87b6ab..e44edae3ba 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
index 90877e7840..dc50eb132a 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
index 6a675f6e22..c74eb51e1c 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
@@ -73,7 +73,7 @@
| ${port_step}= | ${1}
| ${trex_stream1_subnet}= | 10.10.10.0/24
| ${trex_stream2_subnet}= | 20.20.20.0/24
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-10u1000p-conc
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
index 6a695b8248..2081521661 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
@@ -18,7 +18,7 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | BASE | DRV_VFIO_PCI
+| ... | BASE | UDP | UDP_BIDIR | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h1-p1-s1
|
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
index e0268934cf..02942194e3 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
@@ -16,8 +16,8 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SCALE | DRV_VFIO_PCI
-| ... | SRC_USER_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | SCALE | HOSTS_1024 | UDP | UDP_BIDIR | DRV_VFIO_PCI
+| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h1024-p63-s64512
|
| Suite Setup | Setup suite topology interfaces | performance
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
index 30ee082baa..90a1053c9e 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
@@ -16,7 +16,7 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SRC_USER_16384 | SCALE | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | UDP | UDP_BIDIR | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h16384-p63-s1032192
|
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
index 62ce9b4b1c..913f8b353b 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
@@ -16,7 +16,7 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SRC_USER_262144 | SCALE | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | UDP | UDP_BIDIR | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h262144-p63-s16515072
|
@@ -79,6 +79,8 @@
| ${n_hosts}= | ${262144}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
# Ramp-up settings
| ${ramp_up_rate}= | ${200000}
| ${ramp_up_duration}= | ${82.8}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
index 0b1d3f7865..2e11408323 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
@@ -16,7 +16,7 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SRC_USER_4096 | SCALE | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | UDP | UDP_BIDIR | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h4096-p63-s258048
|
@@ -82,7 +82,7 @@
# Ramp-up settings
| ${ramp_up_rate}= | ${400000}
| ${ramp_up_duration}= | ${1.6}
-# Traffic profil
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p
*** Keywords ***
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
index 041bc21839..7a5bb3f271 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
@@ -16,7 +16,7 @@
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SRC_USER_65536 | SCALE | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | UDP | UDP_BIDIR | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det-h65536-p63-s4128758
|
@@ -79,6 +79,8 @@
| ${n_hosts}= | ${65536}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
# Ramp-up settings
| ${ramp_up_rate}= | ${200000}
| ${ramp_up_duration}= | ${23.5}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
index cfdcfac9ce..8c75a57723 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_1024 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h1024-p63-s64512-cps
|
@@ -29,8 +29,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty UDP transactions with NAT44ED*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -85,12 +84,11 @@
| ${n_hosts}= | ${1024}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-1024h
-| ${cps}= | ${64512}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +107,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +116,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +129,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
@@ -146,39 +143,3 @@
| 64B-4c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44ed-h1024-p63-s64512-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot
new file mode 100644
index 0000000000..a279d4b176
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_1024 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-nat44ed-h1024-p63-s64512-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${22}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${22}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.0
+| ${out_mask}= | ${32}
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-nat44ed-h1024-p63-s64512-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot
index 89ba6e4c9d..0119ea1807 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr.robot
@@ -15,8 +15,8 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_UDIR
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_1024 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h1024-p63-s64512-udir
|
@@ -86,8 +86,9 @@
# Ramp-up settings
| ${ramp_up_rate}= | ${500000}
| ${ramp_up_duration}= | ${1}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -123,7 +124,6 @@
| | Then Send ramp-up traffic
| | And Verify NAT44 UDP sessions number on DUT1 node
| | And Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h1024-p63-s64512-udir-ndrpdr
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
index 7ecdf09e44..55a2077f20 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_16384 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h16384-p63-s1032192-cps
|
@@ -29,8 +29,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty UDP transactions with NAT44ED*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -85,12 +84,11 @@
| ${n_hosts}= | ${16384}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-16384h
-| ${cps}= | ${1032192}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +107,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +116,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +129,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
@@ -146,39 +143,3 @@
| 64B-4c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44ed-h16384-p63-s1032192-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot
new file mode 100644
index 0000000000..547e2f5024
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_16384 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-nat44ed-h16384-p63-s1032192-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${18}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${18}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.15
+| ${out_mask}= | ${28}
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-nat44ed-h16384-p63-s1032192-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot
index 0f421e3687..8584398646 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr.robot
@@ -15,8 +15,8 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_UDIR
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_16384 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h16384-p63-s1032192-udir
|
@@ -86,8 +86,9 @@
# Ramp-up settings
| ${ramp_up_rate}= | ${500000}
| ${ramp_up_duration}= | ${4.5}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -123,7 +124,6 @@
| | Then Send ramp-up traffic
| | And Verify NAT44 UDP sessions number on DUT1 node
| | And Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h16384-p63-s1032192-udir-ndrpdr
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
index cf40a03d00..aa0ca1a757 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_262144 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h262144-p63-s16515072-cps
|
@@ -29,8 +29,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty UDP transactions with NAT44ED*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -85,12 +84,13 @@
| ${n_hosts}= | ${262144}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-262144h
-| ${cps}= | ${16515072}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +109,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +118,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +131,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
@@ -146,39 +145,3 @@
| 64B-4c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44ed-h262144-p63-s16515072-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot
new file mode 100644
index 0000000000..6cc6d294d9
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | UD | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_262144 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-nat44ed-h262144-p63-s16515072-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.16.0.0
+| ${dest_mask}= | ${14}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 172.16.0.0
+| ${in_mask}= | ${14}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.255
+| ${out_mask}= | ${24}
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-nat44ed-h262144-p63-s16515072-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot
index 9f17649ce0..76361dbf9d 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr.robot
@@ -15,8 +15,8 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_UDIR
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_262144 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h262144-p63-s16515072-udir
|
@@ -83,13 +83,14 @@
| ${n_hosts}= | ${262144}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${7}
# Ramp-up settings
| ${ramp_up_rate}= | ${500000}
| ${ramp_up_duration}= | ${72.7}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
-# Main heap size multiplicator
-| ${heap_size_mult}= | ${3}
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -125,7 +126,6 @@
| | Then Send ramp-up traffic
| | And Verify NAT44 UDP sessions number on DUT1 node
| | And Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h262144-p63-s16515072-udir-ndrpdr
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
index 98a00a655d..efce02da2e 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_4096 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h4096-p63-s258048-cps
|
@@ -29,8 +29,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty UDP transactions with NAT44ED*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -85,12 +84,11 @@
| ${n_hosts}= | ${4096}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-4096h
-| ${cps}= | ${258048}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +107,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +116,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +129,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
@@ -146,39 +143,3 @@
| 64B-4c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44ed-h4096-p63-s258048-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot
new file mode 100644
index 0000000000..c1c5ce6314
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr.robot
@@ -0,0 +1,140 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_4096 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-nat44ed-h4096-p63-s258048-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${20}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${20}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.3
+| ${out_mask}= | ${20}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-nat44ed-h4096-p63-s258048-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot
index b201e36cfe..4c7015bf43 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr.robot
@@ -15,8 +15,8 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_UDIR
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_4096 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h4096-p63-s258048-udir
|
@@ -86,8 +86,9 @@
# Ramp-up settings
| ${ramp_up_rate}= | ${500000}
| ${ramp_up_duration}= | ${1.1}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -123,7 +124,6 @@
| | Then Send ramp-up traffic
| | And Verify NAT44 UDP sessions number on DUT1 node
| | And Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h4096-p63-s258048-udir-ndrpdr
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
index bdd0ce5164..981d141f5a 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr.robot
@@ -17,8 +17,8 @@
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_CPS
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_65536 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h65536-p63-s4128768-cps
|
@@ -29,8 +29,7 @@
|
| Test Template | Local Template
|
-| Documentation | *RFC2544: Pkt throughput NAT44 endpoint-dependent mode
-| ... | performance test cases*
+| Documentation | *CPS on empty UDP transactions with NAT44ED*
|
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
| ... | with single links between nodes.
@@ -85,12 +84,13 @@
| ${n_hosts}= | ${65536}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
-# Traffic profile:
-| ${traffic_profile}= | trex-astf-ethip4udp-65536h
-| ${cps}= | ${4128768}
-# Trial data overwrite
-| ${trial_duration}= | ${1.1}
-| ${trial_multiplicity}= | ${1}
+| ${transaction_scale}= | ${n_sessions}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h
+| ${transaction_type}= | udp_cps
+| ${disable_latency}= | ${True}
*** Keywords ***
| Local Template
@@ -109,7 +109,6 @@
| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| |
| | Set Test Variable | \${frame_size}
-| | Set Test Variable | \${max_rate} | ${cps}
| | ${pre_stats}= | Create List
| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
| | ... | vpp-clear-runtime
@@ -119,7 +118,7 @@
| | ... | vpp-show-runtime
| | Set Test Variable | ${post_stats}
| |
-| | Given Set Jumbo
+| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | And Add NAT to all DUTs | nat_mode=${nat_mode}
@@ -132,7 +131,7 @@
| | And Initialize layer interface
| | And Initialize IPv4 forwarding for NAT44 in circular topology
| | And Initialize NAT44 endpoint-dependent mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search | latency=${False}
+| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
@@ -146,39 +145,3 @@
| 64B-4c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44ed-h65536-p63-s4128768-cps-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot
new file mode 100644
index 0000000000..4065da9623
--- /dev/null
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | IP4FWD | NAT44 | UDP | UDP_PPS | DRV_VFIO_PCI
+| ... | SCALE | HOSTS_65536 | RXQ_SIZE_0 | TXQ_SIZE_0
+| ... | ethip4udp-nat44ed-h65536-p63-s4128768-pps
+|
+| Suite Setup | Setup suite topology interfaces | performance
+| Suite Teardown | Tear down suite | performance
+| Test Setup | Setup test | performance
+| Test Teardown | Tear down test | performance | nat-ed
+|
+| Test Template | Local Template
+|
+| # TODO CSIT-1765: Unify suite Documentation.
+| Documentation | *PPS on lightweight UDP transactions with NAT44ED*
+|
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4\
+| ... | routing and two static IPv4 /24 route entries. DUT1 tested with\
+| ... | ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\
+| ... | contains client and server ASTF programs, generating packets containing\
+| ... | Ethernet header, IPv4 header, UDP header and static payload.\
+| ... | MAC addresses are matching MAC addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | nat_plugin.so
+| ${crypto_type}= | ${None}
+| ${nic_name}= | Intel-X710
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${osi_layer}= | L7
+| ${overhead}= | ${0}
+# IP settings
+| ${tg_if1_ip4}= | 10.0.0.2
+| ${tg_if1_mask}= | ${20}
+| ${tg_if2_ip4}= | 12.0.0.2
+| ${tg_if2_mask}= | ${20}
+| ${dut1_if1_ip4}= | 10.0.0.1
+| ${dut1_if1_mask}= | ${24}
+| ${dut1_if2_ip4}= | 12.0.0.1
+| ${dut1_if2_mask}= | ${24}
+| ${dest_net}= | 20.0.0.0
+| ${dest_mask}= | ${16}
+# NAT settings
+| ${nat_mode}= | endpoint-dependent
+| ${in_net}= | 192.168.0.0
+| ${in_mask}= | ${16}
+| ${out_net}= | 68.142.68.0
+| ${out_net_end}= | 68.142.68.63
+| ${out_mask}= | ${26}
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+| ${transaction_scale}= | ${n_sessions}
+| ${packets_per_transaction_and_direction}= | ${33}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
+# Traffic profile
+| ${traffic_profile}= | trex-astf-ethip4udp-${n_hosts}h-pps
+| ${transaction_type}= | udp_pps
+| ${disable_latency}= | ${True}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.\
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| |
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| |
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | ${pre_stats}= | Create List
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | ... | vpp-clear-runtime
+| | Set Test Variable | ${pre_stats}
+| | ${post_stats}= | Create List
+| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
+| | ... | vpp-show-runtime
+| | Set Test Variable | ${post_stats}
+| |
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add NAT to all DUTs | nat_mode=${nat_mode}
+| | ${max_translations_per_thread}= | Compute Max Translations Per Thread
+| | ... | ${n_sessions} | ${thr_count_int}
+| | And Add NAT max translations per thread to all DUTs
+| | ... | ${max_translations_per_thread}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Initialize IPv4 forwarding for NAT44 in circular topology
+| | And Initialize NAT44 endpoint-dependent mode in circular topology
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| 64B-1c-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 64B-4c-ethip4udp-nat44ed-h65536-p63-s4128768-pps-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot
index dfc88b375b..b0c75cf672 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr.robot
@@ -15,8 +15,8 @@
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP_SYN
-| ... | NAT44_ENDPOINT_DEPENDENT | BASE | DRV_VFIO_PCI
+| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | UDP | UDP_UDIR
+| ... | NAT44_ENDPOINT_DEPENDENT | SCALE | HOSTS_65536 | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed-h65536-p63-s4128768-udir
|
@@ -83,13 +83,14 @@
| ${n_hosts}= | ${65536}
| ${n_ports}= | ${63}
| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Main heap size multiplicator
+| ${heap_size_mult}= | ${2}
# Ramp-up settings
| ${ramp_up_rate}= | ${500000}
| ${ramp_up_duration}= | ${18.2}
-# Traffic profile:
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-${n_hosts}u${n_ports}p-udir
-# Main heap size multiplicator
-| ${heap_size_mult}= | ${2}
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -125,7 +126,6 @@
| | Then Send ramp-up traffic
| | And Verify NAT44 UDP sessions number on DUT1 node
| | And Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4udp-nat44ed-h65536-p63-s4128768-udir-ndrpdr
diff --git a/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-l3dsr-ndrpdr.robot b/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-l3dsr-ndrpdr.robot
index f5e02f25f7..ec4570a44d 100644
--- a/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-l3dsr-ndrpdr.robot
+++ b/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-l3dsr-ndrpdr.robot
@@ -59,6 +59,7 @@
| ${overhead}= | ${0}
# Traffic profile:
| ${traffic_profile}= | trex-stl-2n-ethip4udp-lb
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -85,7 +86,6 @@
| | And Initialize layer interface
| | And Initialize loadbalancer l3dsr
| | Then Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4-loadbalancer-l3dsr-ndrpdr
diff --git a/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-maglev-ndrpdr.robot b/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-maglev-ndrpdr.robot
index 66e047d691..dff2536f20 100644
--- a/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-maglev-ndrpdr.robot
+++ b/tests/vpp/perf/lb/2n1l-10ge2p1x710-ethip4-loadbalancer-maglev-ndrpdr.robot
@@ -59,6 +59,7 @@
| ${overhead}= | ${0}
# Traffic profile:
| ${traffic_profile}= | trex-stl-2n-ethip4udp-lb
+| ${traffic_directions}= | ${1}
*** Keywords ***
| Local Template
@@ -85,7 +86,6 @@
| | And Initialize layer interface
| | And Initialize loadbalancer maglev
| | Then Find NDR and PDR intervals using optimized search
-| | ... | traffic_directions=${1}
*** Test Cases ***
| 64B-1c-ethip4-loadbalancer-maglev-ndrpdr
diff --git a/topologies/available/lf_2n_zn2_testbed210.yaml b/topologies/available/lf_2n_zn2_testbed210.yaml
new file mode 100644
index 0000000000..838af8b472
--- /dev/null
+++ b/topologies/available/lf_2n_zn2_testbed210.yaml
@@ -0,0 +1,155 @@
+---
+metadata:
+ version: 0.1
+ schema:
+ - resources/topology_schemas/2_node_topology.sch.yaml
+ - resources/topology_schemas/topology.sch.yaml
+ tags: [hw, 2-node]
+
+nodes:
+ TG:
+ type: TG
+ subtype: TREX
+ host: "10.32.8.25"
+ arch: x86_64
+ port: 22
+ username: testuser
+ password: Csit1234
+ interfaces:
+ port1:
+ # s61-t210-tg1-c1/p1 - 100GE-port1 ConnectX5-2p100GE.
+ mac_address: "0c:42:a1:70:b0:6a"
+ pci_address: "0000:01:00.0"
+ ip4_address: "172.16.10.2"
+ driver: mlx5_core
+ link: link1
+ model: Mellanox-CX556A
+ port2:
+ # s61-t210-tg1-c1/p2 - 100GE-port2 ConnectX5-2p100GE.
+ mac_address: "0c:42:a1:70:b0:6b"
+ pci_address: "0000:01:00.1"
+ ip4_address: "172.16.20.1"
+ driver: mlx5_core
+ link: link2
+ model: Mellanox-CX556A
+ port3:
+ # s61-t210-tg1-c2/p1 - 25GE port1 on Intel NIC xxv710 2p25GE.
+ mac_address: "40:a6:b7:02:89:dc"
+ pci_address: "0000:41:00.0"
+ ip4_address: "172.16.30.2"
+ driver: i40e
+ link: link3
+ model: Intel-XXV710
+ port4:
+ # s61-t210-tg1-c2/p2 - 25GE port2 on Intel NIC xxv710 2p25GE.
+ mac_address: "40:a6:b7:02:89:dd"
+ pci_address: "0000:41:00.1"
+ ip4_address: "172.16.40.2"
+ driver: i40e
+ link: link4
+ model: Intel-XXV710
+ port5:
+ # s61-t210-tg1-c3/p1 - 10GE port1 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:01:5a:72"
+ pci_address: "0000:81:00.0"
+ ip4_address: "172.16.50.2"
+ driver: i40e
+ link: link5
+ model: Intel-X710
+ port6:
+ # s61-t210-tg1-c3/p2 - 10GE port2 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:01:5a:73"
+ pci_address: "0000:81:00.1"
+ ip4_address: "172.16.60.2"
+ driver: i40e
+ link: link6
+ model: Intel-X710
+ port7:
+ # s61-t210-tg1-c3/p3 - 10GE port3 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:01:5a:74"
+ pci_address: "0000:81:00.2"
+ ip4_address: "172.16.70.2"
+ driver: i40e
+ link: link7
+ model: Intel-X710
+ port8:
+ # s61-t210-tg1-c3/p4 - 10GE port4 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:01:5a:75"
+ pci_address: "0000:81:00.3"
+ ip4_address: "172.16.80.2"
+ driver: i40e
+ link: link8
+ model: Intel-X710
+ DUT1:
+ type: DUT
+ host: "10.32.8.24"
+ arch: x86_64
+ port: 22
+ username: testuser
+ password: Csit1234
+ uio_driver: vfio-pci
+ interfaces:
+ port1:
+ # s60-t210-sut1-c1/p1 - 10GE port1 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:03:dd:a6"
+ pci_address: "0000:01:00.0"
+ ip4_address: "172.16.50.1"
+ driver: i40e
+ link: link5
+ model: Intel-X710
+ port2:
+ # s60-t210-sut1-c1/p2 - 10GE port2 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:03:dd:a7"
+ pci_address: "0000:01:00.1"
+ ip4_address: "172.16.60.1"
+ driver: i40e
+ link: link6
+ model: Intel-X710
+ port3:
+ # s60-t210-sut1-c1/p3 - 10GE port3 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:03:dd:a8"
+ pci_address: "0000:01:00.2"
+ ip4_address: "172.16.70.1"
+ driver: i40e
+ link: link7
+ model: Intel-X710
+ port4:
+ # s60-t210-sut1-c1/p4 - 10GE port4 on Intel NIC x710 4p10GE.
+ mac_address: "80:61:5f:03:dd:a9"
+ pci_address: "0000:01:00.3"
+ ip4_address: "172.16.80.1"
+ driver: i40e
+ link: link8
+ model: Intel-X710
+ port5:
+ # s60-t210-sut1-c2/p1 - 25GE port1 on Intel NIC xxv710 2p25GE.
+ mac_address: "40:a6:b7:02:89:28"
+ pci_address: "0000:41:00.0"
+ ip4_address: "172.16.30.1"
+ driver: i40e
+ link: link3
+ model: Intel-XXV710
+ port6:
+ # s60-t210-sut1-c2/p2 - 25GE port2 on Intel NIC xxv710 2p25GE.
+ mac_address: "40:a6:b7:02:89:29"
+ pci_address: "0000:41:00.1"
+ ip4_address: "172.16.40.1"
+ driver: i40e
+ link: link4
+ model: Intel-XXV710
+ port7:
+ # s60-t210-sut1-c3/p1 - 100GE-port1 ConnectX5-2p100GE.
+ mac_address: "0c:42:a1:70:ad:ba"
+ pci_address: "0000:81:00.0"
+ ip4_address: "172.16.10.2"
+ driver: mlx5_core
+ link: link1
+ model: Mellanox-CX556A
+ port8:
+ # s60-t210-sut1-c3/p2 - 100GE-port2 ConnectX5-2p100GE.
+ mac_address: "0c:42:a1:70:ad:bb"
+ pci_address: "0000:81:00.1"
+ ip4_address: "172.16.20.1"
+ driver: mlx5_core
+ link: link2
+ model: Mellanox-CX556A
diff --git a/topologies/available/lf_3n_tsh_testbed33.yaml b/topologies/available/lf_3n_tsh_testbed33.yaml
index 8a8077cafb..8d6397379a 100644
--- a/topologies/available/lf_3n_tsh_testbed33.yaml
+++ b/topologies/available/lf_3n_tsh_testbed33.yaml
@@ -25,8 +25,8 @@ nodes:
subtype: TREX
host: 10.30.51.49
arch: x86_64
- port: 22
- username: testuser
+ port: 6001
+ username: root
password: Csit1234
interfaces:
port0: