FIX: Large number of interfaces and worker threads 43/18743/19
authorPeter Mikus <pmikus@cisco.com>
Mon, 8 Apr 2019 12:42:08 +0000 (12:42 +0000)
committerPeter Mikus <pmikus@cisco.com>
Wed, 24 Apr 2019 13:46:44 +0000 (13:46 +0000)
Add buffers-per-numa (previously num-mbuf)

Change-Id: Iad0863668a65b1595630d49a047d591659c7bba5
Signed-off-by: Peter Mikus <pmikus@cisco.com>
resources/libraries/python/KubernetesUtils.py
resources/libraries/python/VppConfigGenerator.py
resources/libraries/robot/shared/default.robot

index c3ebb4c..e932492 100644 (file)
@@ -493,7 +493,7 @@ class KubernetesUtils(object):
         vpp_config.add_dpdk_no_tx_checksum_offload()
         vpp_config.add_dpdk_dev_default_rxq(kwargs['rxq_count_int'])
         vpp_config.add_dpdk_dev(kwargs['if1'], kwargs['if2'])
-        vpp_config.add_dpdk_num_mbufs(kwargs['num_mbufs_int'])
+        vpp_config.add_buffers_per_numa(kwargs['buffers_per_numa'])
         # We will pop first core from list to be main core
         vpp_config.add_cpu_main_core(str(cpuset_main.pop(0)))
         # if this is not only core in list, the rest will be used as workers.
index 154e2e9..350e1c0 100644 (file)
@@ -220,6 +220,15 @@ class VppConfigGenerator(object):
         path = ['api-segment', 'api-size']
         self.add_config_item(self._nodeconfig, value, path)
 
+    def add_buffers_per_numa(self, value):
+        """Increase number of buffers allocated.
+
+        :param value: Number of buffers allocated.
+        :type value: int
+        """
+        path = ['buffers', 'buffers-per-numa']
+        self.add_config_item(self._nodeconfig, value, path)
+
     def add_dpdk_dev(self, *devices):
         """Add DPDK PCI device configuration.
 
@@ -343,15 +352,6 @@ class VppConfigGenerator(object):
         path = ['dpdk', 'log-level']
         self.add_config_item(self._nodeconfig, value, path)
 
-    def add_dpdk_num_mbufs(self, value):
-        """Add DPDK number of I/O buffers.
-
-        :param value: Number of I/O buffers.
-        :type value: int
-        """
-        path = ['dpdk', 'num-mbufs']
-        self.add_config_item(self._nodeconfig, value, path)
-
     def add_dpdk_no_pci(self):
         """Add DPDK no-pci."""
         path = ['dpdk', 'no-pci']
index dd4fb63..579577c 100644 (file)
 | | ...
 | | ${cpu_count_int} | Convert to Integer | ${phy_cores}
 | | ${thr_count_int} | Convert to Integer | ${phy_cores}
-| | ${num_mbufs_int} | Convert to Integer | 16384
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
 | | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
 | | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
 | | | ... | Set variable | ${1}
 | | | ... | ELSE | Set variable | ${rxq_count_int}
-| | | ${num_mbufs_int}= | Evaluate | int(${num_mbufs_int}*${rxq_count_int})
 | | | Run keyword | ${dut}.Add CPU Main Core | ${cpu_main}
 | | | Run keyword | ${dut}.Add CPU Corelist Workers | ${cpu_wt}
 | | | Run keyword | ${dut}.Add DPDK Dev Default RXQ | ${rxq_count_int}
-# Temporarily desabling due to API changes:
-# https://gerrit.fd.io/r/#/c/16638/
-#| | | Run keyword | ${dut}.Add DPDK Num Mbufs | ${num_mbufs_int}
+# For now there is no way to easily predict the number of buffers. Statically
+# doing maximum amount of buffers allowed by DPDK.
+| | | Run keyword | ${dut}.Add Buffers Per Numa | ${215040}
 | | | Run keyword if | ${thr_count_int} > 1
 | | | ... | Set Tags | MTHREAD | ELSE | Set Tags | STHREAD
 | | | Set Tags | ${thr_count_int}T${cpu_count_int}C
 | | ...
 | | ${cpu_count_int} | Convert to Integer | ${phy_cores}
 | | ${thr_count_int} | Convert to Integer | ${phy_cores}
-| | ${num_mbufs_int} | Convert to Integer | 16384
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
 | | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
 | | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
 | | | ... | Set variable | ${1}
 | | | ... | ELSE | Set variable | ${rxq_count_int}
-| | | ${num_mbufs_int}= | Evaluate | int(${num_mbufs_int}*${rxq_count_int})
 | | | ${config}= | Run keyword | Create Kubernetes VSWITCH startup config
 | | | ... | node=${nodes['${dut}']} | phy_cores=${phy_cores}
 | | | ... | cpu_node=${numa} | jumbo=${jumbo} | rxq_count_int=${rxq_count_int}
-| | | ... | num_mbufs_int=${num_mbufs_int}
+| | | ... | buffers_per_numa=${215040}
 | | | ... | filename=/tmp/vswitch.conf | if1=${if1_pci} | if2=${if2_pci}
 | | | Run keyword if | ${thr_count_int} > 1
 | | | ... | Set Tags | MTHREAD | ELSE | Set Tags | STHREAD