diff --git a/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch b/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch new file mode 100644 index 0000000..37b2dcd --- /dev/null +++ b/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch @@ -0,0 +1,43 @@ +diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py +index 25c38dd..07fac52 100644 +--- a/tuned/plugins/plugin_scheduler.py ++++ b/tuned/plugins/plugin_scheduler.py +@@ -379,8 +379,12 @@ class SchedulerPlugin(base.Plugin): + + def _set_all_obj_affinity(self, objs, affinity, threads = False, intersect = False): + _affinity = affinity +- for obj in objs: +- if self._affinity_changeable(obj, process = objs[obj]) != 1: ++ psl = [v for v in objs if re.search(self._ps_whitelist, self._get_stat_comm(v)) is not None] ++ if self._ps_blacklist != "": ++ psl = [v for v in psl if re.search(self._ps_blacklist, self._get_stat_comm(v)) is None] ++ psd = dict([(v.pid, v) for v in psl]) ++ for obj in psd: ++ if self._affinity_changeable(obj, process = psd[obj]) != 1: + continue + prev_affinity = self._get_affinity2(obj) + if prev_affinity is None: +@@ -391,8 +395,8 @@ class SchedulerPlugin(base.Plugin): + if not self._set_affinity2(obj, _affinity): + continue + # process threads +- if not threads and objs[obj].has_key("threads"): +- self._set_all_obj_affinity(dict(objs[obj]["threads"].items()), affinity, True, intersect) ++ if not threads and "threads" in psd[obj]: ++ self._set_all_obj_affinity(psd[obj]["threads"].values(), affinity, True, intersect) + + def _get_stat_comm(self, o): + try: +@@ -405,11 +409,7 @@ class SchedulerPlugin(base.Plugin): + affinity_hex = self._cmd.cpulist2hex(_affinity) + ps = procfs.pidstats() + ps.reload_threads() +- psl = filter(lambda v: re.search(self._ps_whitelist, self._get_stat_comm(v)) is not None, ps.values()) +- if self._ps_blacklist != "": +- psl = filter(lambda v: re.search(self._ps_blacklist, self._get_stat_comm(v)) is None, psl) +- psd = dict(map(lambda v: (v.pid, v), psl)) +- self._set_all_obj_affinity(psd, affinity, False, intersect) ++ self._set_all_obj_affinity(ps.values(), affinity, False, intersect) + + # process IRQs + irqs = procfs.interrupts() diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec index ff40cc3..6567ec5 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -7,7 +7,7 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned Version: 2.9.0 -Release: 1%{?prerel1}%{?dist} +Release: 1%{?prerel1}%{?dist}.1 License: GPLv2+ Source: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}.tar.gz#/%{name}-%{version}%{?prerel1}.tar.gz URL: http://www.tuned-project.org/ @@ -22,6 +22,7 @@ Requires: virt-what, python-configobj, ethtool, gawk Requires: util-linux, python-perf, dbus, polkit, python-linux-procfs Requires: python-schedutils Patch0: tuned-2.8.0-gtk-3.8.patch +Patch1: tuned-2.9.0-scheduler-blacklist-thread-names.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -149,6 +150,7 @@ It can be also used to fine tune your system for specific scenarios. %prep %setup -q -n %{name}-%{version}%{?prerel2} %patch0 -p1 +%patch1 -p1 %build @@ -394,6 +396,10 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog +* Wed Jul 4 2018 Jaroslav Škarvada - 2.9.0-1.1 +- plugin_scheduler: whitelist/blacklist processed also for thread names + resolves: rhbz#1598031 + * Sun Oct 29 2017 Jaroslav Škarvada - 2.9.0-1 - new release - rebased tuned to latest upstream