diff options
author | Vratko Polak <vrpolak@cisco.com> | 2024-05-14 15:07:58 +0200 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2024-05-14 15:07:58 +0200 |
commit | 5f16cc6cde29073d125393cdea610de44a073c8f (patch) | |
tree | 9463bb75278493c2d793c114c0cb6274e55ea742 /resources/libraries/python/CpuUtils.py | |
parent | 04afddb7f238694a7a6680e69981cc43430d4309 (diff) |
feat(CpuUtils): Allow suites to forbid siblings
Some perf suites use a single unidirectional flow of traffic.
On SMT-enabled machines, 1C tests create 2 workers by default.
But if there is only one stream/flow,
only one worker does useful work.
The other worker on the sibling logical core
does busy-wait, which provably lowers the peformance.
Some suites already set smt_used (as a suite variable)
to False for these purposes.
This change edits a lower-level L1 keyword to honor this value,
and adds the suite variable to single stream (and client) hoststack
suites, where the detrimental effect of busy siblings was observed.
Change-Id: I203f1a700d8e6cd84640b9c0b40487cb832908aa
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'resources/libraries/python/CpuUtils.py')
-rw-r--r-- | resources/libraries/python/CpuUtils.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/resources/libraries/python/CpuUtils.py b/resources/libraries/python/CpuUtils.py index c77d0f83b1..518469bd31 100644 --- a/resources/libraries/python/CpuUtils.py +++ b/resources/libraries/python/CpuUtils.py @@ -1,4 +1,4 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. +# Copyright (c) 2024 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -247,6 +247,9 @@ class CpuUtils: """Return list of DUT node related list of CPU numbers. The main computing unit is physical core count. + On SMT enabled DUTs, both sibling logical cores are used, + unless Robot variable \${smt_used} is set to False. + :param node: DUT node. :param cpu_node: Numa node number. :param nf_chains: Number of NF chains. @@ -278,6 +281,7 @@ class CpuUtils: raise RuntimeError(u"NodeID is out of range!") smt_used = CpuUtils.is_smt_enabled(node[u"cpuinfo"]) + smt_used = BuiltIn().get_variable_value("\${smt_used}", smt_used) cpu_list = CpuUtils.cpu_list_per_node(node, cpu_node, smt_used) # CPU thread sibling offset. sib = len(cpu_list) // CpuUtils.NR_OF_THREADS |