Set uniform PM-QoS value for all cpus on lowlatency nodes

We observed poor cyclictest results on lowlatency nodes. This was
due to the fact that we were trying to save power by only marking
in-use CPUs as low-latency, but there was an underlying issue where
any high-latency CPUs result in a latency hit for all other CPUs.

As a workaround to provide consistent low-latency performance, set
all CPUs to only sleep as deep as C1 on lowlatency nodes.

Change-Id: Idd627eee6e7ff95939e428b180d07d8ab1cadad2
Partial-Bug: 1845735
Signed-off-by: Jim Gauld <james.gauld@windriver.com>
This commit is contained in:
Jim Gauld 2019-10-24 13:08:28 -04:00 committed by Chris Friesen
parent 144b5668ff
commit c4bdce8ca2
2 changed files with 4 additions and 8 deletions

View File

@ -1,2 +1,2 @@
SRC_DIR="sysinv"
TIS_PATCH_VER=337
TIS_PATCH_VER=338

View File

@ -546,16 +546,11 @@ class PlatformPuppet(base.BasePuppet):
vswitch_cpus = self._get_host_cpu_list(
host, constants.VSWITCH_FUNCTION, threads=True)
vswitch_cpuset = set([c.cpu for c in vswitch_cpus])
vswitch_ranges = utils.format_range_set(vswitch_cpuset)
# non-platform logical cpus
rcu_nocbs_cpuset = host_cpuset - platform_cpuset
rcu_nocbs_ranges = utils.format_range_set(rcu_nocbs_cpuset)
# non-vswitch logical cpus
non_vswitch_cpuset = host_cpuset - vswitch_cpuset
non_vswitch_ranges = utils.format_range_set(non_vswitch_cpuset)
# isolated logical cpus
app_isolated_cpus = self._get_host_cpu_list(
host, constants.ISOLATED_FUNCTION, threads=True)
@ -565,11 +560,12 @@ class PlatformPuppet(base.BasePuppet):
cpu_ranges = {}
if constants.LOWLATENCY in host.subfunctions:
# set PM QoS latency that achieves C1 state for all cpus
config.update({
'platform::compute::pmqos::low_wakeup_cpus':
"\"%s\"" % vswitch_ranges,
"\"%s\"" % host_ranges,
'platform::compute::pmqos::hight_wakeup_cpus':
"\"%s\"" % non_vswitch_ranges,
"\"%s\"" % "",
})
cpu_ranges.update({"nohz_full": rcu_nocbs_ranges})