diff --git a/.gitignore b/.gitignore index 84c9dba..acaa05c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.5.1.tar.bz2 +SOURCES/tuned-2.7.1.tar.bz2 diff --git a/.tuned.metadata b/.tuned.metadata index 66a418a..a64257d 100644 --- a/.tuned.metadata +++ b/.tuned.metadata @@ -1 +1 @@ -998b7d8420493053f2bb9d579ec5985bfae4ee85 SOURCES/tuned-2.5.1.tar.bz2 +a9201acb6811484e5566527d5fc7e5c1f078e97e SOURCES/tuned-2.7.1.tar.bz2 diff --git a/SOURCES/tuned-2.5.1-assignment-modifiers-strip-fix.patch b/SOURCES/tuned-2.5.1-assignment-modifiers-strip-fix.patch deleted file mode 100644 index 8a0f915..0000000 --- a/SOURCES/tuned-2.5.1-assignment-modifiers-strip-fix.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/tuned/plugins/base.py b/tuned/plugins/base.py ---- a/tuned/plugins/base.py -+++ b/tuned/plugins/base.py -@@ -369,10 +369,12 @@ class Plugin(object): - def _process_assignment_modifiers(self, new_value, current_value): - if new_value is not None: - nws = str(new_value) -+ if len(nws) <= 1: -+ return new_value - op = nws[:1] - val = nws[1:] - if current_value is None: -- return new_value -+ return val if op in ["<", ">"] else new_value - try: - if op == ">": - if int(val) > int(current_value): - diff --git a/SOURCES/tuned-2.5.1-embedded-slashes-in-device-name-fix.patch b/SOURCES/tuned-2.5.1-embedded-slashes-in-device-name-fix.patch deleted file mode 100644 index 1513f65..0000000 --- a/SOURCES/tuned-2.5.1-embedded-slashes-in-device-name-fix.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/tuned/plugins/plugin_disk.py b/tuned/plugins/plugin_disk.py -index 69efbf7..8de4531 100644 ---- a/tuned/plugins/plugin_disk.py -+++ b/tuned/plugins/plugin_disk.py -@@ -200,8 +200,15 @@ class DiskPlugin(hotplug.Plugin): - def _instance_unapply_dynamic(self, instance, device): - pass - -+ def _sysfs_path(self, device, suffix, prefix = "/sys/block/"): -+ if "/" in device: -+ dev = os.path.join(prefix, device.replace("/", "!"), suffix) -+ if os.path.exists(dev): -+ return dev -+ return os.path.join(prefix, device, suffix) -+ - def _elevator_file(self, device): -- return os.path.join("/sys/block/", device, "queue/scheduler") -+ return self._sysfs_path(device, "queue/scheduler") - - @command_set("elevator", per_device=True) - def _set_elevator(self, value, device, sim): -@@ -296,7 +303,7 @@ class DiskPlugin(hotplug.Plugin): - return 253 - - def _readahead_file(self, device): -- return os.path.join("/sys/block/", device, "queue/read_ahead_kb") -+ return self._sysfs_path(device, "queue/read_ahead_kb") - - def _parse_ra(self, value): - val = str(value).split(None, 1) -@@ -342,7 +349,7 @@ class DiskPlugin(hotplug.Plugin): - self._storage.unset(storage_key) - - def _scheduler_quantum_file(self, device): -- return os.path.join("/sys/block/", device, "queue/iosched/quantum") -+ return self._sysfs_path(device, "queue/iosched/quantum") - - @command_set("scheduler_quantum", per_device=True) - def _set_scheduler_quantum(self, value, device, sim): diff --git a/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch b/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch deleted file mode 100644 index 8937adf..0000000 --- a/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 874762b4c06e3bc7862e119ee12a23a16352f649 Mon Sep 17 00:00:00 2001 -From: Marcelo Tosatti -Date: Wed, 30 Sep 2015 18:33:47 -0300 -Subject: [PATCH] tuned-profiles-nfv: fix find-lapictscdeadline-optimal.sh for - CPUS where ns > 6500 - -If the result of lapic-tsc-deadline kvm-unit-test continues -to decrease as ns increases, then use highest ns value. - -Reported and tested by Luiz and Hai. - -Signed-off-by: Marcelo Tosatti -Resolves: rhbz#1267284 ---- - profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh b/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh -index d858eb6..539c47e 100755 ---- a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh -+++ b/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh -@@ -20,5 +20,11 @@ for i in `seq 1 $lines`; do - fi - prev_value=$a - done -+# if still decreasing, then use highest ns value -+if [ $value -le 99 ]; then -+ echo -n "optimal value for lapic_timer_advance_ns is: " -+ awk "NR==$(($i - 1))" $1 | cut -f 1 -d ":" -+ exit 0 -+fi - echo optimal not found - exit 1 --- -2.4.3 - diff --git a/SOURCES/tuned-2.5.1-gtk-3.8.patch b/SOURCES/tuned-2.5.1-gtk-3.8.patch deleted file mode 100644 index d06f60d..0000000 --- a/SOURCES/tuned-2.5.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 b525e8d..871857a 100755 ---- a/tuned-gui.py -+++ b/tuned-gui.py -@@ -302,8 +302,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) -@@ -428,9 +426,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()) -@@ -446,51 +441,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.5.1-lapic-timer-adv-ns-cache-fix.patch b/SOURCES/tuned-2.5.1-lapic-timer-adv-ns-cache-fix.patch deleted file mode 100644 index d200fe5..0000000 --- a/SOURCES/tuned-2.5.1-lapic-timer-adv-ns-cache-fix.patch +++ /dev/null @@ -1,42 +0,0 @@ -From cb826c1e38a3bf68a1c169a2665d2edab72abb2d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Mon, 16 Nov 2015 17:27:18 +0100 -Subject: [PATCH] profiles: fixed lapic_timer_adv_ns cache -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Patch provided by Luiz Capitulino - -Resolves: rhbz#1259452 - -Signed-off-by: Jaroslav Škarvada ---- - profiles/realtime-virtual-host/script.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh -index 9970b8e..161052c 100755 ---- a/profiles/realtime-virtual-host/script.sh -+++ b/profiles/realtime-virtual-host/script.sh -@@ -27,7 +27,7 @@ start() { - curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq` - genmodel=`cat lapic_timer_adv_ns.cpumodel` - -- if [ "$cpumodel" != "$genmodel" ]; then -+ if [ "$curmodel" != "$genmodel" ]; then - rm -f lapic_timer_adv_ns - rm -f lapic_timer_adv_ns.cpumodel - fi -@@ -43,7 +43,7 @@ start() { - if [ $? -eq 0 ]; then - echo `cat $tempdir/opt.out | cut -f 2 -d ":"` > ./lapic_timer_adv_ns - curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq` -- echo $curmodel > lapic_timer_adv_ns.cpumodel -+ echo "$curmodel" > lapic_timer_adv_ns.cpumodel - fi - fi - fi --- -2.4.3 - diff --git a/SOURCES/tuned-2.5.1-realtime-remove-nohz-full.patch b/SOURCES/tuned-2.5.1-realtime-remove-nohz-full.patch deleted file mode 100644 index 74b10ef..0000000 --- a/SOURCES/tuned-2.5.1-realtime-remove-nohz-full.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf -index 8688057..4273ad2 100644 ---- a/profiles/realtime/tuned.conf -+++ b/profiles/realtime/tuned.conf -@@ -28,7 +28,7 @@ vm.stat_interval = 10 - # 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} nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup -+cmdline=isolcpus=${isolated_cores} intel_pstate=disable nosoftlockup - - [script] - script = script.sh -diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf ---- a/profiles/realtime-virtual-guest/tuned.conf -+++ b/profiles/realtime-virtual-guest/tuned.conf -@@ -12,3 +12,6 @@ isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} - - [script] - script=script.sh -+ -+[bootloader] -+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup -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 -@@ -40,3 +40,6 @@ group.rcub=0:f:3:*:rcub.* - - [script] - script=script.sh -+ -+[bootloader] -+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup - diff --git a/SOURCES/tuned-2.5.1-realtime-sched_rt_runtime_us-fix.patch b/SOURCES/tuned-2.5.1-realtime-sched_rt_runtime_us-fix.patch deleted file mode 100644 index 533f7d9..0000000 --- a/SOURCES/tuned-2.5.1-realtime-sched_rt_runtime_us-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf -index 301ec5f..c184561 100644 ---- a/profiles/realtime/tuned.conf -+++ b/profiles/realtime/tuned.conf -@@ -15,7 +15,7 @@ not_isolated_cpumask = ${f:cpulist2hex_invert:${isolated_cores}} - [sysctl] - kernel.hung_task_timeout_secs = 600 - kernel.nmi_watchdog = 0 --kernel.sched_rt_runtime_us = 1000000 -+kernel.sched_rt_runtime_us = -1 - vm.stat_interval = 10 - kernel.timer_migration = 0 - diff --git a/SOURCES/tuned-2.5.1-realtime-set-unbound-workqueues.patch b/SOURCES/tuned-2.5.1-realtime-set-unbound-workqueues.patch deleted file mode 100644 index c5a6ca7..0000000 --- a/SOURCES/tuned-2.5.1-realtime-set-unbound-workqueues.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 5a5986bd8bf2db1136b62f168db9255dba1b7a42 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Tue, 6 Oct 2015 11:49:56 +0200 -Subject: [PATCH] realtime: set unboud workqueues cpumask -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The latest RHEL and RT kernels got support for setting the cpumask of unbound -workqueues in sysfs (https://bugzilla.redhat.com/show_bug.cgi?id=1176155). - -This patch sets the unbound workqueues cpumask to the list of non-isolated -cores for the real-time profiles. - -Patch from Luiz Capitulino - -Resolves: rhbz#1259043 - -Signed-off-by: Jaroslav Škarvada ---- - profiles/realtime/tuned.conf | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf -index f552818..8688057 100644 ---- a/profiles/realtime/tuned.conf -+++ b/profiles/realtime/tuned.conf -@@ -20,6 +20,7 @@ vm.stat_interval = 10 - - [sysfs] - /sys/bus/workqueue/devices/writeback/cpumask = ${not_isolated_cpumask} -+/sys/devices/virtual/workqueue/cpumask = ${not_isolated_cpumask} - /sys/devices/system/machinecheck/machinecheck*/ignore_ce = 1 - - [bootloader] --- -2.4.3 - diff --git a/SOURCES/tuned-2.5.1-realtime-timer-migration.patch b/SOURCES/tuned-2.5.1-realtime-timer-migration.patch deleted file mode 100644 index 665f14e..0000000 --- a/SOURCES/tuned-2.5.1-realtime-timer-migration.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf -index 4273ad2..301ec5f 100644 ---- a/profiles/realtime/tuned.conf -+++ b/profiles/realtime/tuned.conf -@@ -17,6 +17,7 @@ kernel.hung_task_timeout_secs = 600 - kernel.nmi_watchdog = 0 - kernel.sched_rt_runtime_us = 1000000 - vm.stat_interval = 10 -+kernel.timer_migration = 0 - - [sysfs] - /sys/bus/workqueue/devices/writeback/cpumask = ${not_isolated_cpumask} diff --git a/SOURCES/tuned-2.5.1-realtime-virtual-add-rcu_nocbs.patch b/SOURCES/tuned-2.5.1-realtime-virtual-add-rcu_nocbs.patch deleted file mode 100644 index 2cf1e6d..0000000 --- a/SOURCES/tuned-2.5.1-realtime-virtual-add-rcu_nocbs.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/profiles/realtime-virtual-guest/tuned.conf b/profiles/realtime-virtual-guest/tuned.conf -index eaaf4ab..0c3b2df 100644 ---- a/profiles/realtime-virtual-guest/tuned.conf -+++ b/profiles/realtime-virtual-guest/tuned.conf -@@ -14,4 +14,4 @@ isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}} - script=script.sh - - [bootloader] --cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup -+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} intel_pstate=disable nosoftlockup -diff --git a/profiles/realtime-virtual-host/tuned.conf b/profiles/realtime-virtual-host/tuned.conf -index 51c182e..b23f832 100644 ---- a/profiles/realtime-virtual-host/tuned.conf -+++ b/profiles/realtime-virtual-host/tuned.conf -@@ -42,4 +42,4 @@ group.rcub=0:f:3:*:rcub.* - script=script.sh - - [bootloader] --cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup -+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} intel_pstate=disable nosoftlockup diff --git a/SOURCES/tuned-2.5.1-realtime-virtual-host-modprobe-race-fix.patch b/SOURCES/tuned-2.5.1-realtime-virtual-host-modprobe-race-fix.patch deleted file mode 100644 index 2422e53..0000000 --- a/SOURCES/tuned-2.5.1-realtime-virtual-host-modprobe-race-fix.patch +++ /dev/null @@ -1,154 +0,0 @@ -diff --git a/profiles/functions b/profiles/functions -index 957dfb6..ee525e0 100644 ---- a/profiles/functions -+++ b/profiles/functions -@@ -495,19 +495,21 @@ stop() { - # - - process() { -- case "$1" in -+ ARG="$1" -+ shift -+ case "$ARG" in - start) -- start -+ start "$@" - RETVAL=$? - ;; - stop) -- stop -+ stop "$@" - RETVAL=$? - ;; - verify) - if declare -f verify &> /dev/null; - then -- verify -+ verify "$@" - else - : - fi -diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh -index 161052c..9c09ee3 100755 ---- a/profiles/realtime-virtual-host/script.sh -+++ b/profiles/realtime-virtual-host/script.sh -@@ -2,8 +2,22 @@ - - . /usr/lib/tuned/functions - -+modfile=/etc/modprobe.d/kvm.rt.tuned.conf - ltanfile=/sys/module/kvm/parameters/lapic_timer_advance_ns - -+create_modfile() -+{ -+ modinfo -p kvm | grep -q kvmclock_periodic_sync -+ if [ "$?" -eq 0 ]; then -+ echo "options kvm kvmclock_periodic_sync=0" > $modfile -+ fi -+ -+ modinfo -p kvm_intel | grep -q ple_gap -+ if [ "$?" -eq 0 ]; then -+ echo "options kvm_intel ple_gap=0" >> $modfile -+ fi -+} -+ - start() { - python /usr/libexec/tuned/defirqaffinity.py "remove" "$TUNED_isolated_cores_expanded" && - tuna -c "$TUNED_isolated_cores_expanded" -i -@@ -13,14 +27,8 @@ start() { - return $retval - fi - -- modinfo -p kvm | grep -q kvmclock_periodic_sync -- if [ "$?" -eq 0 ]; then -- echo "options kvm kvmclock_periodic_sync=0" > /etc/modprobe.d/kvm.rt.tuned.conf -- fi -- -- modinfo -p kvm_intel | grep -q ple_gap -- if [ "$?" -eq 0 ]; then -- echo "options kvm_intel ple_gap=0" >> /etc/modprobe.d/kvm.rt.tuned.conf -+ if [ ! -f $modfile ]; then -+ create_modfile - fi - - if [ -f lapic_timer_adv_ns.cpumodel ]; then -@@ -55,7 +63,7 @@ start() { - } - - stop() { -- rm -f /etc/modprobe.d/kvm.rt.tuned.conf -+ [ "$1" = "profile_switch" ] && rm -f $modfile - tuna -c "$TUNED_isolated_cores_expanded" -I && - python /usr/libexec/tuned/defirqaffinity.py "add" "$TUNED_isolated_cores_expanded" - return "$?" -diff --git a/tuned.spec b/tuned.spec -index e152dac..2e2d9e9 100644 ---- a/tuned.spec -+++ b/tuned.spec -@@ -139,6 +139,10 @@ 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 NFV -+mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d -+touch %{buildroot}%{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf -+ - %post - %systemd_post tuned.service - -@@ -283,6 +287,7 @@ fi - %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 - %{_prefix}/lib/tuned/realtime-virtual-host - %{_libexecdir}/tuned/defirqaffinity* -diff --git a/tuned/plugins/plugin_script.py b/tuned/plugins/plugin_script.py -index 7b3d487..57a6335 100644 ---- a/tuned/plugins/plugin_script.py -+++ b/tuned/plugins/plugin_script.py -@@ -30,14 +30,14 @@ class ScriptPlugin(base.Plugin): - def _instance_cleanup(self, instance): - pass - -- def _call_scripts(self, scripts, argument): -+ def _call_scripts(self, scripts, arguments): - for script in scripts: - environ = os.environ - environ.update(self._variables.get_env()) -- log.info("calling script '%s' with argument '%s'" % (script, argument)) -+ log.info("calling script '%s' with arguments '%s'" % (script, str(arguments))) - log.debug("using environment '%s'" % str(environ.items())) - try: -- proc = Popen([script, argument], stdout=PIPE, stderr=PIPE, close_fds=True, env=environ, \ -+ proc = Popen([script] + arguments, stdout=PIPE, stderr=PIPE, close_fds=True, env=environ, \ - cwd = os.path.dirname(script)) - out, err = proc.communicate() - if proc.returncode: -@@ -50,13 +50,13 @@ class ScriptPlugin(base.Plugin): - - def _instance_apply_static(self, instance): - super(self.__class__, self)._instance_apply_static(instance) -- self._call_scripts(instance._scripts, "start") -+ self._call_scripts(instance._scripts, ["start"]) - - def _instance_verify_static(self, instance): - ret = True - if super(self.__class__, self)._instance_verify_static(instance) == False: - ret = False -- if self._call_scripts(instance._scripts, "verify") == True: -+ if self._call_scripts(instance._scripts, ["verify"]) == True: - log.info(consts.STR_VERIFY_PROFILE_OK % instance._scripts) - else: - log.error(consts.STR_VERIFY_PROFILE_FAIL % instance._scripts) -@@ -64,5 +64,8 @@ class ScriptPlugin(base.Plugin): - return ret - - def _instance_unapply_static(self, instance, profile_switch = False): -- self._call_scripts(reversed(instance._scripts), "stop") -+ args = ["stop"] -+ if profile_switch: -+ args = args + ["profile_switch"] -+ self._call_scripts(reversed(instance._scripts), args) - super(self.__class__, self)._instance_unapply_static(instance, profile_switch) diff --git a/SOURCES/tuned-2.5.1-restart-attempt-fix.patch b/SOURCES/tuned-2.5.1-restart-attempt-fix.patch deleted file mode 100644 index 586e874..0000000 --- a/SOURCES/tuned-2.5.1-restart-attempt-fix.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 7b4596ba21893f12181630d73d6ec99f447104bc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Mon, 31 Aug 2015 11:19:41 +0200 -Subject: [PATCH] tuned-adm: fixed restart attempt if tuned is not running -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 4db24c4..1180785 100644 ---- a/tuned/admin/admin.py -+++ b/tuned/admin/admin.py -@@ -77,7 +77,7 @@ class Admin(object): - if self._cmd.write_to_file(consts.ACTIVE_PROFILE_FILE, profile_name): - print "Trying to (re)start tuned..." - (ret, out) = self._cmd.execute(["service", "tuned", "restart"]) -- if retcode == 0: -+ if ret == 0: - print "Tuned (re)started, changes applied." - else: - print "Tuned (re)start failed, you need to (re)start tuned by hand for changes to apply." --- -2.5.0 - diff --git a/SOURCES/tuned-2.5.1-unquoting-sysctl-values.patch b/SOURCES/tuned-2.5.1-unquoting-sysctl-values.patch deleted file mode 100644 index 07f2f86..0000000 --- a/SOURCES/tuned-2.5.1-unquoting-sysctl-values.patch +++ /dev/null @@ -1,111 +0,0 @@ -From efac9c470b2a74da94c92703e87da603bf87296f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Wed, 19 Aug 2015 14:09:56 +0200 -Subject: [PATCH] plugin_sysctl: unquoting sysctl values -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Unquoting first and last quotation mark in value, i.e. converting: -OPTION="VALUE" to OPTION=VALUE - -Also added unquoting to profile verification, unquoting both -(current and requested) values. - -Resolves: rhbz#1254538 - -Signed-off-by: Jaroslav Škarvada ---- - tuned/plugins/base.py | 7 +++++-- - tuned/plugins/plugin_bootloader.py | 5 +---- - tuned/plugins/plugin_sysctl.py | 2 +- - tuned/utils/commands.py | 3 +++ - 4 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/tuned/plugins/base.py b/tuned/plugins/base.py -index e7ff2d2..3b4652a 100644 ---- a/tuned/plugins/base.py -+++ b/tuned/plugins/base.py -@@ -3,6 +3,7 @@ import tuned.consts as consts - import tuned.profiles.variables - import tuned.logs - import collections -+from tuned.utils.commands import commands - - log = tuned.logs.get() - -@@ -35,6 +36,8 @@ class Plugin(object): - - self._options_used_by_dynamic = self._get_config_options_used_by_dynamic() - -+ self._cmd = commands() -+ - def cleanup(self): - self.destroy_instances() - -@@ -415,10 +418,10 @@ class Plugin(object): - command["set"](new_value, sim = False) - - def _norm_value(self, value): -- v = str(value) -+ v = self._cmd.unquote(str(value)) - if re.match(r'\s*(0+,)+[\da-fA-F]*\s*$', v): - return re.sub(r'^\s*(0+,)+', "", v) -- return value -+ return v - - def _verify_value(self, name, new_value, current_value, device = None): - if new_value is None: -diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py -index e0ff646..27b7132 100644 ---- a/tuned/plugins/plugin_bootloader.py -+++ b/tuned/plugins/plugin_bootloader.py -@@ -105,9 +105,6 @@ class BootloaderPlugin(base.Plugin): - self._grub2_default_env_patch() - return True - -- def _unquote(self, v): -- return re.sub("^\"(.*)\"$", r"\1", v) -- - @command_custom("grub2_cfg_file") - def _grub2_cfg_file(self, enabling, value, verify): - # nothing to verify -@@ -118,7 +115,7 @@ class BootloaderPlugin(base.Plugin): - - @command_custom("cmdline", per_device = False, priority = 10) - def _cmdline(self, enabling, value, verify): -- v = self._variables.expand(self._unquote(value)) -+ v = self._variables.expand(self._cmd.unquote(value)) - if verify: - cmdline = self._cmd.read_file("/proc/cmdline") - if len(cmdline) == 0: -diff --git a/tuned/plugins/plugin_sysctl.py b/tuned/plugins/plugin_sysctl.py -index 676fd52..70f27af 100644 ---- a/tuned/plugins/plugin_sysctl.py -+++ b/tuned/plugins/plugin_sysctl.py -@@ -43,7 +43,7 @@ class SysctlPlugin(base.Plugin): - original_value = self._read_sysctl(option) - if original_value != None: - instance._sysctl_original[option] = original_value -- self._write_sysctl(option, self._variables.expand(value)) -+ self._write_sysctl(option, self._variables.expand(self._cmd.unquote(value))) - - self._storage.set("options", instance._sysctl_original) - -diff --git a/tuned/utils/commands.py b/tuned/utils/commands.py -index 4c80783..2392a89 100644 ---- a/tuned/utils/commands.py -+++ b/tuned/utils/commands.py -@@ -30,6 +30,9 @@ class commands: - def remove_ws(self, s): - return re.sub('\s+', ' ', s).strip() - -+ def unquote(self, v): -+ return re.sub("^\"(.*)\"$", r"\1", v) -+ - # convert dictionary 'd' to flat list and return it - # it uses sort on the dictionary items to return consistent results - # for directories with different inserte/delete history --- -2.4.3 - diff --git a/SOURCES/tuned-2.5.1-verification-fixes.patch b/SOURCES/tuned-2.5.1-verification-fixes.patch deleted file mode 100644 index 26d49a1..0000000 --- a/SOURCES/tuned-2.5.1-verification-fixes.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/tuned/admin/admin.py b/tuned/admin/admin.py -index 53f27e7..4db24c4 100644 ---- a/tuned/admin/admin.py -+++ b/tuned/admin/admin.py -@@ -125,8 +125,9 @@ class Admin(object): - print "Verfication succeeded, current system settings match the preset profile." - else: - print "Verification failed, current system settings differ from the preset profile." -- print "See tuned.log for details. You can mostly fix this by Tuned restart, e.g.:" -+ print "You can mostly fix this by Tuned restart, e.g.:" - print " service tuned restart" -+ print "See tuned log file ('%s') for details." % consts.LOG_FILE - return ret - - def off(self): -diff --git a/tuned/plugins/plugin_sysctl.py b/tuned/plugins/plugin_sysctl.py -index 70f27af..0ee1111 100644 ---- a/tuned/plugins/plugin_sysctl.py -+++ b/tuned/plugins/plugin_sysctl.py -@@ -51,8 +51,12 @@ class SysctlPlugin(base.Plugin): - ret = True - for option, value in instance._sysctl.iteritems(): - curr_val = self._read_sysctl(option) -- if self._verify_value(option, self._cmd.remove_ws(self._variables.expand(value)), curr_val) == False: -- ret = False -+ if curr_val is None: -+ log.warn("verify: option '%s' is None, option is probably unavailable/unsupported on your system, skipping it", -+ str(option)) -+ else: -+ if self._verify_value(option, self._cmd.remove_ws(self._variables.expand(value)), curr_val) == False: -+ ret = False - return ret - - def _instance_unapply_static(self, instance, profile_switch = False): diff --git a/SOURCES/tuned-2.7.1-fixed-traceback.patch b/SOURCES/tuned-2.7.1-fixed-traceback.patch new file mode 100644 index 0000000..6ab21da --- /dev/null +++ b/SOURCES/tuned-2.7.1-fixed-traceback.patch @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..62b3dec --- /dev/null +++ b/SOURCES/tuned-2.7.1-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 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 new file mode 100644 index 0000000..2245e67 --- /dev/null +++ b/SOURCES/tuned-2.7.1-gui-daemon-restart-fix.patch @@ -0,0 +1,13 @@ +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/SPECS/tuned.spec b/SPECS/tuned.spec index 269b9cf..8858164 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -1,45 +1,22 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.5.1 -Release: 4%{?dist}.6 +Version: 2.7.1 +Release: 3%{?dist} License: GPLv2+ Source: https://fedorahosted.org/releases/t/u/tuned/tuned-%{version}.tar.bz2 URL: https://fedorahosted.org/tuned/ BuildArch: noarch -BuildRequires: python, systemd +BuildRequires: python, systemd, desktop-file-utils Requires(post): systemd, virt-what Requires(preun): systemd Requires(postun): systemd 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 -Patch0: tuned-2.5.1-gtk-3.8.patch -Patch1: tuned-2.5.1-unquoting-sysctl-values.patch -# rhbz#1282565 -Patch2: tuned-2.5.1-verification-fixes.patch -# rhbz#1282566 -Patch3: tuned-2.5.1-realtime-set-unbound-workqueues.patch -# rhbz#1282567 -Patch4: tuned-2.5.1-lapic-timer-adv-ns-cache-fix.patch -# rhbz#1282592 -Patch5: tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch -# rhbz#1282570 -Patch6: tuned-2.5.1-realtime-remove-nohz-full.patch -# rhbz#1298204 -Patch7: tuned-2.5.1-realtime-virtual-host-modprobe-race-fix.patch -# rhbz#1305903 -Patch8: tuned-2.5.1-restart-attempt-fix.patch -# rhbz#1353142 -Patch9: tuned-2.5.1-assignment-modifiers-strip-fix.patch -# rhbz#1353142 -Patch10: tuned-2.5.1-embedded-slashes-in-device-name-fix.patch -# rhbz#1360800 -Patch11: tuned-2.5.1-realtime-timer-migration.patch -# rhbz#1367502 -Patch12: tuned-2.5.1-realtime-virtual-add-rcu_nocbs.patch -# rhbz#1372190 -Patch13: tuned-2.5.1-realtime-sched_rt_runtime_us-fix.patch +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 %description The tuned package contains a daemon that tunes system settings dynamically. @@ -62,7 +39,7 @@ Requires: %{name} = %{version}-%{release} Requires: powertop, pygobject3-base, polkit %description gtk -GTK GUI that can control tuned and provide simple profile editor. +GTK GUI that can control tuned and provides simple profile editor. %package utils Requires: %{name} = %{version}-%{release} @@ -123,7 +100,8 @@ Additional tuned profile(s) targeted to realtime. %package profiles-nfv Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) -Requires: %{name} = %{version}-%{release}, %{name}-profiles-realtime = %{version}-%{release} +Requires: %{name} = %{version}-%{release} +Requires: %{name}-profiles-realtime = %{version}-%{release} Requires: tuna, qemu-kvm-tools-rhev %description profiles-nfv @@ -142,18 +120,6 @@ It can be also used to fine tune your system for specific scenarios. %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 - %build @@ -174,6 +140,9 @@ rmdir %{buildroot}%{_sysconfdir}/grub.d mkdir -p %{buildroot}%{_sysconfdir}/modprobe.d touch %{buildroot}%{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf +# validate desktop file +desktop-file-validate %{buildroot}%{_datadir}/applications/tuned-gui.desktop + %post %systemd_post tuned.service @@ -200,7 +169,7 @@ if [ "$1" == 0 ]; then rm -f %{_sysconfdir}/grub.d/00_tuned || : # unpatch /etc/default/grub if [ -r "%{_sysconfdir}/default/grub" ]; then - sed -i '/GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \\$tuned_params"/d' %{_sysconfdir}/default/grub + sed -i '/GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT:+$GRUB_CMDLINE_LINUX_DEFAULT }\\$tuned_params"/d' %{_sysconfdir}/default/grub fi fi @@ -216,15 +185,30 @@ 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 || : +fi + + +%post gtk +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + + +%postun gtk +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : fi +%posttrans gtk +/usr/bin/gtk-update-icon-cache -f %{_datadir}/icons/hicolor &>/dev/null || : + + %files %defattr(-,root,root,-) -%doc AUTHORS -%doc COPYING -%doc README -%doc doc/TIPS.txt +%exclude %{docdir}/README.utils +%exclude %{docdir}/README.scomes +%doc %{docdir} %{_datadir}/bash-completion/completions/tuned-adm %exclude %{python_sitelib}/tuned/gtk %{python_sitelib}/tuned @@ -254,6 +238,7 @@ fi %config(noreplace) %{_sysconfdir}/tuned/tuned-main.conf %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/bootcmdline %{_sysconfdir}/dbus-1/system.d/com.redhat.tuned.conf +%verify(not size mtime md5) %{_sysconfdir}/modprobe.d/tuned.conf %{_tmpfilesdir}/tuned.conf %{_unitdir}/tuned.service %dir %{_localstatedir}/log/tuned @@ -263,13 +248,16 @@ fi %{_mandir}/man8/tuned* %dir %{_datadir}/tuned %{_datadir}/tuned/grub2 +%{_datadir}/polkit-1/actions/com.redhat.tuned.policy %files gtk %defattr(-,root,root,-) %{_sbindir}/tuned-gui %{python_sitelib}/tuned/gtk %{_datadir}/tuned/ui -%{_datadir}/polkit-1/actions/org.tuned.gui.policy +%{_datadir}/polkit-1/actions/com.redhat.tuned.gui.policy +%{_datadir}/icons/hicolor/scalable/apps/tuned.svg +%{_datadir}/applications/tuned-gui.desktop %files utils %doc COPYING @@ -340,48 +328,99 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog -* Thu Sep 1 2016 Jaroslav Škarvada - 2.5.1-4.6 -- realtime: fixed kernel.sched_rt_runtime_us to be -1 - resolves: rhbz#1372190 - -* Fri Aug 19 2016 Jaroslav Škarvada - 2.5.1-4.5 -- realtime: disabled timer migration - resolves: rhbz#1360800 -- realtime-virtual-host/guest: added rcu_nocbs kernel boot parameter - resolves: rhbz#1334479 - -* Wed Aug 3 2016 Jaroslav Škarvada - 2.5.1-4.4 -- fixed traceback by always stripping assignment modifiers even if not used - (by assignment-modifiers-strip-fix patch) - resolves: rhbz#1363682 -- added workaround for embedded slashes in device names - (by embedded-slashes-in-device-name-fix patch) - related: rhbz#1363682 - -* Tue Feb 9 2016 Jaroslav Škarvada - 2.5.1-4.3 +* Mon Sep 12 2016 Ondřej Lysoněk - 2.7.1-3 +- Fixed a traceback + resolves: rhbz#1372298 + +* Wed Aug 10 2016 Jaroslav Škarvada - 2.7.1-2 +- fixed Tuned restart from GUI + resolves: rhbz#1365533 + +* Tue Aug 2 2016 Jaroslav Škarvada - 2.7.1-1 +- - new-release + - rebase tuned to latest upstream + resolves: rhbz#1289048 + - gui: fixed traceback caused by DBus paths copy&paste error + related: rhbz#1356369 + - tuned-adm: fixed traceback of 'tuned-adm list' if daemon is not running + resolves: rhbz#1358857 + +* Tue Jul 19 2016 Jaroslav Škarvada - 2.7.0-1 +- new-release + - rebase tuned to latest upstream + resolves: rhbz#1289048 + - gui: fixed save profile + resolves: rhbz#1242491 + - tuned-adm: added --ignore-missing parameter + resolves: rhbz#1243807 + - plugin_vm: added transparent_hugepage alias + resolves: rhbz#1249610 + - plugins: added modules plugin + resolves: rhbz#1249618 + - plugin_cpu: do not show error if cpupower or x86_energy_perf_policy are + missing + resolves: rhbz#1254417 + - tuned-adm: fixed restart attempt if tuned is not running + resolves: rhbz#1258755 + - nfv: avoided race condition by using synchronous mode + resolves: rhbz#1259039 + - realtime: added check for isolcpus sanity + resolves: rhbz#1264128 + - pm_qos: fixed exception if PM_QoS is not available + resolves: rhbz#1296137 + - plugin_sysctl: reapply system sysctl after Tuned sysctl are applied + resolves: rhbz#1302953 + - atomic: increase number of inotify watches + resolves: rhbz#1322001 + - realtime-virtual-host/guest: added rcu_nocbs kernel boot parameter + resolves: rhbz#1334479 + - realtime: fixed kernel.sched_rt_runtime_us to be -1 + resolves: rhbz#1346715 + - tuned-adm: fixed detection of no_daemon mode + resolves: rhbz#1351536 + - plugin_base: correctly strip assignment modifiers even if not used + resolves: rhbz#1353142 + - plugin_disk: try to workaround embedded '/' in device names + related: rhbz#1353142 + - sap-hana: explicitly setting kernel.numa_balancing = 0 for better performance + resolves: rhbz#1355768 + - libexec: fixed listdir and isdir in defirqaffinity.py + resolves: rhbz#1252160 + - plugin_cpu: save and restore only intel pstate attributes that were changed + resolves: rhbz#1252156 + - functions: fixed sysfs save to work with options + resolves: rhbz#1251507 + - functions: fixed restore_logs_syncing to preserve SELinux context on rsyslog.conf + resolves: rhbz#1268901 + - spec: correctly remove tuned footprint from /etc/default/grub + resolves: rhbz#1268845 + - gui: fixed creation of new profile + resolves: rhbz#1274609 + +* Tue Feb 9 2016 Jaroslav Škarvada - 2.5.1-7 - fixed traceback during restart attempt - resolves: rhbz#1305903 + resolves: rhbz#1265660 -* Wed Jan 13 2016 Jaroslav Škarvada - 2.5.1-4.2 +* Wed Jan 13 2016 Jaroslav Škarvada - 2.5.1-6 - fixed race in modprobe in realtime-virtual-host profile and extended stop action to have hint why it is called - resolves: rhbz#1298204 + resolves: rhbz#1292117 -* Mon Nov 16 2015 Jaroslav Škarvada - 2.5.1-4.1 +* Mon Nov 16 2015 Jaroslav Škarvada - 2.5.1-5 - fixed various verification issues (by verification-fixes patch) - resolves: rhbz#1282565 + resolves: rhbz#1252153 - realtime profile now sets cpumask of unbound workqueues (by realtime-set-unbound-workqueues patch) - resolves: rhbz#1282566 + resolves: rhbz#1259043 - fixed lapic_timer_adv_ns cache in realtime-virtual-host profile (by lapic-timer-adv-ns-cache-fix patch) - resolves: rhbz#1282567 + resolves: rhbz#1259452 - fixed find-lapictscdeadline-optimal-fix in realtime-virtual-host profile (by find-lapictscdeadline-optimal-fix patch) - resolves: rhbz#1282592 + resolves: rhbz#1267284 - removed nohz_full from the realtime profile (by realtime-remove-nohz-full patch) - resolves: rhbz#1282570 + resolves: rhbz#1274486 * Wed Sep 23 2015 Jaroslav Škarvada - 2.5.1-4 - grub support in post scriptlet made conditional not to break s390(x)