diff --git a/.gitignore b/.gitignore index ae82a2a..05be9b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.9.0.tar.gz +SOURCES/tuned-2.10.0.tar.gz diff --git a/.tuned.metadata b/.tuned.metadata index f75b57b..8c2c6b0 100644 --- a/.tuned.metadata +++ b/.tuned.metadata @@ -1 +1 @@ -83a693e12c542735bb10db4a10aeeee60ffacfb0 SOURCES/tuned-2.9.0.tar.gz +24ecb366bf503d8f6a79ced3f8faf239c81ad8cf SOURCES/tuned-2.10.0.tar.gz diff --git a/SOURCES/tuned-2.10.0-gtk-3.8.patch b/SOURCES/tuned-2.10.0-gtk-3.8.patch new file mode 100644 index 0000000..2bb12cd --- /dev/null +++ b/SOURCES/tuned-2.10.0-gtk-3.8.patch @@ -0,0 +1,100 @@ +diff --git a/tuned-gui.glade b/tuned-gui.glade +index 36e173a..30dd51a 100644 +--- a/tuned-gui.glade ++++ b/tuned-gui.glade +@@ -1,7 +1,6 @@ + + + +- + + False + dialog +@@ -729,12 +728,6 @@ + + True + False +- +- +- True +- False +- +- + + + False +diff --git a/tuned-gui.py b/tuned-gui.py +index 8f72fd5..54fd815 100755 +--- a/tuned-gui.py ++++ b/tuned-gui.py +@@ -320,8 +320,6 @@ class Base(object): + self.label_actual_profile.set_text(self.controller.active_profile()) + if self.config.get(consts.CFG_RECOMMEND_COMMAND): + self.label_recommended_profile.set_text(self.controller.recommend_profile()) +- self.listbox_summary_of_active_profile = \ +- self.builder.get_object('listboxSummaryOfActiveProfile') + + self.data_for_listbox_summary_of_active_profile() + self.comboboxtext_fast_change_profile.set_model(self.treestore_profiles) +@@ -446,9 +444,6 @@ class Base(object): + This method is emited after change profile and on startup of app. + """ + +- for row in self.listbox_summary_of_active_profile: +- self.listbox_summary_of_active_profile.remove(row) +- + if self.is_tuned_connection_ok(): + self.active_profile = \ + self.manager.get_profile(self.controller.active_profile()) +@@ -464,51 +459,6 @@ class Base(object): + + self.label_summary_included_profile.set_text('None') + +- row = Gtk.ListBoxRow() +- box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0) +- plugin_name = Gtk.Label() +- plugin_name.set_markup('Plugin Name') +- plugin_option = Gtk.Label() +- plugin_option.set_markup('Plugin Options') +- box.pack_start(plugin_name, True, True, 0) +- box.pack_start(plugin_option, True, True, 0) +- row.add(box) +- +- self.listbox_summary_of_active_profile.add(row) +- +- sep = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) +- self.listbox_summary_of_active_profile.add(sep) +- sep.show() +- +- for u in self.active_profile.units: +- row = Gtk.ListBoxRow() +- hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, +- spacing=0) +- hbox.set_homogeneous(True) +- row.add(hbox) +- label = Gtk.Label() +- label.set_markup(u) +- label.set_justify(Gtk.Justification.LEFT) +- hbox.pack_start(label, False, True, 1) +- +- grid = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, +- spacing=0) +- grid.set_homogeneous(True) +- for o in self.active_profile.units[u].options: +- label_option = Gtk.Label() +- label_option.set_markup(o + ' = ' + '' +- + self.active_profile.units[u].options[o] +- + '') +- grid.pack_start(label_option, False, True, 0) +- +- hbox.pack_start(grid, False, True, 0) +- self.listbox_summary_of_active_profile.add(row) +- separator = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) +- self.listbox_summary_of_active_profile.add(separator) +- separator.show() +- +- self.listbox_summary_of_active_profile.show_all() +- + # def on_treeview_button_press_event(self, treeview, event): + # popup = Gtk.Menu() + # popup.append(Gtk.MenuItem('add')) diff --git a/SOURCES/tuned-2.10.0-realtime-virtual-enable-rt-entsk.patch b/SOURCES/tuned-2.10.0-realtime-virtual-enable-rt-entsk.patch new file mode 100644 index 0000000..e464f0f --- /dev/null +++ b/SOURCES/tuned-2.10.0-realtime-virtual-enable-rt-entsk.patch @@ -0,0 +1,94 @@ +From 837c6bd12a5eedc3fbf46291bf1040e724786efd Mon Sep 17 00:00:00 2001 +From: Marcelo Tosatti +Date: Fri, 31 Aug 2018 13:27:12 +0200 +Subject: [PATCH] start/stop rt-entsk daemon on initialization/shutdown +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The rt-entsk application, part of newer rt-setup packages, +worksaround a latency issue with static key +IPI's. What it does it: + +/* + * Open a socket, and enable timestamping on it. + * + * This is to avoid Chrony from changing timestamping + * user count from 0->1 and vice-versa, causing + * static key enable/disable IPIs. + * + */ + +Start/stop the systemctl service from the realtime-virtual-host +and realtime-virtual-guest profiles. + +Signed-off-by: Marcelo Tosatti +Signed-off-by: Jaroslav Škarvada +--- + profiles/realtime-virtual-guest/script.sh | 19 +++++++++++++++++++ + profiles/realtime-virtual-guest/tuned.conf | 3 +++ + profiles/realtime-virtual-host/script.sh | 2 ++ + 3 files changed, 24 insertions(+) + create mode 100755 profiles/realtime-virtual-guest/script.sh + +diff --git a/profiles/realtime-virtual-guest/script.sh b/profiles/realtime-virtual-guest/script.sh +new file mode 100755 +index 0000000..33cb730 +--- /dev/null ++++ b/profiles/realtime-virtual-guest/script.sh +@@ -0,0 +1,19 @@ ++#!/bin/sh ++ ++. /usr/lib/tuned/functions ++ ++start() { ++ systemctl start rt-entsk ++ return "$?" ++} ++ ++stop() { ++ systemctl stop rt-entsk ++ return "$?" ++} ++ ++verify() { ++ return "$?" ++} ++ ++process $@ +diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf +index fb2bc42..8e1f67e 100644 +--- a/profiles/realtime-virtual-guest/tuned.conf ++++ b/profiles/realtime-virtual-guest/tuned.conf +@@ -36,5 +36,8 @@ group.ktimersoftd=0:f:3:*:ktimersoftd.* + + ps_blacklist=ksoftirqd.*;rcuc.*;rcub.*;ktimersoftd.* + ++[script] ++script=${i:PROFILE_DIR}/script.sh ++ + [bootloader] + cmdline_rvg=+nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} +diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh +index 515d254..a9366cb 100755 +--- a/profiles/realtime-virtual-host/script.sh ++++ b/profiles/realtime-virtual-host/script.sh +@@ -87,6 +87,7 @@ start() { + if [ -f $CACHE_VALUE_FILE ]; then + echo `cat $CACHE_VALUE_FILE` > $KVM_LAPIC_FILE + fi ++ systemctl start rt-entsk + + return 0 + } +@@ -94,6 +95,7 @@ start() { + stop() { + [ "$1" = "full_rollback" ] && teardown_kvm_mod_low_latency + enable_ksm ++ systemctl stop rt-entsk + return "$?" + } + +-- +2.14.4 + diff --git a/SOURCES/tuned-2.10.0-use-online-cpus.patch b/SOURCES/tuned-2.10.0-use-online-cpus.patch new file mode 100644 index 0000000..8cc34fd --- /dev/null +++ b/SOURCES/tuned-2.10.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 b90e76f..fb2bc42 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 0346fff..5e0ff1f 100644 +--- a/profiles/realtime-virtual-host/tuned.conf ++++ b/profiles/realtime-virtual-host/tuned.conf +@@ -20,10 +20,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 b2273cf..c595e67 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 375eb67..2aff3c9 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 8b7df57..41d6d99 100644 +--- a/tuned/utils/commands.py ++++ b/tuned/utils/commands.py +@@ -363,8 +363,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/SOURCES/tuned-2.8.0-gtk-3.8.patch b/SOURCES/tuned-2.8.0-gtk-3.8.patch deleted file mode 100644 index cf54324..0000000 --- a/SOURCES/tuned-2.8.0-gtk-3.8.patch +++ /dev/null @@ -1,100 +0,0 @@ -diff --git a/tuned-gui.glade b/tuned-gui.glade -index 36e173a..30dd51a 100644 ---- a/tuned-gui.glade -+++ b/tuned-gui.glade -@@ -1,7 +1,6 @@ - - - -- - - False - dialog -@@ -729,12 +728,6 @@ - - True - False -- -- -- True -- False -- -- - - - False -diff --git a/tuned-gui.py b/tuned-gui.py -index e9c4628..a0514c1 100755 ---- a/tuned-gui.py -+++ b/tuned-gui.py -@@ -319,8 +319,6 @@ class Base(object): - self.label_actual_profile.set_text(self.controller.active_profile()) - if self.config.get(consts.CFG_RECOMMEND_COMMAND): - self.label_recommended_profile.set_text(self.controller.recommend_profile()) -- self.listbox_summary_of_active_profile = \ -- self.builder.get_object('listboxSummaryOfActiveProfile') - - self.data_for_listbox_summary_of_active_profile() - self.comboboxtext_fast_change_profile.set_model(self.treestore_profiles) -@@ -445,9 +443,6 @@ class Base(object): - This method is emited after change profile and on startup of app. - """ - -- for row in self.listbox_summary_of_active_profile: -- self.listbox_summary_of_active_profile.remove(row) -- - if self.is_tuned_connection_ok(): - self.active_profile = \ - self.manager.get_profile(self.controller.active_profile()) -@@ -463,51 +458,6 @@ class Base(object): - - self.label_summary_included_profile.set_text('None') - -- row = Gtk.ListBoxRow() -- box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0) -- plugin_name = Gtk.Label() -- plugin_name.set_markup('Plugin Name') -- plugin_option = Gtk.Label() -- plugin_option.set_markup('Plugin Options') -- box.pack_start(plugin_name, True, True, 0) -- box.pack_start(plugin_option, True, True, 0) -- row.add(box) -- -- self.listbox_summary_of_active_profile.add(row) -- -- sep = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) -- self.listbox_summary_of_active_profile.add(sep) -- sep.show() -- -- for u in self.active_profile.units: -- row = Gtk.ListBoxRow() -- hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, -- spacing=0) -- hbox.set_homogeneous(True) -- row.add(hbox) -- label = Gtk.Label() -- label.set_markup(u) -- label.set_justify(Gtk.Justification.LEFT) -- hbox.pack_start(label, False, True, 1) -- -- grid = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, -- spacing=0) -- grid.set_homogeneous(True) -- for o in self.active_profile.units[u].options: -- label_option = Gtk.Label() -- label_option.set_markup(o + ' = ' + '' -- + self.active_profile.units[u].options[o] -- + '') -- grid.pack_start(label_option, False, True, 0) -- -- hbox.pack_start(grid, False, True, 0) -- self.listbox_summary_of_active_profile.add(row) -- separator = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL) -- self.listbox_summary_of_active_profile.add(separator) -- separator.show() -- -- self.listbox_summary_of_active_profile.show_all() -- - # def on_treeview_button_press_event(self, treeview, event): - # popup = Gtk.Menu() - # popup.append(Gtk.MenuItem('add')) diff --git a/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch b/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch deleted file mode 100644 index 37b2dcd..0000000 --- a/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch +++ /dev/null @@ -1,43 +0,0 @@ -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/SOURCES/tuned-2.9.0-use-online-cpus.patch b/SOURCES/tuned-2.9.0-use-online-cpus.patch deleted file mode 100644 index 3165038..0000000 --- a/SOURCES/tuned-2.9.0-use-online-cpus.patch +++ /dev/null @@ -1,104 +0,0 @@ -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 d22bf31..99a88f4 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -1,15 +1,15 @@ #%%global prerelease rc -#%%global prereleasenum 2 +#%%global prereleasenum 1 %global prerel1 %{?prerelease:.%{prerelease}%{prereleasenum}} %global prerel2 %{?prerelease:-%{prerelease}.%{prereleasenum}} Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.9.0 -Release: 1%{?prerel1}%{?dist}.2 +Version: 2.10.0 +Release: 6%{?prerel1}%{?dist} License: GPLv2+ -Source: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}.tar.gz#/%{name}-%{version}%{?prerel1}.tar.gz +Source: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}.tar.gz#/%{name}-%{version}%{?prerel2}.tar.gz URL: http://www.tuned-project.org/ BuildArch: noarch BuildRequires: python, systemd, desktop-file-utils @@ -21,9 +21,9 @@ Requires: python-decorator, dbus-python, pygobject3-base, python-pyudev 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 -Patch2: tuned-2.9.0-use-online-cpus.patch +Patch0: tuned-2.10.0-gtk-3.8.patch +Patch1: tuned-2.10.0-use-online-cpus.patch +Patch2: tuned-2.10.0-realtime-virtual-enable-rt-entsk.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -76,6 +76,13 @@ Requires: %{name} = %{version} %description profiles-sap Additional tuned profile(s) targeted to SAP NetWeaver loads. +%package profiles-mssql +Summary: Additional tuned profile(s) for MS SQL Server +Requires: %{name} = %{version} + +%description profiles-mssql +Additional tuned profile(s) for MS SQL Server. + %package profiles-oracle Summary: Additional tuned profile(s) targeted to Oracle loads Requires: %{name} = %{version} @@ -153,13 +160,14 @@ It can be also used to fine tune your system for specific scenarios. %patch0 -p1 %patch1 -p1 %patch2 -p1 - +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1626473 +chmod 0755 profiles/realtime-virtual-guest/script.sh %build %install -make install DESTDIR=%{buildroot} DOCDIR=%{docdir} +make install DESTDIR=%{buildroot} DOCDIR=%{docdir} PYTHON=python2 %if 0%{?rhel} sed -i 's/\(dynamic_tuning[ \t]*=[ \t]*\).*/\10/' %{buildroot}%{_sysconfdir}/tuned/tuned-main.conf %endif @@ -276,6 +284,7 @@ fi %exclude %{_prefix}/lib/tuned/sap-netweaver %exclude %{_prefix}/lib/tuned/sap-hana %exclude %{_prefix}/lib/tuned/sap-hana-vmware +%exclude %{_prefix}/lib/tuned/mssql %exclude %{_prefix}/lib/tuned/oracle %exclude %{_prefix}/lib/tuned/atomic-host %exclude %{_prefix}/lib/tuned/atomic-guest @@ -347,6 +356,11 @@ fi %{_prefix}/lib/tuned/sap-hana-vmware %{_mandir}/man7/tuned-profiles-sap-hana.7* +%files profiles-mssql +%defattr(-,root,root,-) +%{_prefix}/lib/tuned/mssql +%{_mandir}/man7/tuned-profiles-mssql.7* + %files profiles-oracle %defattr(-,root,root,-) %{_prefix}/lib/tuned/oracle @@ -398,13 +412,54 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog -* Wed Aug 8 2018 Jaroslav Škarvada - 2.9.0-1.2 +* Fri Sep 7 2018 Jaroslav Škarvada - 2.10.0-6 +- Added workaround for rpmbuild bug 1626473 + related: rhbz#1616043 + +* Thu Sep 6 2018 Jaroslav Škarvada - 2.10.0-5 +- Fixed realtime-virtual-guest profile to call script.sh + related: rhbz#1616043 + +* Wed Sep 5 2018 Jaroslav Škarvada - 2.10.0-4 +- De-fuzzified realtime-virtual-enable-rt-entsk patch + related: rhbz#1616043 + +* Wed Sep 5 2018 Jaroslav Škarvada - 2.10.0-3 +- realtime-virtual-guest/host: start/stop rt-entsk daemon on + initialization/shutdown + resolves: rhbz#1616043 + +* Tue Aug 7 2018 Jaroslav Škarvada - 2.10.0-2 - use online CPUs for cpusets calculations instead of present CPUs - resolves: rhbz#1613951 + resolves: rhbz#1613478 -* Wed Jul 4 2018 Jaroslav Škarvada - 2.9.0-1.1 -- plugin_scheduler: whitelist/blacklist processed also for thread names - resolves: rhbz#1598031 +* Wed Jul 4 2018 Jaroslav Škarvada - 2.10.0-1 +- new release + - rebased tuned to latest upstream + related: rhbz#1546598 + - IRQ affinity handled by scheduler plugin + resolves: rhbz#1590937 + +* Mon Jun 11 2018 Jaroslav Škarvada - 2.10.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: rhbz#1546598 + - script: show stderr output in the log + - realtime-virtual-host: script.sh: add error checking + - man: improved tuned-profiles-cpu-partitioning.7 + - bootloader: check if grub2_cfg_file_name is None in _remove_grub2_tuning() + - plugin_scheduler: whitelist/blacklist processed also for thread names + - bootloader: patch all GRUB2 config files + - profiles: added mssql profile + - tuned-adm: print log excerpt when changing profile + - cpu-partitioning: use no_balance_cores instead of no_rebalance_cores + - sysctl: support assignment modifiers as other plugins do + - oracle: fixed ip_local_port_range parity warning + resolves: rhbz#1527219 + - Fix verifying cpumask on systems with more than 32 cores + resolves: rhbz#1528368 + - oracle: updated the profile to be in sync with KCS 39188 + resolves: rhbz#1447323 * Sun Oct 29 2017 Jaroslav Škarvada - 2.9.0-1 - new release