diff --git a/.gitignore b/.gitignore index acaa05c..8242f96 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.7.1.tar.bz2 +SOURCES/tuned-2.8.0.tar.bz2 diff --git a/.tuned.metadata b/.tuned.metadata index a64257d..7104979 100644 --- a/.tuned.metadata +++ b/.tuned.metadata @@ -1 +1 @@ -a9201acb6811484e5566527d5fc7e5c1f078e97e SOURCES/tuned-2.7.1.tar.bz2 +ab82f13f867aeb64e83d2fd7dcea883ce4e66f34 SOURCES/tuned-2.8.0.tar.bz2 diff --git a/SOURCES/tuned-2.7.1-fixed-traceback.patch b/SOURCES/tuned-2.7.1-fixed-traceback.patch deleted file mode 100644 index 6ab21da..0000000 --- a/SOURCES/tuned-2.7.1-fixed-traceback.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/libexec/defirqaffinity.py b/libexec/defirqaffinity.py -index 13768de..54d6499 100755 ---- a/libexec/defirqaffinity.py -+++ b/libexec/defirqaffinity.py -@@ -59,7 +59,7 @@ def verify(shouldbemask): - sys.exit(1) - - # now verify each /proc/irq/$num/smp_affinity -- interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(join(irqpath,f)) ] -+ interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(os.path.join(irqpath,f)) ] - # IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9) - interruptdirs.remove("2") - # IRQ 0 - system timer (cannot be changed) -@@ -73,7 +73,7 @@ def verify(shouldbemask): - inplacemask = inplacemask | 1 << i; - if (inplacemask & ~shouldbemask): - sys.stderr.write("verify: failed: irqaffinity (%s) inplacemask=%x shouldbemask=%x\n" % (fname, inplacemask, shouldbemask)) -- sys.exit(1) -+ sys.exit(1) - - sys.exit(0) - -@@ -105,7 +105,7 @@ fo.close() - - # now adjust each /proc/irq/$num/smp_affinity - --interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(join(irqpath,f)) ] -+interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(os.path.join(irqpath,f)) ] - - # IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9) - interruptdirs.remove("2") diff --git a/SOURCES/tuned-2.7.1-gtk-3.8.patch b/SOURCES/tuned-2.7.1-gtk-3.8.patch deleted file mode 100644 index 62b3dec..0000000 --- a/SOURCES/tuned-2.7.1-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 b169dec..2e76d0a 100755 ---- a/tuned-gui.py -+++ b/tuned-gui.py -@@ -318,8 +318,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) -@@ -444,9 +442,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()) -@@ -462,51 +457,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.7.1-gui-daemon-restart-fix.patch b/SOURCES/tuned-2.7.1-gui-daemon-restart-fix.patch deleted file mode 100644 index 2245e67..0000000 --- a/SOURCES/tuned-2.7.1-gui-daemon-restart-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/tuned-gui.py b/tuned-gui.py -index 2e76d0a..29a0907 100755 ---- a/tuned-gui.py -+++ b/tuned-gui.py -@@ -960,7 +960,7 @@ class Base(object): - self._cmd.execute(['service', 'tuned', 'start']) - time.sleep(10) - self.controller = tuned.admin.DBusController(consts.DBUS_BUS, -- consts.DBUS_OBJECT, consts.DBUS_INTERFACE) -+ consts.DBUS_INTERFACE, consts.DBUS_OBJECT) - - - if __name__ == '__main__': diff --git a/SOURCES/tuned-2.7.1-non-existent-profile-timeout-fix.patch b/SOURCES/tuned-2.7.1-non-existent-profile-timeout-fix.patch deleted file mode 100644 index b8f547b..0000000 --- a/SOURCES/tuned-2.7.1-non-existent-profile-timeout-fix.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8121ea9166d5f2828d97338811c5521c7a30489f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Tue, 23 Aug 2016 16:55:29 +0200 -Subject: tuned-adm: do not timeout if non-existent profile is requested -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jaroslav Škarvada ---- - tuned/admin/admin.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tuned/admin/admin.py b/tuned/admin/admin.py -index ddf6d9e..0c4caa5 100644 ---- a/tuned/admin/admin.py -+++ b/tuned/admin/admin.py -@@ -186,7 +186,7 @@ class Admin(object): - return False - self._daemon_action_finished.clear() - (ret, msg) = self._controller.switch_profile(profile_name) -- if self._async: -+ if self._async or not ret: - return self._controller.exit(self._profile_print_status(ret, msg)) - else: - self._timestamp = time.time() --- -cgit v0.12 - diff --git a/SOURCES/tuned-2.7.1-realtime-virtual-host-ktimersoftd.patch b/SOURCES/tuned-2.7.1-realtime-virtual-host-ktimersoftd.patch deleted file mode 100644 index 96ceb5e..0000000 --- a/SOURCES/tuned-2.7.1-realtime-virtual-host-ktimersoftd.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/profiles/realtime-virtual-host/tuned.conf b/profiles/realtime-virtual-host/tuned.conf ---- a/profiles/realtime-virtual-host/tuned.conf -+++ b/profiles/realtime-virtual-host/tuned.conf -@@ -38,10 +38,13 @@ assert=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_exp - group.ksoftirqd=0:f:2:*:ksoftirqd.* - - # for i in `pgrep rcuc` ; do grep Cpus_allowed_list /proc/$i/status ; done --group.rcuc=0:f:3:*:rcuc.* -+group.rcuc=0:f:4:*:rcuc.* - - # for i in `pgrep rcub` ; do grep Cpus_allowed_list /proc/$i/status ; done --group.rcub=0:f:3:*:rcub.* -+group.rcub=0:f:4:*:rcub.* -+ -+# for i in `pgrep ktimersoftd` ; do grep Cpus_allowed_list /proc/$i/status ; done -+group.ktimersoftd=0:f:3:*:ktimersoftd.* - - [script] - script=script.sh - diff --git a/SOURCES/tuned-2.8.0-gtk-3.8.patch b/SOURCES/tuned-2.8.0-gtk-3.8.patch new file mode 100644 index 0000000..cf54324 --- /dev/null +++ b/SOURCES/tuned-2.8.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 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.8.0-realtime-priorities-update.patch b/SOURCES/tuned-2.8.0-realtime-priorities-update.patch new file mode 100644 index 0000000..bc75e39 --- /dev/null +++ b/SOURCES/tuned-2.8.0-realtime-priorities-update.patch @@ -0,0 +1,65 @@ +From 1ab378cc4a4372ca031bb765f656ab463b28af88 Mon Sep 17 00:00:00 2001 +From: Luiz Capitulino +Date: Fri, 19 May 2017 15:10:19 -0400 +Subject: [PATCH] realtime-virtual-guest: re-assign kernel thread priorities + +From 63e5ebfe0c71c5e6d0613c4d8327b2a6f3fba7ba Mon Sep 17 00:00:00 2001 +From: Luiz Capitulino +Date: Fri, 19 May 2017 14:42:06 -0400 +Subject: + +The realtime guest profile uses the RT kernel default priority +assignment for the ksoftird, rcuc, and ktimersoftd kernel threads, +which is: + + 17 FF 2 [rcuc/1] * + 19 FF 1 [ktimersoftd/1] * + 20 TS - [ksoftirqd/1] * + +This doesn't allow running a PMD thread with fifo:1 in the +guest, since this will starve ktimersoftd and ksoftirqd if +those threads ever become runnable. + +The solution is to use the same priority assigment we use +in the host where we've been running PMD threads with +fifo:1 priorities without problems. This assignment is: + + 151 FF 4 [rcuc/15] * + 153 FF 3 [ktimersoftd/15] * + 154 FF 2 [ksoftirqd/15] * + +This patch just copies the [scheduler] section from the +host profile. + +Resolves: rhbz#1452357 + +Signed-off-by: Luiz Capitulino +--- + profiles/realtime-virtual-guest/tuned.conf | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf +index 71085a8..0992fbd 100644 +--- a/profiles/realtime-virtual-guest/tuned.conf ++++ b/profiles/realtime-virtual-guest/tuned.conf +@@ -20,6 +20,20 @@ isolated_cores_present_expanded=${f:cpulist_present:${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}} + ++[scheduler] ++# group.group_name=rule_priority:scheduler_policy:scheduler_priority:core_affinity_in_hex:process_name_regex ++# for i in `pgrep ksoftirqd` ; do grep Cpus_allowed_list /proc/$i/status ; done ++group.ksoftirqd=0:f:2:*:ksoftirqd.* ++ ++# for i in `pgrep rcuc` ; do grep Cpus_allowed_list /proc/$i/status ; done ++group.rcuc=0:f:4:*:rcuc.* ++ ++# for i in `pgrep rcub` ; do grep Cpus_allowed_list /proc/$i/status ; done ++group.rcub=0:f:4:*:rcub.* ++ ++# for i in `pgrep ktimersoftd` ; do grep Cpus_allowed_list /proc/$i/status ; done ++group.ktimersoftd=0:f:3:*:ktimersoftd.* ++ + [script] + script=${i:PROFILE_DIR}/script.sh + diff --git a/SOURCES/tuned-2.8.0-realtime-skew-tick-and-inheritance.patch b/SOURCES/tuned-2.8.0-realtime-skew-tick-and-inheritance.patch new file mode 100644 index 0000000..58706f8 --- /dev/null +++ b/SOURCES/tuned-2.8.0-realtime-skew-tick-and-inheritance.patch @@ -0,0 +1,37 @@ +diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf +index 04d7b5f..71085a8 100644 +--- a/profiles/realtime-virtual-guest/tuned.conf ++++ b/profiles/realtime-virtual-guest/tuned.conf +@@ -24,4 +24,4 @@ assert2=${f:assertion:isolated_cores contains present CPU(s):${isolated_cores_ex + script=${i:PROFILE_DIR}/script.sh + + [bootloader] +-cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} intel_pstate=disable nosoftlockup ++cmdline_rvg+=nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} +diff --git a/profiles/realtime-virtual-host/tuned.conf b/profiles/realtime-virtual-host/tuned.conf +index e01a99c..d7404d0 100644 +--- a/profiles/realtime-virtual-host/tuned.conf ++++ b/profiles/realtime-virtual-host/tuned.conf +@@ -55,4 +55,4 @@ group.ktimersoftd=0:f:3:*:ktimersoftd.* + script=${i:PROFILE_DIR}/script.sh + + [bootloader] +-cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} intel_pstate=disable nosoftlockup ++cmdline_rvh+=nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} +diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf +index f152237..9794cd6 100644 +--- a/profiles/realtime/tuned.conf ++++ b/profiles/realtime/tuned.conf +@@ -36,11 +36,7 @@ kernel.timer_migration = 0 + /sys/devices/system/machinecheck/machinecheck*/ignore_ce = 1 + + [bootloader] +-# lscpu | grep ^NUMA +-# NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22 +-# NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23 +- +-cmdline=isolcpus=${isolated_cores} intel_pstate=disable nosoftlockup ++cmdline=isolcpus=${isolated_cores} intel_pstate=disable nosoftlockup skew_tick=1 + + [script] + script = ${i:PROFILE_DIR}/script.sh diff --git a/SOURCES/tuned-2.8.0-workaround-for-old-pyudev.patch b/SOURCES/tuned-2.8.0-workaround-for-old-pyudev.patch new file mode 100644 index 0000000..eebcc1c --- /dev/null +++ b/SOURCES/tuned-2.8.0-workaround-for-old-pyudev.patch @@ -0,0 +1,37 @@ +From 8af58432afeec89467699b36d5e3d9fcc2120cc9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= +Date: Fri, 5 May 2017 13:51:05 +0200 +Subject: [PATCH] inventory: added workaround for pyudev < 0.18 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is needed for e.g. RHEL-7.4. + +Related: rhbz#1251240 + +Signed-off-by: Jaroslav Škarvada +--- + tuned/hardware/inventory.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/tuned/hardware/inventory.py b/tuned/hardware/inventory.py +index 7a24348..8c5117d 100644 +--- a/tuned/hardware/inventory.py ++++ b/tuned/hardware/inventory.py +@@ -30,7 +30,11 @@ class Inventory(object): + + def get_device(self, subsystem, sys_name): + """Get a pyudev.Device object for the sys_name (e.g. 'sda').""" +- return pyudev.Devices.from_name(self._udev_context, subsystem, sys_name) ++ try: ++ return pyudev.Devices.from_name(self._udev_context, subsystem, sys_name) ++ # workaround for pyudev < 0.18 ++ except AttributeError: ++ return pyudev.Device.from_name(self._udev_context, subsystem, sys_name) + + def get_devices(self, subsystem): + """Get list of devices on a given subsystem.""" +-- +2.9.3 + diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec index 4eec0d0..db2e543 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -1,10 +1,10 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.7.1 -Release: 3%{?dist}.2 +Version: 2.8.0 +Release: 5%{?dist} License: GPLv2+ -Source: https://fedorahosted.org/releases/t/u/tuned/tuned-%{version}.tar.bz2 -URL: https://fedorahosted.org/tuned/ +Source: https://jskarvad.fedorapeople.org/tuned/download/tuned-%{version}.tar.bz2 +URL: http://www.tuned-project.org/ BuildArch: noarch BuildRequires: python, systemd, desktop-file-utils Requires(post): systemd, virt-what @@ -14,11 +14,11 @@ Requires: python-decorator, dbus-python, pygobject3-base, python-pyudev # kernel-tools, hdparm dependencies are not met on s390 Requires: virt-what, python-configobj, ethtool, gawk Requires: util-linux, python-perf, dbus, polkit -Patch0: tuned-2.7.1-gtk-3.8.patch -Patch1: tuned-2.7.1-gui-daemon-restart-fix.patch -Patch2: tuned-2.7.1-fixed-traceback.patch -Patch3: tuned-2.7.1-non-existent-profile-timeout-fix.patch -Patch4: tuned-2.7.1-realtime-virtual-host-ktimersoftd.patch +Requires: python-linux-procfs, python-schedutils +Patch0: tuned-2.8.0-gtk-3.8.patch +Patch1: tuned-2.8.0-workaround-for-old-pyudev.patch +Patch2: tuned-2.8.0-realtime-skew-tick-and-inheritance.patch +Patch3: tuned-2.8.0-realtime-priorities-update.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -66,52 +66,79 @@ instead of fewer large ones). %package profiles-sap Summary: Additional tuned profile(s) targeted to SAP NetWeaver loads -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} %description profiles-sap Additional tuned profile(s) targeted to SAP NetWeaver loads. %package profiles-oracle Summary: Additional tuned profile(s) targeted to Oracle loads -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} %description profiles-oracle Additional tuned profile(s) targeted to Oracle loads. %package profiles-sap-hana Summary: Additional tuned profile(s) targeted to SAP HANA loads -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} %description profiles-sap-hana Additional tuned profile(s) targeted to SAP HANA loads. %package profiles-atomic Summary: Additional tuned profile(s) targeted to Atomic -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} %description profiles-atomic Additional tuned profile(s) targeted to Atomic host and guest. %package profiles-realtime Summary: Additional tuned profile(s) targeted to realtime -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} Requires: tuna %description profiles-realtime Additional tuned profile(s) targeted to realtime. +%package profiles-nfv-guest +Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) guest +Requires: %{name} = %{version} +Requires: %{name}-profiles-realtime = %{version} +Requires: tuna + +%description profiles-nfv-guest +Additional tuned profile(s) targeted to Network Function Virtualization (NFV) guest. + +%package profiles-nfv-host +Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host +Requires: %{name} = %{version} +Requires: %{name}-profiles-realtime = %{version} +Requires: tuna, qemu-kvm-tools-rhev + +%description profiles-nfv-host +Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host. + +# this is kept for backward compatibility, it should be dropped for RHEL-8 %package profiles-nfv Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) -Requires: %{name} = %{version}-%{release} -Requires: %{name}-profiles-realtime = %{version}-%{release} -Requires: tuna, qemu-kvm-tools-rhev +Requires: %{name} = %{version} +Requires: %{name}-profiles-nfv-guest = %{version} +Requires: %{name}-profiles-nfv-host = %{version} %description profiles-nfv Additional tuned profile(s) targeted to Network Function Virtualization (NFV). +%package profiles-cpu-partitioning +Summary: Additional tuned profile(s) optimized for CPU partitioning +Requires: %{name} = %{version} +Requires: tuna + +%description profiles-cpu-partitioning +Additional tuned profile(s) optimized for CPU partitioning. + %package profiles-compat Summary: Additional tuned profiles mainly for backward compatibility with tuned 1.0 -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version} %description profiles-compat Additional tuned profiles mainly for backward compatibility with tuned 1.0. @@ -123,7 +150,6 @@ It can be also used to fine tune your system for specific scenarios. %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 %build @@ -140,6 +166,9 @@ mkdir -p %{buildroot}%{_datadir}/tuned/grub2 mv %{buildroot}%{_sysconfdir}/grub.d/00_tuned %{buildroot}%{_datadir}/tuned/grub2/00_tuned rmdir %{buildroot}%{_sysconfdir}/grub.d +# ghost for persistent storage +mkdir -p %{buildroot}%{_var}/lib/tuned + # ghost for NFV mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d touch %{buildroot}%{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf @@ -162,6 +191,10 @@ fi %preun %systemd_preun tuned.service +if [ "$1" == 0 ]; then +# clear persistent storage + rm -f %{_var}/lib/tuned/* +fi %postun @@ -189,7 +222,8 @@ fi # and tuned is noarch package, thus the following hack is needed if [ -d %{_sysconfdir}/grub.d ]; then cp -a %{_datadir}/tuned/grub2/00_tuned %{_sysconfdir}/grub.d/00_tuned - selinuxenabled && restorecon %{_sysconfdir}/grub.d/00_tuned || : + selinuxenabled &>/dev/null && \ + restorecon %{_sysconfdir}/grub.d/00_tuned &>/dev/null || : fi @@ -212,6 +246,7 @@ fi %defattr(-,root,root,-) %exclude %{docdir}/README.utils %exclude %{docdir}/README.scomes +%exclude %{docdir}/README.NFV %doc %{docdir} %{_datadir}/bash-completion/completions/tuned-adm %exclude %{python_sitelib}/tuned/gtk @@ -219,6 +254,9 @@ fi %{_sbindir}/tuned %{_sbindir}/tuned-adm %exclude %{_sysconfdir}/tuned/realtime-variables.conf +%exclude %{_sysconfdir}/tuned/realtime-virtual-guest-variables.conf +%exclude %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf +%exclude %{_sysconfdir}/tuned/cpu-partitioning-variables.conf %exclude %{_prefix}/lib/tuned/default %exclude %{_prefix}/lib/tuned/desktop-powersave %exclude %{_prefix}/lib/tuned/laptop-ac-powersave @@ -235,9 +273,11 @@ fi %exclude %{_prefix}/lib/tuned/realtime %exclude %{_prefix}/lib/tuned/realtime-virtual-guest %exclude %{_prefix}/lib/tuned/realtime-virtual-host +%exclude %{_prefix}/lib/tuned/cpu-partitioning %{_prefix}/lib/tuned %dir %{_sysconfdir}/tuned %dir %{_libexecdir}/tuned +%{_libexecdir}/tuned/defirqaffinity* %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/active_profile %config(noreplace) %{_sysconfdir}/tuned/tuned-main.conf %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/bootcmdline @@ -247,12 +287,14 @@ fi %{_unitdir}/tuned.service %dir %{_localstatedir}/log/tuned %dir /run/tuned +%dir %{_var}/lib/tuned %{_mandir}/man5/tuned* %{_mandir}/man7/tuned-profiles.7* %{_mandir}/man8/tuned* %dir %{_datadir}/tuned %{_datadir}/tuned/grub2 %{_datadir}/polkit-1/actions/com.redhat.tuned.policy +%ghost %{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf %files gtk %defattr(-,root,root,-) @@ -310,15 +352,27 @@ fi %{_prefix}/lib/tuned/realtime %{_mandir}/man7/tuned-profiles-realtime.7* -%files profiles-nfv +%files profiles-nfv-guest %defattr(-,root,root,-) %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-guest-variables.conf -%config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf -%ghost %{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf %{_prefix}/lib/tuned/realtime-virtual-guest +%{_mandir}/man7/tuned-profiles-nfv-guest.7* + +%files profiles-nfv-host +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf %{_prefix}/lib/tuned/realtime-virtual-host -%{_libexecdir}/tuned/defirqaffinity* -%{_mandir}/man7/tuned-profiles-nfv.7* +%{_mandir}/man7/tuned-profiles-nfv-host.7* + +%files profiles-nfv +%defattr(-,root,root,-) +%doc %{docdir}/README.NFV + +%files profiles-cpu-partitioning +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-variables.conf +%{_prefix}/lib/tuned/cpu-partitioning +%{_mandir}/man7/tuned-profiles-cpu-partitioning.7* %files profiles-compat %defattr(-,root,root,-) @@ -332,13 +386,85 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog -* Mon Apr 10 2017 Jaroslav Škarvada - 2.7.1-3.2 -- realtime-virtual-host: accommodate new ktimersoftd thread - resolves: rhbz#1440663 - -* Tue Nov 8 2016 Jaroslav Škarvada - 2.7.1-3.1 +* Mon Jun 12 2017 Jaroslav Škarvada - 2.8.0-5 +- realtime: re-assigned kernel thread priorities + resolves: rhbz#1452357 + +* Tue Jun 6 2017 Jaroslav Škarvada - 2.8.0-4 +- added skew_tick=1 to realtime and simplified bootcmdline inheritance + resolves: rhbz#1447938 + +* Fri May 5 2017 Jaroslav Škarvada - 2.8.0-3 +- added workaround for old pyudev + related: rhbz#1251240 + +* Thu Apr 13 2017 Jaroslav Škarvada - 2.8.0-2 +- respin + related: rhbz#1388454 +- systemd: added support for older systemd CPUAffinity syntax + resolves: rhbz#1441791 +- scheduler: added workarounds for low level exceptions from + python-linux-procfs + resolves: rhbz#1441792 +- bootloader: workaround for adding tuned_initrd to new kernels on restart + resolves: rhbz#1441797 +- cpu-partitioning: use tuna for cores isolation + related: rhbz#1403309 + +* Fri Apr 7 2017 Jaroslav Škarvada - 2.8.0-1 +- new release + - rebase tuned to latest upstream + resolves: rhbz#1388454 + - cpu-partitioning: enabled timer migration + resolves: rhbz#1408308 + - cpu-partitioning: disabled kvmclock sync and ple + resolves: rhbz#1395855 + - spec: muted error if there is no selinux support + resolves: rhbz#1404214 + - units: implemented instance priority + resolves: rhbz#1246172 + - bootloader: added support for initrd overlays + resolves: rhbz#1414098 + - cpu-partitioning: set CPUAffinity early in initrd image + resolves: rhbz#1394965 + - cpu-partitioning: set workqueue affinity early + resolves: rhbz#1395899 + - scsi_host: fixed probing of ALPM, missing ALPM logged as info + resolves: rhbz#1416712 + - added new profile cpu-partitioning + resolves: rhbz#1359956 + - bootloader: improved inheritance + resolves: rhbz#1274464 + - units: mplemented udev-based regexp device matching + resolves: rhbz#1251240 + - units: introduced pre_script, post_script + resolves: rhbz#1246176 + - realtime-virtual-host: accommodate new ktimersoftd thread + resolves: rhbz#1332563 + - defirqaffinity: fixed traceback due to syntax error + resolves: rhbz#1369791 + - variables: support inheritance of variables + resolves: rhbz#1433496 + - scheduler: added support for cores isolation + resolves: rhbz#1403309 + - tuned-profiles-nfv splitted to host/guest and dropped unneeded dependency + resolves: rhbz#1413111 + - desktop: fixed typo in profile summary + resolves: rhbz#1421238 + - with systemd don't do full rollback on shutdown / reboot + resolves: rhbz#1421286 + - builtin functions: added virt_check function and support to include + resolves: rhbz#1426654 + - cpulist_present: explicitly sorted present CPUs + resolves: rhbz#1432240 + - plugin_scheduler: fixed initialization + resolves: rhbz#1433496 + - log errors when applying a profile fails + resolves: rhbz#1434360 + +* Tue Nov 8 2016 Jaroslav Škarvada - 2.7.1-4 - Fixed timeout if non-existent profile is requested - resolves: rhbz#1392942 + resolves: rhbz#1369502 * Mon Sep 12 2016 Ondřej Lysoněk - 2.7.1-3 - Fixed a traceback