From 0b0b14fb00fbaab5eb2745657d741084fe2e1de2 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Mon, 8 Apr 2019 12:42:08 +0000 Subject: FIX: Large number of interfaces and worker threads Add buffers-per-numa (previously num-mbuf) Change-Id: Iad0863668a65b1595630d49a047d591659c7bba5 Signed-off-by: Peter Mikus --- resources/libraries/python/KubernetesUtils.py | 2 +- resources/libraries/python/VppConfigGenerator.py | 18 +++++++++--------- resources/libraries/robot/shared/default.robot | 12 ++++-------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/resources/libraries/python/KubernetesUtils.py b/resources/libraries/python/KubernetesUtils.py index c3ebb4c095..e932492e05 100644 --- a/resources/libraries/python/KubernetesUtils.py +++ b/resources/libraries/python/KubernetesUtils.py @@ -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. diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index 154e2e9095..350e1c0881 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -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'] diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot index dd4fb63c3f..579577cb56 100644 --- a/resources/libraries/robot/shared/default.robot +++ b/resources/libraries/robot/shared/default.robot @@ -184,7 +184,6 @@ | | ... | | ${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 @@ -213,13 +212,12 @@ | | | ${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 @@ -246,7 +244,6 @@ | | ... | | ${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}']} @@ -263,11 +260,10 @@ | | | ${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 -- cgit 1.2.3-korg