From: pmikus Date: Thu, 7 Apr 2016 14:36:31 +0000 (+0200) Subject: Multicore VPP setup for performance testing X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=c1bdb7115f12e7d4ec586ec0673fd19dce3a2414 Multicore VPP setup for performance testing - add multithread TAGS documentation - add methods to VppConfigGenerator for RSS configuration - create KW for multithread setup - create sample test case using multithread vpp setup - add Documentation into TCs Change-Id: Id40862490d49380dc76d1d3ce39314603f983fd3 Signed-off-by: pmikus --- diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst index 699337e7db..dd9e2ecc91 100644 --- a/docs/tag_documentation.rst +++ b/docs/tag_documentation.rst @@ -41,3 +41,46 @@ VM_ENV VPP_VM_ENV DUTs with VPP and capable of running Virtual Machine. + +DUT Setup TAGs +-------------- + +1_THREAD_NOHTT_RSS_1 + 1 worker thread pinned to dedicated core without use of Hyper-threading + technology with 1 thread per interface. Main thread pinned to core 0. + +2_THREAD_NOHTT_RSS_1 + 2 worker threads each pinned to dedicated core without use of Hyper-threading + technology with 1 thread per interface. Main thread pinned to core 0. + +4_THREAD_NOHTT_RSS_2 + 4 worker threads each pinned to dedicated core without use of Hyper-threading + technology with 2 threads per interface. Main thread pinned to core 0. + +6_THREAD_NOHTT_RSS_3 + 6 worker threads each pinned to dedicated core without use of Hyper-threading + technology with 3 threads per interface. Main thread pinned to core 0. + +8_THREAD_HTT_RSS_4 + 8 worker threads each pinned to dedicated core without use of Hyper-threading + technology with 4 threads per interface. Main thread pinned to core 0. + +SINGLE_THREAD + All single threaded test cases. + +MULTI_THREAD + All test cases with more then one thread. + +Performance testing TAGs +------------------------ + +PERFTEST + All performance test cases. + +PERFTEST_SHORT + Performance of DUT should pass specific value. Each test case run is + executed for 10 seconds. + +PERFTEST_LONG + Find performance of DUT based on RFC2544 with linear/binary/combined + search. Each test case run is executed for 60 seconds. diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index 14be90cd14..6085882e8e 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -45,14 +45,15 @@ unix {{ api-trace {{ on }} -{{heapsizeconfig}} +{heapsizeconfig} cpu {{ {cpuconfig} }} dpdk {{ - socket-mem {{socketmemconfig}} + socket-mem {socketmemconfig} {pciconfig} +{rssconfig} }} """ # End VPP configuration template. @@ -160,6 +161,26 @@ class VppConfigGenerator(object): logger.debug('Setting hostname {} Heap Size config to {}'.\ format(hostname, heapsize_config)) + def add_rss_config(self, node, rss_config): + """Add RSS configuration for node. + + :param node: DUT node + :param rss_config: RSS configuration, as a string + :type node: dict + :type rss_config: string + :return: nothing + """ + if node['type'] != NodeType.DUT: + raise ValueError('Node type is not a DUT') + hostname = Topology.get_node_hostname(node) + if not hostname in self._nodeconfig: + self._nodeconfig[hostname] = {} + if not 'rss_config' in self._nodeconfig[hostname]: + self._nodeconfig[hostname]['rss_config'] = [] + self._nodeconfig[hostname]['rss_config'].append(rss_config) + logger.debug('Setting hostname {} RSS config to {}'.\ + format(hostname, rss_config)) + def remove_all_pci_devices(self, node): """Remove PCI device configuration from node. @@ -220,6 +241,21 @@ class VppConfigGenerator(object): logger.debug('Clearing Heap Size config for hostname {}.'.\ format(hostname)) + def remove_rss_config(self, node): + """Remove RSS configuration from node. + + :param node: DUT node + :type: node: dict + :return: nothing + """ + if node['type'] != NodeType.DUT: + raise ValueError('Node type is not a DUT') + hostname = Topology.get_node_hostname(node) + if hostname in self._nodeconfig: + self._nodeconfig[hostname]['rss_config'] = [] + logger.debug('Clearing RSS config for hostname {}.'.\ + format(hostname)) + def apply_config(self, node, waittime=5, retries=12): """Generate and apply VPP configuration for node. @@ -242,6 +278,7 @@ class VppConfigGenerator(object): pciconfig = "" socketmemconfig = DEFAULT_SOCKETMEM_CONFIG heapsizeconfig = "" + rssconfig = "" if hostname in self._nodeconfig: cfg = self._nodeconfig[hostname] @@ -258,10 +295,14 @@ class VppConfigGenerator(object): heapsizeconfig = "\nheapsize {}\n".\ format(cfg['heapsize_config']) + if 'rss_config' in cfg: + rssconfig = " " + "\n ".join(cfg['rss_config']) + vppconfig = VPP_CONFIG_TEMPLATE.format(cpuconfig=cpuconfig, pciconfig=pciconfig, socketmemconfig=socketmemconfig, - heapsizeconfig=heapsizeconfig) + heapsizeconfig=heapsizeconfig, + rssconfig=rssconfig) logger.debug('Writing VPP config to host {}: "{}"'.format(hostname,\ vppconfig)) diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot index dae515423b..51cafdff96 100644 --- a/resources/libraries/robot/default.robot +++ b/resources/libraries/robot/default.robot @@ -16,6 +16,7 @@ | Library | resources.libraries.python.topology.Topology | Library | resources.libraries.python.DUTSetup | Library | resources.libraries.python.TGSetup +| Library | resources/libraries/python/VppConfigGenerator.py | Library | Collections *** Keywords *** @@ -33,3 +34,56 @@ | | ${duts}= | Get Matches | ${nodes} | DUT* | | :FOR | ${dut} | IN | @{duts} | | | Vpp show stats | ${nodes['${dut}']} + +| Setup '${m}' worker threads and rss '${n}' without HTT on all DUTs +| | [Documentation] | Setup M worker threads without HTT and rss N in startup +| | ... | configuration of VPP on all DUTs +| | ${cpu}= | Catenate | main-core | 0 | corelist-workers +| | ${cpu}= | Run Keyword If | '${m}' == '1' | Catenate | ${cpu} | 1 +| | ... | ELSE IF | '${m}' == '2' | Catenate | ${cpu} | 1-2 +| | ... | ELSE IF | '${m}' == '4' | Catenate | ${cpu} | 1-4 +| | ... | ELSE IF | '${m}' == '6' | Catenate | ${cpu} | 1-6 +| | ... | ELSE | Fail | Not supported combination +| | ${rss}= | Catenate | rss | ${n} +| | Setup worker threads and rss on all DUTs | ${cpu} | ${rss} + +| Setup '${m}' worker threads and rss '${n}' with HTT on all DUTs +| | [Documentation] | Setup M worker threads with HTT and rss N in startup +| | ... | configuration of VPP on all DUTs +| | ${cpu}= | Catenate | main-core | 0 | corelist-workers +| | ${cpu}= | Run Keyword If | '${m}' == '2' | Catenate | ${cpu} | 1,10 +| | ... | ELSE IF | '${m}' == '4' | Catenate | ${cpu} | 1-2,10-11 +| | ... | ELSE IF | '${m}' == '6' | Catenate | ${cpu} | 1-3,10-12 +| | ... | ELSE IF | '${m}' == '8' | Catenate | ${cpu} | 1-4,10-13 +| | ... | ELSE | Fail | Not supported combination +| | ${rss}= | Catenate | rss | ${n} +| | Setup worker threads and rss on all DUTs | ${cpu} | ${rss} + +| Setup worker threads and rss on all DUTs +| | [Documentation] | Setup worker threads and rss in startup configuration of +| | ... | VPP on all DUTs +| | [Arguments] | ${cpu} | ${rss} +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Add CPU config | ${nodes['${dut}']} +| | | ... | ${cpu} +| | | Add PCI device | ${nodes['${dut}']} +| | | Add RSS config | ${nodes['${dut}']} +| | | ... | ${rss} +| | | Apply config | ${nodes['${dut}']} + +| Reset startup configuration of VPP on all DUTs +| | [Documentation] | Reset startup configuration of VPP on all DUTs +| | ${cpu}= | Catenate | main-core | 1 +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Remove All PCI Devices | ${nodes['${dut}']} +| | | Remove All CPU Config | ${nodes['${dut}']} +| | | Remove Socketmem Config | ${nodes['${dut}']} +| | | Remove Heapsize Config | ${nodes['${dut}']} +| | | Remove RSS Config | ${nodes['${dut}']} +| | | Add CPU Config | ${nodes['${dut}']} +| | | ... | ${cpu} +| | | Add PCI Device | ${nodes['${dut}']} +| | | Apply Config | ${nodes['${dut}']} + diff --git a/tests/suites/performance/long_bridge_domain.robot b/tests/suites/performance/long_bridge_domain.robot index 9938cce5d3..44cab87df4 100644 --- a/tests/suites/performance/long_bridge_domain.robot +++ b/tests/suites/performance/long_bridge_domain.robot @@ -17,36 +17,106 @@ | Suite Setup | 3-node Performance Suite Setup | L2 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs -| Documentation | Throughput search suite (long running test suite based on RFC2544). +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs +| Documentation | *Throughput search suite (based on RFC2544).* *** Test Cases *** -| Find NDR by using linear search and 64B frames through bridge domain in 3-node topology +| Find NDR by using RFC2544 linear search and 64B frames through bridge domain in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 64B frames by using +| | ... | linear search starting at 4.1Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 -| | ${start_rate}= | Set Variable | 5000000 +| | ${start_rate}= | Set Variable | 4100000 | | ${step_rate}= | Set Variable | 100000 | | ${min_rate}= | Set Variable | 100000 | | ${max_rate}= | Set Variable | 14880952 -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-bridge | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-bridge +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 1518B frames through bridge domain in 3-node topology +| Find NDR by using RFC2544 linear search and 1518B frames through bridge domain in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 1518B frames by using +| | ... | linear search starting at 812,743pps, stepping down with step of +| | ... | 10,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${start_rate}= | Set Variable | 812743 | | ${step_rate}= | Set Variable | 10000 | | ${min_rate}= | Set Variable | 10000 | | ${max_rate}= | Set Variable | 812743 -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-bridge | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-bridge +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 9000B frames through bridge domain in 3-node topology +| Find NDR by using RFC2544 linear search and 9000B frames through bridge domain in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 9000B frames by using +| | ... | linear search starting at 138,580pps, stepping down with step of +| | ... | 5,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${start_rate}= | Set Variable | 138580 | | ${step_rate}= | Set Variable | 5000 | | ${min_rate}= | Set Variable | 5000 | | ${max_rate}= | Set Variable | 138580 -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-bridge | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-bridge +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 2 cores and rss 1 by using RFC2544 linear search and 64B frames through bridge domain in 3-node topology +| | [Documentation] +| | ... | Find throughput on 2 cores with non drop rate for 64B frames by using +| | ... | linear search starting at 8.2Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 8200000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-bridge +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 4 cores and rss 2 by using RFC2544 linear search and 64B frames through bridge domain in 3-node topology +| | [Documentation] +| | ... | Find throughput on 4 cores and rss 2 with non drop rate for 64B +| | ... | frames by using linear search starting at 9.8Mpps, stepping down +| | ... | with step of 0.1Mpps +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 9800000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '4' worker threads and rss '2' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-bridge +| | ... | ${min_rate} | ${max_rate} + diff --git a/tests/suites/performance/long_ipv4.robot b/tests/suites/performance/long_ipv4.robot index 108fc903a8..7b2111ab63 100644 --- a/tests/suites/performance/long_ipv4.robot +++ b/tests/suites/performance/long_ipv4.robot @@ -21,36 +21,105 @@ | Suite Setup | 3-node Performance Suite Setup | L3 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs -| Documentation | Throughput search suite (long running test suite based on RFC2544). +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs +| Documentation | *Throughput search suite (based on RFC2544).* *** Test Cases *** -| Find NDR by using linear search and 64B frames through IPv4 forwarding in 3-node topology +| Find NDR by using RFC2544 linear search and 64B frames through IPv4 forwarding in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 64B frames by using +| | ... | linear search starting at 4.1Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 -| | ${start_rate}= | Set Variable | 5000000 +| | ${start_rate}= | Set Variable | 4400000 | | ${step_rate}= | Set Variable | 100000 | | ${min_rate}= | Set Variable | 100000 | | ${max_rate}= | Set Variable | 14880952 -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-IPv4 | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-IPv4 +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 1518B frames through IPv4 forwarding in 3-node topology +| Find NDR by using RFC2544 linear search and 1518B frames through IPv4 forwarding in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 1518B frames by using +| | ... | linear search starting at 812,743pps, stepping down with step of +| | ... | 10,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${start_rate}= | Set Variable | 812743 | | ${step_rate}= | Set Variable | 10000 | | ${min_rate}= | Set Variable | 10000 | | ${max_rate}= | Set Variable | 812743 -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-IPv4 | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-IPv4 +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 9000B frames through IPv4 forwarding in 3-node topology +| Find NDR by using RFC2544 linear search and 9000B frames through IPv4 forwarding in 3-node topology +| | [Documentation] +| | ... | Find throughput with non drop rate for 9000B frames by using +| | ... | linear search starting at 138,580pps, stepping down with step of +| | ... | 5,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${start_rate}= | Set Variable | 138580 | | ${step_rate}= | Set Variable | 5000 | | ${min_rate}= | Set Variable | 5000 | | ${max_rate}= | Set Variable | 138580 -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-IPv4 | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-IPv4 +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 2 cores and rss 1 by using RFC2544 linear search and 64B frames through IPv4 forwarding in 3-node topology +| | [Documentation] +| | ... | Find throughput on 2 cores with non drop rate for 64B frames by using +| | ... | linear search starting at 8.8Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 8800000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-IPv4 +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 4 cores and rss 2 by using RFC2544 linear search and 64B frames through IPv4 forwarding in 3-node topology +| | [Documentation] +| | ... | Find throughput on 2 cores with non drop rate for 64B frames by using +| | ... | linear search starting at 9.8Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 9800000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '4' worker threads and rss '2' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-IPv4 +| | ... | ${min_rate} | ${max_rate} + diff --git a/tests/suites/performance/long_xconnect.robot b/tests/suites/performance/long_xconnect.robot index 4d441601e5..fab92e6b54 100644 --- a/tests/suites/performance/long_xconnect.robot +++ b/tests/suites/performance/long_xconnect.robot @@ -18,7 +18,8 @@ | Suite Setup | 3-node Performance Suite Setup | L2 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs | Documentation | *Throughput search suite (based on RFC2544).* | ... | ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG, with one link @@ -28,41 +29,98 @@ | ... | matching MAC addresses of the TG node. *** Test Cases *** -| Find NDR by using linear search and 64B frames through L2 cross connect in 3-node topology +| Find NDR by using RFC2544 linear search and 64B frames through L2 cross connect in 3-node topology | | [Documentation] | | ... | Find throughput with non drop rate for 64B frames by using | | ... | linear search starting at 5Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 -| | ${start_rate}= | Set Variable | 5000000 +| | ${start_rate}= | Set Variable | 4800000 | | ${step_rate}= | Set Variable | 100000 | | ${min_rate}= | Set Variable | 100000 | | ${max_rate}= | Set Variable | 14880952 -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-xconnect | ${min_rate} | ${max_rate} +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-xconnect +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 1518B frames through L2 cross connect in 3-node topology +| Find NDR by using RFC2544 linear search and 1518B frames through L2 cross connect in 3-node topology | | [Documentation] | | ... | Find throughput with non drop rate for 1518B frames by using | | ... | linear search starting at 812,743pps, stepping down with step of 10,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${start_rate}= | Set Variable | 812743 | | ${step_rate}= | Set Variable | 10000 | | ${min_rate}= | Set Variable | 10000 | | ${max_rate}= | Set Variable | 812743 -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-xconnect | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-xconnect +| | ... | ${min_rate} | ${max_rate} -| Find NDR by using linear search and 9000B frames through L2 cross connect in 3-node topology +| Find NDR by using RFC2544 linear search and 9000B frames through L2 cross connect in 3-node topology | | [Documentation] | | ... | Find throughput with non drop rate for 9000B frames by using | | ... | linear search starting at 138,580pps, stepping down with step 5,000pps +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${start_rate}= | Set Variable | 138580 | | ${step_rate}= | Set Variable | 5000 | | ${min_rate}= | Set Variable | 5000 | | ${max_rate}= | Set Variable | 138580 -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} | ${step_rate} -| | ... | 3-node-xconnect | ${min_rate} | ${max_rate} +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-xconnect +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 2 cores and rss 1 by using RFC2544 linear search and 64B frames through L2 cross connect in 3-node topology +| | [Documentation] +| | ... | Find throughput on 2 cores with non drop rate for 64B frames by using +| | ... | linear search starting at 8.2Mpps, stepping down with step of 0.1Mpps +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 12000000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-xconnect +| | ... | ${min_rate} | ${max_rate} + +| Find NDR with 4 cores and rss 2 by using RFC2544 linear search and 64B frames through L2 cross connect in 3-node topology +| | [Documentation] +| | ... | Find throughput on 4 cores and rss 2 with non drop rate for 64B +| | ... | frames by using linear search starting at 8.2Mpps, stepping down +| | ... | with step of 0.1Mpps +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${start_rate}= | Set Variable | 12200000 +| | ${step_rate}= | Set Variable | 100000 +| | ${min_rate}= | Set Variable | 100000 +| | ${max_rate}= | Set Variable | 14880952 +| | # VPP setup +| | Given Setup '4' worker threads and rss '2' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Linear search +| | Then Find NDR using linear search and pps | ${framesize} | ${start_rate} +| | ... | ${step_rate} | 3-node-xconnect +| | ... | ${min_rate} | ${max_rate} + diff --git a/tests/suites/performance/short_bridge_domain.robot b/tests/suites/performance/short_bridge_domain.robot index 210664c38b..27671c1259 100644 --- a/tests/suites/performance/short_bridge_domain.robot +++ b/tests/suites/performance/short_bridge_domain.robot @@ -17,26 +17,87 @@ | Suite Setup | 3-node Performance Suite Setup | L2 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs +| Documentation | Minimal throughput acceptance test cases *** Test Cases *** -| 1core VPP passes 64B frames through bridge domain at 3.5mpps in 3-node topology +| 1core VPP passes 64B frames through bridge domain at 2x 3.5Mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 64B frames through bridge domain +| | ... | at 2x3.5Mpps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 3.5mpps -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-bridge +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-bridge -| 1core VPP passes 1518B frames through bridge domain at 10gbps in 3-node topology +| 1core VPP passes 1518B frames through bridge domain at 2x 10Gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 1518B frames through bridge domain +| | ... | at 2x10Gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-bridge +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-bridge -| 1core VPP passes 9000B frames through bridge domain at 10gbps in 3-node topology +| 1core VPP passes 9000B frames through bridge domain at 2x 10Gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 9000B frames through bridge domain +| | ... | at 2x10Gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given L2 bridge domain initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-bridge +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-bridge + +| 2core VPP with rss 1 passes 64B frames through bridge domain at 2x 7.6Mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 2 cores should pass 64B frames through bridge domain +| | ... | at 2x7.6Mpps in 3-node topology +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 7.6mpps +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-bridge + +| 4core VPP with rss 2 passes 64B frames through bridge domain at 2x 8.6Mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 4 cores and rss 2 should pass 64B frames through bridge +| | ... | domain at 2x8.6Mpps in 3-node topology +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 8.6mpps +| | # VPP setup +| | Given Setup '4' worker threads and rss '2' without HTT on all DUTs +| | AND L2 bridge domain initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-bridge diff --git a/tests/suites/performance/short_ipv4.robot b/tests/suites/performance/short_ipv4.robot index 95e135147e..f96623beb6 100644 --- a/tests/suites/performance/short_ipv4.robot +++ b/tests/suites/performance/short_ipv4.robot @@ -21,26 +21,87 @@ | Suite Setup | 3-node Performance Suite Setup | L3 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs +| Documentation | Minimal throughput acceptance test cases *** Test Cases *** -| 1core VPP passes 64B frames through IPv4 forwarding at 3.5mpps in 3-node topology +| 1core VPP passes 64B frames through IPv4 forwarding at 2x 3.5mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 64B frames through IPv4 forwarding +| | ... | at 2x3.5mpps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 3.5mpps -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-IPv4 +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-IPv4 -| 1core VPP passes 1518B frames through IPv4 forwarding at 10gbps in 3-node topology +| 1core VPP passes 1518B frames through IPv4 forwarding at 2x 10gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 1518B frames through IPv4 forwarding +| | ... | at 2x10gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-IPv4 +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-IPv4 -| 1core VPP passes 9000B frames through IPv4 forwarding at 10gbps in 3-node topology +| 1core VPP passes 9000B frames through IPv4 forwarding at 2x 10gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 9000B frames through IPv4 forwarding +| | ... | at 2x10gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given IPv4 forwarding initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-IPv4 +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-IPv4 + +| 2core VPP with rss 1 passes 64B frames through IPv4 forwarding at 2x 8.2mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 2 cores should pass 64B frames through IPv4 forwarding +| | ... | at 2x8.2mpps in 3-node topology +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 8.2mpps +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-IPv4 + +| 4core VPP with rss 2 passes 64B frames through IPv4 forwarding at 2x 9.2mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 4 cores and rss 2 should pass 64B frames through IPv4 +| | ... | forwarding at 2x9.2mpps in 3-node topology +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 9.2mpps +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND IPv4 forwarding initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-IPv4 diff --git a/tests/suites/performance/short_xconnect.robot b/tests/suites/performance/short_xconnect.robot index 55e05237b3..a909e8b8e7 100644 --- a/tests/suites/performance/short_xconnect.robot +++ b/tests/suites/performance/short_xconnect.robot @@ -18,26 +18,88 @@ | Suite Setup | 3-node Performance Suite Setup | L2 | Suite Teardown | 3-node Performance Suite Teardown | Test Setup | Setup all DUTs before test -| Test Teardown | Run Keyword If Test Failed | Show statistics on all DUTs +| Test Teardown | Run Keywords | Show statistics on all DUTs +| ... | AND | Reset startup configuration of VPP on all DUTs +| Documentation | Minimal throughput acceptance test cases *** Test Cases *** -| 1core VPP passes 64B frames through L2 cross connect at 3.5mpps in 3-node topology +| 1core VPP passes 64B frames through L2 cross connect at 2x 3.5mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 64B frames through L2 cross connect +| | ... | at 2x3.5mpps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 3.5mpps -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-xconnect +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-xconnect -| 1core VPP passes 1518B frames through L2 cross connect at 10gbps in 3-node topology +| 1core VPP passes 1518B frames through L2 cross connect at 2x 10gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 1518B frames through L2 cross connect +| | ... | at 2x10gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-xconnect +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-xconnect -| 1core VPP passes 9000B frames through L2 cross connect at 10gbps in 3-node topology +| 1core VPP passes 9000B frames through L2 cross connect at 2x 10gbps in 3-node topology +| | [Documentation] +| | ... | VPP with 1 core should pass 9000B frames through L2 cross connect +| | ... | at 2x10gbps in 3-node topology +| | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD +| | # Variables | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 | | ${rate}= | Set Variable | 10gbps -| | Given L2 xconnect initialized in a 3-node circular topology -| | Then Traffic should pass with no loss | ${duration} | ${rate} | ${framesize} | 3-node-xconnect +| | # VPP setup +| | Given Setup '1' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-xconnect + +| 2core VPP with rss 1 passes 64B frames through L2 cross connect at 2x 11.0mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 2 cores should pass 64B frames through L2 cross connect +| | ... | at 2x11.0mpps in 3-node topology +| | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD +| | # Variables +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 11.0mpps +| | # VPP setup +| | Given Setup '2' worker threads and rss '1' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-xconnect + +| 4core VPP with rss 2 passes 64B frames through L2 cross connect at 2x 11.6mpps in 3-node topology +| | [Documentation] +| | ... | VPP with 4 cores and rss 2 should pass 64B frames through L2 cross +| | ... | connect at 2x11.6mpps in 3-node topology +| | # Variables +| | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD +| | ${framesize}= | Set Variable | 64 +| | ${duration}= | Set Variable | 10 +| | ${rate}= | Set Variable | 11.6mpps +| | # VPP setup +| | Given Setup '4' worker threads and rss '2' without HTT on all DUTs +| | AND L2 xconnect initialized in a 3-node circular topology +| | # Sent traffic with specified rate +| | Then Traffic should pass with no loss | ${duration} | ${rate} +| | ... | ${framesize} | 3-node-xconnect +