diff --git a/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch b/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch new file mode 100644 index 0000000..8937adf --- /dev/null +++ b/SOURCES/tuned-2.5.1-find-lapictscdeadline-optimal-fix.patch @@ -0,0 +1,36 @@ +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-lapic-timer-adv-ns-cache-fix.patch b/SOURCES/tuned-2.5.1-lapic-timer-adv-ns-cache-fix.patch new file mode 100644 index 0000000..d200fe5 --- /dev/null +++ b/SOURCES/tuned-2.5.1-lapic-timer-adv-ns-cache-fix.patch @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000..74b10ef --- /dev/null +++ b/SOURCES/tuned-2.5.1-realtime-remove-nohz-full.patch @@ -0,0 +1,34 @@ +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-set-unbound-workqueues.patch b/SOURCES/tuned-2.5.1-realtime-set-unbound-workqueues.patch new file mode 100644 index 0000000..c5a6ca7 --- /dev/null +++ b/SOURCES/tuned-2.5.1-realtime-set-unbound-workqueues.patch @@ -0,0 +1,38 @@ +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-verification-fixes.patch b/SOURCES/tuned-2.5.1-verification-fixes.patch new file mode 100644 index 0000000..26d49a1 --- /dev/null +++ b/SOURCES/tuned-2.5.1-verification-fixes.patch @@ -0,0 +1,34 @@ +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/SPECS/tuned.spec b/SPECS/tuned.spec index a2d9568..2653011 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -1,7 +1,7 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned Version: 2.5.1 -Release: 4%{?dist} +Release: 4%{?dist}.1 License: GPLv2+ Source: https://fedorahosted.org/releases/t/u/tuned/tuned-%{version}.tar.bz2 URL: https://fedorahosted.org/tuned/ @@ -16,6 +16,16 @@ 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 %description The tuned package contains a daemon that tunes system settings dynamically. @@ -117,6 +127,11 @@ It can be also used to fine tune your system for specific scenarios. %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 %build @@ -299,6 +314,22 @@ fi %{_mandir}/man7/tuned-profiles-compat.7* %changelog +* Mon Nov 16 2015 Jaroslav Škarvada - 2.5.1-4.1 +- fixed various verification issues (by verification-fixes patch) + resolves: rhbz#1282565 +- realtime profile now sets cpumask of unbound workqueues + (by realtime-set-unbound-workqueues patch) + resolves: rhbz#1282566 +- fixed lapic_timer_adv_ns cache in realtime-virtual-host profile + (by lapic-timer-adv-ns-cache-fix patch) + resolves: rhbz#1282567 +- fixed find-lapictscdeadline-optimal-fix in realtime-virtual-host profile + (by find-lapictscdeadline-optimal-fix patch) + resolves: rhbz#1282592 +- removed nohz_full from the realtime profile (by realtime-remove-nohz-full + patch) + resolves: rhbz#1282570 + * Wed Sep 23 2015 Jaroslav Škarvada - 2.5.1-4 - grub support in post scriptlet made conditional not to break s390(x) resolves: rhbz#1265654