diff options
Diffstat (limited to 'resources/libraries')
-rw-r--r-- | resources/libraries/python/CpuUtils.py | 33 | ||||
-rw-r--r-- | resources/libraries/robot/default.robot | 27 | ||||
-rw-r--r-- | resources/libraries/robot/performance.robot | 68 |
3 files changed, 82 insertions, 46 deletions
diff --git a/resources/libraries/python/CpuUtils.py b/resources/libraries/python/CpuUtils.py index a8698dfd54..85c2e843e4 100644 --- a/resources/libraries/python/CpuUtils.py +++ b/resources/libraries/python/CpuUtils.py @@ -98,3 +98,36 @@ class CpuUtils(object): raise RuntimeError("Node cpuinfo not available.") return cpulist + + @staticmethod + def cpu_list_per_node_str(node, cpu_node, skip_cnt=0, + cpu_cnt=0, sep=","): + """Return string of node related list of CPU numbers. + + :param node: Node dictionary with cpuinfo. + :param cpu_node: Numa node number. + :param skip_cnt: Skip first "skip_cnt" CPUs. + :param cpu_cnt: Count of cpus to return, if 0 then return all. + :param sep: Separator, default: 1,2,3,4,.... + :type node: dict + :type cpu_node: int + :type skip_cnt: int + :type cpu_cnt: int + :type sep: str + :return: Cpu numbers related to numa from argument. + :rtype: str + """ + + cpu_list = CpuUtils.cpu_list_per_node(node, cpu_node) + cpu_list_len = len(cpu_list) + cpu_flist = "" + if cpu_cnt == 0: + cpu_cnt = cpu_list_len - skip_cnt + + if cpu_cnt + skip_cnt > cpu_list_len: + raise RuntimeError("cpu_cnt + skip_cnt > length(cpu list).") + + cpu_flist = sep.join(str(a) for a in + cpu_list[skip_cnt:skip_cnt+cpu_cnt]) + + return cpu_flist diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot index 3135ef0041..742906e94a 100644 --- a/resources/libraries/robot/default.robot +++ b/resources/libraries/robot/default.robot @@ -14,6 +14,7 @@ *** Settings *** | Variables | resources/libraries/python/topology.py | Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.CpuUtils | Library | resources.libraries.python.DUTSetup | Library | resources.libraries.python.TGSetup | Library | resources/libraries/python/VppConfigGenerator.py @@ -41,6 +42,32 @@ | | | Vpp api trace save | ${nodes['${dut}']} | | | Vpp api trace dump | ${nodes['${dut}']} +| Add '${m}' worker threads and rxqueues '${n}' in 3-node single-link topo +| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup +| | ... | configuration on all DUTs in 3-node single-link topology. +| | ${m_int}= | Convert To Integer | ${m} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | cpu_cnt=${1} +| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${m_int} +| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | cpu_cnt=${1} +| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${m_int} +| | ${dut1_cpu}= | Catenate | main-core | ${dut1_cpu_main} +| | ... | corelist-workers | ${dut1_cpu_w} +| | ${dut2_cpu}= | Catenate | main-core | ${dut2_cpu_main} +| | ... | corelist-workers | ${dut2_cpu_w} +| | ${rxqueues}= | Catenate | num-rx-queues | ${n} +| | Add CPU config | ${dut1} | ${dut1_cpu} +| | Add CPU config | ${dut2} | ${dut2_cpu} +| | Add rxqueues config | ${dut1} | ${rxqueues} +| | Add rxqueues config | ${dut2} | ${rxqueues} + | Add '${m}' worker threads and rxqueues '${n}' without HTT to all DUTs | | [Documentation] | Setup M worker threads without HTT and rxqueues N in | | ... | startup configuration of VPP to all DUTs diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot index 0ef07ebefc..62b175668d 100644 --- a/resources/libraries/robot/performance.robot +++ b/resources/libraries/robot/performance.robot @@ -75,6 +75,8 @@ | | ... | for 40GE with 9004B L2 Frame. | | ... | - 40Ge_linerate_pps_9008B - Maximum number of packet per second | | ... | for 40GE with 9008B L2 Frame. +| | ... | - 40Ge_linerate_pps_IMIX_v4_1 - Maximum number of packet per second +| | ... | for 40GE with IMIX_v4_1 profile. | | ... | | Set Suite Variable | ${10Ge_linerate_pps_64B} | 14880952 | | Set Suite Variable | ${10Ge_linerate_pps_68B} | 14204545 @@ -95,6 +97,26 @@ | | Set Suite Variable | ${40Ge_linerate_pps_9000B} | 554323 | | Set Suite Variable | ${40Ge_linerate_pps_9004B} | 554078 | | Set Suite Variable | ${40Ge_linerate_pps_9008B} | 553832 +| | Set Suite Variable | ${40Ge_linerate_pps_IMIX_v4_1} | 13374944 + +| Calculate pps +| | [Documentation] +| | ... | Calculate pps for given rate and L2 frame size, +| | ... | additional 20B are added to L2 frame size as padding. +| | ... +| | ... | *Arguments* +| | ... | - bps - Rate in bps. Type: integer +| | ... | - framesize - L2 frame size in Bytes. Type: integer +| | ... +| | ... | *Return* +| | ... | - Calculated pps. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Calculate pps \| 10000000000 | 64 +| | [Arguments] | ${bps} | ${framesize} +| | ${ret}= | Evaluate | (${bps}/((${framesize}+20)*8)).__trunc__() +| | Return From Keyword | ${ret} | Get Frame Size | | [Documentation] @@ -465,52 +487,6 @@ | | Vpp l2bd forwarding setup | ${dut2} | ${dut2_if1} | ${dut2_if2} | | All Vpp Interfaces Ready Wait | ${nodes} -| 2-node Performance Suite Setup -| | [Documentation] -| | ... | Suite preparation phase that setup default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global -| | ... | variables used in test cases. Initializes traffic generator. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| 2-node Performance Suite Setup \| L2 \| -| | [Arguments] | ${topology_type} -| | Setup default startup configuration of VPP on all DUTs -| | Show vpp version on all DUTs -| | Setup performance rate Variables -| | Setup performance global Variables -| | 2-node circular Topology Variables Setup -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} -| | ... | ${dut1} | ${dut1_if2} -| | ... | ${topology_type} - -| 3-node Performance Suite Setup -| | [Documentation] -| | ... | Suite preparation phase that setup default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global -| | ... | variables used in test cases. Initializes traffic generator. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| 3-node Performance Suite Setup \| L2 \| -| | [Arguments] | ${topology_type} -| | Setup default startup configuration of VPP on all DUTs -| | Show vpp version on all DUTs -| | Setup performance rate Variables -| | Setup performance global Variables -| | 3-node circular Topology Variables Setup -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} -| | ... | ${dut2} | ${dut2_if2} -| | ... | ${topology_type} - 2-node Performance Suite Setup with DUT's NIC model | | [Documentation] | | ... | Suite preparation phase that setup default startup configuration of |