Multicore VPP setup for performance testing 10/710/12
authorpmikus <pmikus@cisco.com>
Thu, 7 Apr 2016 14:36:31 +0000 (16:36 +0200)
committerMiroslav Miklus <mmiklus@cisco.com>
Sun, 17 Apr 2016 18:24:57 +0000 (18:24 +0000)
- 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 <pmikus@cisco.com>
docs/tag_documentation.rst
resources/libraries/python/VppConfigGenerator.py
resources/libraries/robot/default.robot
tests/suites/performance/long_bridge_domain.robot
tests/suites/performance/long_ipv4.robot
tests/suites/performance/long_xconnect.robot
tests/suites/performance/short_bridge_domain.robot
tests/suites/performance/short_ipv4.robot
tests/suites/performance/short_xconnect.robot

index 699337e..dd9e2ec 100644 (file)
@@ -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.
index 14be90c..6085882 100644 (file)
@@ -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))
index dae5154..51cafdf 100644 (file)
@@ -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 ***
 | | ${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}']}
+
index 9938cce..44cab87 100644 (file)
 | 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}
+
index 108fc90..7b2111a 100644 (file)
 | 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}
+
index 4d44160..fab92e6 100644 (file)
@@ -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
 | ... | 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}
+
index 210664c..27671c1 100644 (file)
 | 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
index 95e1351..f96623b 100644 (file)
 | 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
index 55e0523..a909e8b 100644 (file)
 | 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
+