diff --git a/SOURCES/tuned-2.9.0-use-online-cpus.patch b/SOURCES/tuned-2.9.0-use-online-cpus.patch new file mode 100644 index 0000000..3165038 --- /dev/null +++ b/SOURCES/tuned-2.9.0-use-online-cpus.patch @@ -0,0 +1,104 @@ +diff --git a/profiles/cpu-partitioning/tuned.conf b/profiles/cpu-partitioning/tuned.conf +index 3c52215..1821b74 100644 +--- a/profiles/cpu-partitioning/tuned.conf ++++ b/profiles/cpu-partitioning/tuned.conf +@@ -19,13 +19,13 @@ tmpdir=${f:strip:${f:exec:/usr/bin/mktemp:-d}} + isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} + isolated_cpumask=${f:cpulist2hex:${isolated_cores_expanded}} + not_isolated_cores_expanded=${f:cpulist_invert:${isolated_cores_expanded}} +-isolated_cores_present_expanded=${f:cpulist_present:${isolated_cores}} +-not_isolated_cores_present_expanded=${f:cpulist_present:${not_isolated_cores_expanded}} ++isolated_cores_online_expanded=${f:cpulist_online:${isolated_cores}} ++not_isolated_cores_online_expanded=${f:cpulist_online:${not_isolated_cores_expanded}} + not_isolated_cpumask=${f:cpulist2hex:${not_isolated_cores_expanded}} + no_balance_cores_expanded=${f:cpulist_unpack:${no_balance_cores}} + +-# Fail if isolated_cores contains CPUs which are not present +-assert2=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_expanded}:${isolated_cores_present_expanded}} ++# Fail if isolated_cores contains CPUs which are not online ++assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}} + + [sysctl] + kernel.hung_task_timeout_secs = 600 +diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf +index cf349ef..05cf783 100644 +--- a/profiles/realtime-virtual-guest/tuned.conf ++++ b/profiles/realtime-virtual-guest/tuned.conf +@@ -15,10 +15,10 @@ isolated_cores_assert_check = \\${isolated_cores} + assert1=${f:assertion_non_equal:isolated_cores are set:${isolated_cores}:${isolated_cores_assert_check}} + + isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} +-isolated_cores_present_expanded=${f:cpulist_present:${isolated_cores}} ++isolated_cores_online_expanded=${f:cpulist_online:${isolated_cores}} + +-# Fail if isolated_cores contains CPUs which are not present +-assert2=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_expanded}:${isolated_cores_present_expanded}} ++# Fail if isolated_cores contains CPUs which are not online ++assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}} + + [scheduler] + # group.group_name=rule_priority:scheduler_policy:scheduler_priority:core_affinity_in_hex:process_name_regex +diff --git a/profiles/realtime-virtual-host/tuned.conf b/profiles/realtime-virtual-host/tuned.conf +index 828e519..f64e22a 100644 +--- a/profiles/realtime-virtual-host/tuned.conf ++++ b/profiles/realtime-virtual-host/tuned.conf +@@ -32,10 +32,10 @@ isolated_cores_assert_check = \\${isolated_cores} + assert1=${f:assertion_non_equal:isolated_cores are set:${isolated_cores}:${isolated_cores_assert_check}} + + isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} +-isolated_cores_present_expanded=${f:cpulist_present:${isolated_cores}} ++isolated_cores_online_expanded=${f:cpulist_online:${isolated_cores}} + +-# Fail if isolated_cores contains CPUs which are not present +-assert2=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_expanded}:${isolated_cores_present_expanded}} ++# Fail if isolated_cores contains CPUs which are not online ++assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}} + + [scheduler] + # group.group_name=rule_priority:scheduler_policy:scheduler_priority:core_affinity_in_hex:process_name_regex +diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf +index 6feee3f..6b3676b 100644 +--- a/profiles/realtime/tuned.conf ++++ b/profiles/realtime/tuned.conf +@@ -18,10 +18,10 @@ assert1=${f:assertion_non_equal:isolated_cores are set:${isolated_cores}:${isola + # Non-isolated cores cpumask including offline cores + not_isolated_cpumask = ${f:cpulist2hex_invert:${isolated_cores}} + isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} +-isolated_cores_present_expanded=${f:cpulist_present:${isolated_cores}} ++isolated_cores_online_expanded=${f:cpulist_online:${isolated_cores}} + +-# Fail if isolated_cores contains CPUs which are not present +-assert2=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_expanded}:${isolated_cores_present_expanded}} ++# Fail if isolated_cores contains CPUs which are not online ++assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}} + + [sysctl] + kernel.hung_task_timeout_secs = 600 +diff --git a/tuned/profiles/functions/function_cpulist_invert.py b/tuned/profiles/functions/function_cpulist_invert.py +index 2a3c9ea..52f8270 100644 +--- a/tuned/profiles/functions/function_cpulist_invert.py ++++ b/tuned/profiles/functions/function_cpulist_invert.py +@@ -8,7 +8,7 @@ log = tuned.logs.get() + class cpulist_invert(base.Function): + """ + Inverts list of CPUs (makes its complement). For the complement it +- gets number of present CPUs from the /sys/devices/system/cpu/present, ++ gets number of present CPUs from the /sys/devices/system/cpu/online, + e.g. system with 4 CPUs (0-3), the inversion of list "0,2,3" will be + "1" + """ +diff --git a/tuned/utils/commands.py b/tuned/utils/commands.py +index f8e393f..3299f4c 100644 +--- a/tuned/utils/commands.py ++++ b/tuned/utils/commands.py +@@ -355,8 +355,8 @@ class commands: + # Inverts CPU list (i.e. makes its complement) + def cpulist_invert(self, l): + cpus = self.cpulist_unpack(l) +- present = self.cpulist_unpack(self.read_file("/sys/devices/system/cpu/present")) +- return list(set(present) - set(cpus)) ++ online = self.cpulist_unpack(self.read_file("/sys/devices/system/cpu/online")) ++ return list(set(online) - set(cpus)) + + # Converts CPU list to hexadecimal CPU mask + def cpulist2hex(self, l): diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec index 6567ec5..d22bf31 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}.1 +Release: 1%{?prerel1}%{?dist}.2 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/ @@ -23,6 +23,7 @@ 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 +Patch2: tuned-2.9.0-use-online-cpus.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -151,6 +152,7 @@ It can be also used to fine tune your system for specific scenarios. %setup -q -n %{name}-%{version}%{?prerel2} %patch0 -p1 %patch1 -p1 +%patch2 -p1 %build @@ -396,6 +398,10 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog +* Wed Aug 8 2018 Jaroslav Škarvada - 2.9.0-1.2 +- use online CPUs for cpusets calculations instead of present CPUs + resolves: rhbz#1613951 + * Wed Jul 4 2018 Jaroslav Škarvada - 2.9.0-1.1 - plugin_scheduler: whitelist/blacklist processed also for thread names resolves: rhbz#1598031