scheduler: fixed isolated_cores to work with cgroups

related: rhbz#1784648
throughput-performance: fix performance regression on AMD platforms
  related: rhbz#1746957
This commit is contained in:
Jaroslav Škarvada 2020-07-03 13:23:58 +02:00
parent 93789d0619
commit 0f0526292f
3 changed files with 94 additions and 1 deletions

View File

@ -0,0 +1,30 @@
From f511ad5d48f4f2ae3b2616463bc3a17bae5bdb90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Tue, 30 Jun 2020 15:39:18 +0200
Subject: [PATCH] throughput-performance: fix performance regression on AMD
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It turned out that disablement of the numa_balancing could result in
upto 20% performance drop on some loads.
Related: rhbz#1746957
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
profiles/throughput-performance/tuned.conf | 1 -
1 file changed, 1 deletion(-)
diff --git a/profiles/throughput-performance/tuned.conf b/profiles/throughput-performance/tuned.conf
index f1a6f1a..3cc6fd1 100644
--- a/profiles/throughput-performance/tuned.conf
+++ b/profiles/throughput-performance/tuned.conf
@@ -85,4 +85,3 @@ type=sysctl
uname_regex=x86_64
cpuinfo_regex=${amd_cpuinfo_regex}
kernel.sched_migration_cost_ns=5000000
-kernel.numa_balancing=0
--
2.25.4

View File

@ -0,0 +1,55 @@
From daf02c380515b42db06d9f743070af5ab248a414 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Fri, 3 Jul 2020 12:17:03 +0200
Subject: [PATCH] scheduler: fix isolated_cores to work with cgroups
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It seems cpuset.cpus needs to be initialized before writing to tasks.
Related: rhbz#1784648
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
tuned/plugins/plugin_scheduler.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py
index 745ee4a..9ad9f54 100644
--- a/tuned/plugins/plugin_scheduler.py
+++ b/tuned/plugins/plugin_scheduler.py
@@ -106,6 +106,7 @@ class SchedulerPlugin(base.Plugin):
# calculated by isolated_cores setter
self._affinity = None
+ self._cgroup_affinity_initialized = False
self._cgroup = None
self._cgroups = collections.OrderedDict([(self._sanitize_cgroup_path(option[7:]), self._variables.expand(affinity))
for option, affinity in instance.options.items() if option[:7] == "cgroup." and len(option) > 7])
@@ -478,11 +479,14 @@ class SchedulerPlugin(base.Plugin):
log.error("Unable to set affinity '%s' for cgroup '%s'" % (affinity, cgroup))
def _cgroup_set_affinity(self):
+ if self._cgroup_affinity_initialized:
+ return
log.debug("Setting cgroups affinities")
if self._affinity is not None and self._cgroup is not None and not self._cgroup in self._cgroups:
self._cgroup_set_affinity_one(self._cgroup, self._affinity, backup = True)
for cg in self._cgroups.items():
self._cgroup_set_affinity_one(cg[0], cg[1], backup = True)
+ self._cgroup_affinity_initialized = True
def _cgroup_restore_affinity(self):
log.debug("Restoring cgroups affinities")
@@ -920,6 +924,7 @@ class SchedulerPlugin(base.Plugin):
return self._verify_all_irq_affinity(affinity, ignore_missing)
elif enabling:
if self._cgroup:
+ self._cgroup_set_affinity()
ps_affinity = "cgroup.%s" % self._cgroup
else:
ps_affinity = affinity
--
2.25.4

View File

@ -34,7 +34,7 @@
Summary: A dynamic adaptive system tuning daemon
Name: tuned
Version: 2.14.0
Release: 1%{?prerel1}%{?dist}
Release: 2%{?prerel1}%{?dist}
License: GPLv2+
Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz
@ -79,6 +79,8 @@ Recommends: kernel-tools
%if 0%{?rhel} > 7
Requires: python3-syspurpose
%endif
Patch0: tuned-2.14.0-amd-performance-regression-fix.patch
Patch1: tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch
%description
The tuned package contains a daemon that tunes system settings dynamically.
@ -491,6 +493,12 @@ fi
%{_mandir}/man7/tuned-profiles-compat.7*
%changelog
* Fri Jul 3 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-2
- scheduler: fixed isolated_cores to work with cgroups
related: rhbz#1784648
- throughput-performance: fix performance regression on AMD platforms
related: rhbz#1746957
* Mon Jun 22 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-1
- new release
- rebased tuned to latest upstream