import tuned-2.15.0-2.el8

This commit is contained in:
CentOS Sources 2021-05-18 02:39:44 -04:00 committed by Andrew Lukoshko
parent e23e65f800
commit 619ca6c376
8 changed files with 244 additions and 350 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/tuned-2.14.0.tar.gz
SOURCES/tuned-2.15.0.tar.gz

View File

@ -1 +1 @@
53140aba44d956fac19c37c2c0052835c1fdd7e9 SOURCES/tuned-2.14.0.tar.gz
bfb3def0b687bbdae2b3e191d2fda46b3ffca1c0 SOURCES/tuned-2.15.0.tar.gz

View File

@ -1,30 +0,0 @@
From f511ad5d48f4f2ae3b2616463bc3a17bae5bdb90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Tue, 30 Jun 2020 15:39:18 +0200
Subject: [PATCH] throughput-performance: fix performance regression on AMD
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It turned out that disablement of the numa_balancing could result in
upto 20% performance drop on some loads.
Related: rhbz#1746957
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
profiles/throughput-performance/tuned.conf | 1 -
1 file changed, 1 deletion(-)
diff --git a/profiles/throughput-performance/tuned.conf b/profiles/throughput-performance/tuned.conf
index f1a6f1a..3cc6fd1 100644
--- a/profiles/throughput-performance/tuned.conf
+++ b/profiles/throughput-performance/tuned.conf
@@ -85,4 +85,3 @@ type=sysctl
uname_regex=x86_64
cpuinfo_regex=${amd_cpuinfo_regex}
kernel.sched_migration_cost_ns=5000000
-kernel.numa_balancing=0
--
2.25.4

View File

@ -1,95 +0,0 @@
From a0fd433e874a0fbdd8c43ae42d25969550311b9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Sun, 29 Nov 2020 21:34:15 +0100
Subject: [PATCH] bootloader: fixed cmdline duplication with BLS and
grub2-mkconfig
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
After application of this patch in order to get rid of the duplicated
kernel command line options (which was duplicated due to the usage of
the grub2-mkconfig), the grub2-mkconfig needs to be run again.
We do not run it automatically in the spec file %post not to break
users not using grub2-mkconfig.
This fix expects that user has not modified the line containing the
GRUB_CMDLINE_LINUX_DEFAULT option and the $tuned_params in the
/etc/default/grub file. If user modified this line, the option
duplication may still occure. In such case, please remove the
$tuned_params from the /etc/default/grub by hand.
Resolves: rhbz#1777874
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
tuned/plugins/plugin_bootloader.py | 34 +++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py
index 8ca5b8a1..416df7d6 100644
--- a/tuned/plugins/plugin_bootloader.py
+++ b/tuned/plugins/plugin_bootloader.py
@@ -35,6 +35,7 @@ def _instance_init(self, instance):
self._cmdline_val = ""
self._initrd_val = ""
self._grub2_cfg_file_names = self._get_grub2_cfg_files()
+ self._bls = self._bls_enabled()
def _instance_cleanup(self, instance):
pass
@@ -88,6 +89,15 @@ def _get_grub2_cfg_files(self):
cfg_files.append(f)
return cfg_files
+ def _bls_enabled(self):
+ grub2_default_env = self._cmd.read_file(consts.GRUB2_DEFAULT_ENV_FILE)
+ if len(grub2_default_env) <= 0:
+ log.info("cannot read '%s'" % consts.GRUB2_DEFAULT_ENV_FILE)
+ return False
+
+ return re.search(r"^\s*GRUB_ENABLE_BLSCFG\s*=\s*\"?\s*[tT][rR][uU][eE]\s*\"?\s*$", grub2_default_env,
+ flags = re.MULTILINE) is not None
+
def _patch_bootcmdline(self, d):
return self._cmd.add_modify_option_in_file(consts.BOOT_CMDLINE_FILE, d)
@@ -154,6 +164,25 @@ def _grub2_default_env_patch(self):
self._cmd.write_to_file(consts.GRUB2_DEFAULT_ENV_FILE, grub2_default_env)
return True
+ def _grub2_default_env_unpatch(self):
+ grub2_default_env = self._cmd.read_file(consts.GRUB2_DEFAULT_ENV_FILE)
+ if len(grub2_default_env) <= 0:
+ log.info("cannot read '%s'" % consts.GRUB2_DEFAULT_ENV_FILE)
+ return False
+
+ write = False
+ if re.search(r"^GRUB_CMDLINE_LINUX_DEFAULT=\"\$\{GRUB_CMDLINE_LINUX_DEFAULT:\+\$GRUB_CMDLINE_LINUX_DEFAULT \}\\\$" +
+ consts.GRUB2_TUNED_VAR + "\"$", grub2_default_env, flags = re.MULTILINE):
+ write = True
+ cfg = re.sub(r"^GRUB_CMDLINE_LINUX_DEFAULT=\"\$\{GRUB_CMDLINE_LINUX_DEFAULT:\+\$GRUB_CMDLINE_LINUX_DEFAULT \}\\\$" +
+ consts.GRUB2_TUNED_VAR + "\"$\n", "", grub2_default_env, flags = re.MULTILINE)
+ if cfg[-1] != "\n":
+ cfg += "\n"
+ if write:
+ log.debug("unpatching '%s'" % consts.GRUB2_DEFAULT_ENV_FILE)
+ self._cmd.write_to_file(consts.GRUB2_DEFAULT_ENV_FILE, cfg)
+ return True
+
def _grub2_cfg_patch(self, d):
log.debug("patching grub.cfg")
if not self._grub2_cfg_file_names:
@@ -180,7 +209,10 @@ def _grub2_cfg_patch(self, d):
if patch_initial:
grub2_cfg_new = self._grub2_cfg_patch_initial(self._grub2_cfg_unpatch(grub2_cfg), d)
self._cmd.write_to_file(f, grub2_cfg_new)
- self._grub2_default_env_patch()
+ if self._bls:
+ self._grub2_default_env_unpatch()
+ else:
+ self._grub2_default_env_patch()
return True
def _grub2_update(self):

View File

@ -1,143 +0,0 @@
diff --git a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh b/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
deleted file mode 100755
index 539c47e..0000000
--- a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-: ${1?"Usage: $0 latency-file"}
-
-lines=`wc -l $1 | cut -f 1 -d " "`
-in_range=0
-prev_value=1
-for i in `seq 1 $lines`; do
- a=`awk "NR==$i" $1 | cut -f 2 -d ":"`
- value=$(($a*100/$prev_value))
- if [ $value -ge 98 -a $value -le 102 ]; then
- in_range=$(($in_range + 1))
- else
- in_range=0
- fi
- if [ $in_range -ge 2 ]; then
- echo -n "optimal value for lapic_timer_advance_ns is: "
- awk "NR==$(($i - 1))" $1 | cut -f 1 -d ":"
- exit 0
- 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
diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh
index edae6c5..a11dac7 100755
--- a/profiles/realtime-virtual-host/script.sh
+++ b/profiles/realtime-virtual-host/script.sh
@@ -2,102 +2,13 @@
. /usr/lib/tuned/functions
-CACHE_VALUE_FILE=./lapic_timer_adv_ns
-CACHE_CPU_FILE=./lapic_timer_adv_ns.cpumodel
-KVM_LAPIC_FILE=/sys/module/kvm/parameters/lapic_timer_advance_ns
KTIMER_LOCKLESS_FILE=/sys/kernel/ktimer_lockless_check
-QEMU=$(type -P qemu-kvm || echo /usr/libexec/qemu-kvm)
-TSCDEADLINE_LATENCY="/usr/share/qemu-kvm/tscdeadline_latency.flat"
-[ -f "$TSCDEADLINE_LATENCY" ] || TSCDEADLINE_LATENCY="/usr/share/tuned-profiles-nfv-host-bin/tscdeadline_latency.flat"
-[ -f "$TSCDEADLINE_LATENCY" ] || TSCDEADLINE_LATENCY="/usr/share/tuned/tscdeadline_latency.flat"
-
-run_tsc_deadline_latency()
-{
- dir=`mktemp -d`
-
- for i in `seq 1000 500 7000`; do
- echo $i > $KVM_LAPIC_FILE
-
- unixpath=`mktemp`
-
- chrt -f 1 $QEMU -S -enable-kvm -device pc-testdev \
- -device isa-debug-exit,iobase=0xf4,iosize=0x4 \
- -display none -serial stdio -device pci-testdev \
- -kernel "$TSCDEADLINE_LATENCY" \
- -cpu host,tsc-deadline=on \
- -mon chardev=char0,mode=readline \
- -chardev socket,id=char0,nowait,path=$unixpath,server | grep latency | cut -f 2 -d ":" > $dir/out &
-
- sleep 1s
- pidofvcpu=`echo "info cpus" | ncat -U $unixpath | grep thread_id | cut -f 3 -d "=" | tr -d "\r"`
- taskset -p -c $1 $pidofvcpu >/dev/null
- echo "cont" | ncat -U $unixpath >/dev/null
- wait
-
- if [ ! -f $dir/out ]; then
- die running $TSCDEADLINE_LATENCY failed
- fi
-
- tmp=$(wc -l $dir/out | awk '{ print $1 }')
- if [ $tmp -eq 0 ]; then
- die running $TSCDEADLINE_LATENCY failed
- fi
-
- A=0
- while read l; do
- A=$(($A+$l))
- done < $dir/out
-
- lines=`wc -l $dir/out | cut -f 1 -d " "`
- ans=$(($A/$lines))
- echo $i: $ans
- done
-}
start() {
setup_kvm_mod_low_latency
disable_ksm
- # If CPU model has changed, clean the cache
- if [ -f $CACHE_CPU_FILE ]; then
- curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq`
- if [ -z "$curmodel" ]; then
- die failed to read CPU model
- fi
-
- genmodel=`cat $CACHE_CPU_FILE`
-
- if [ "$curmodel" != "$genmodel" ]; then
- rm -f $CACHE_VALUE_FILE
- rm -f $CACHE_CPU_FILE
- fi
- fi
-
- # If the cache is empty, find the best lapic_timer_advance_ns value
- # and cache it
-
- if [ ! -f $KVM_LAPIC_FILE ]; then
- die $KVM_LAPIC_FILE not found
- fi
-
- if [ ! -f $CACHE_VALUE_FILE ]; then
- if [ -f "$TSCDEADLINE_LATENCY" ]; then
- tempdir=`mktemp -d`
- isolatedcpu=`echo "$TUNED_isolated_cores_expanded" | cut -f 1 -d ","`
- run_tsc_deadline_latency $isolatedcpu > $tempdir/lat.out
- if ! ./find-lapictscdeadline-optimal.sh $tempdir/lat.out > $tempdir/opt.out; then
- die could not find optimal latency
- fi
- echo `cat $tempdir/opt.out | cut -f 2 -d ":"` > $CACHE_VALUE_FILE
- curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq`
- echo "$curmodel" > $CACHE_CPU_FILE
- fi
- fi
-
- if [ -f $CACHE_VALUE_FILE ]; then
- echo `cat $CACHE_VALUE_FILE` > $KVM_LAPIC_FILE
- fi
systemctl start rt-entsk
if [ -f $KTIMER_LOCKLESS_FILE ]; then

View File

@ -1,55 +0,0 @@
From daf02c380515b42db06d9f743070af5ab248a414 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Fri, 3 Jul 2020 12:17:03 +0200
Subject: [PATCH] scheduler: fix isolated_cores to work with cgroups
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It seems cpuset.cpus needs to be initialized before writing to tasks.
Related: rhbz#1784648
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
tuned/plugins/plugin_scheduler.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py
index 745ee4a..9ad9f54 100644
--- a/tuned/plugins/plugin_scheduler.py
+++ b/tuned/plugins/plugin_scheduler.py
@@ -106,6 +106,7 @@ class SchedulerPlugin(base.Plugin):
# calculated by isolated_cores setter
self._affinity = None
+ self._cgroup_affinity_initialized = False
self._cgroup = None
self._cgroups = collections.OrderedDict([(self._sanitize_cgroup_path(option[7:]), self._variables.expand(affinity))
for option, affinity in instance.options.items() if option[:7] == "cgroup." and len(option) > 7])
@@ -478,11 +479,14 @@ class SchedulerPlugin(base.Plugin):
log.error("Unable to set affinity '%s' for cgroup '%s'" % (affinity, cgroup))
def _cgroup_set_affinity(self):
+ if self._cgroup_affinity_initialized:
+ return
log.debug("Setting cgroups affinities")
if self._affinity is not None and self._cgroup is not None and not self._cgroup in self._cgroups:
self._cgroup_set_affinity_one(self._cgroup, self._affinity, backup = True)
for cg in self._cgroups.items():
self._cgroup_set_affinity_one(cg[0], cg[1], backup = True)
+ self._cgroup_affinity_initialized = True
def _cgroup_restore_affinity(self):
log.debug("Restoring cgroups affinities")
@@ -920,6 +924,7 @@ class SchedulerPlugin(base.Plugin):
return self._verify_all_irq_affinity(affinity, ignore_missing)
elif enabling:
if self._cgroup:
+ self._cgroup_set_affinity()
ps_affinity = "cgroup.%s" % self._cgroup
else:
ps_affinity = affinity
--
2.25.4

View File

@ -0,0 +1,168 @@
diff --git a/profiles/realtime/realtime-variables.conf b/profiles/realtime/realtime-variables.conf
index c2da595..9d929e0 100644
--- a/profiles/realtime/realtime-variables.conf
+++ b/profiles/realtime/realtime-variables.conf
@@ -9,3 +9,11 @@
# kernel supports it.
#
# isolate_managed_irq=Y
+#
+#
+# Set the desired combined queue count value using the parameter provided
+# below. Ideally this should be set to the number of housekeeping CPUs i.e.,
+# in the example given below it is assumed that the system has 4 housekeeping
+# (non-isolated) CPUs.
+#
+# netdev_queue_count=4
diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf
index 8eed36e..2400849 100644
--- a/profiles/realtime/tuned.conf
+++ b/profiles/realtime/tuned.conf
@@ -35,6 +35,9 @@ assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_exp
isolate_managed_irq = ${isolate_managed_irq}
managed_irq=${f:regex_search_ternary:${isolate_managed_irq}:\b[y,Y,1,t,T]\b:managed_irq,domain,:}
+[net]
+channels=combined ${f:check_net_queue_count:${netdev_queue_count}}
+
[sysctl]
kernel.hung_task_timeout_secs = 600
kernel.nmi_watchdog = 0
diff --git a/tuned/profiles/functions/function_check_net_queue_count.py b/tuned/profiles/functions/function_check_net_queue_count.py
new file mode 100644
index 0000000..eb54f98
--- /dev/null
+++ b/tuned/profiles/functions/function_check_net_queue_count.py
@@ -0,0 +1,22 @@
+import tuned.logs
+from . import base
+
+log = tuned.logs.get()
+
+class check_net_queue_count(base.Function):
+ """
+ Checks whether the user has specified a queue count for net devices. If
+ not, return the number of housekeeping CPUs.
+ """
+ def __init__(self):
+ # 1 argument
+ super(check_net_queue_count, self).__init__("check_net_queue_count", 1, 1)
+
+ def execute(self, args):
+ if not super(check_net_queue_count, self).execute(args):
+ return None
+ if args[0].isdigit():
+ return args[0]
+ (ret, out) = self._cmd.execute(["nproc"])
+ log.warn("net-dev queue count is not correctly specified, setting it to HK CPUs %s" % (out))
+ return out
diff --git a/tuned/plugins/plugin_net.py b/tuned/plugins/plugin_net.py
index 4d4c19e..a20d87e 100644
--- a/tuned/plugins/plugin_net.py
+++ b/tuned/plugins/plugin_net.py
@@ -122,6 +122,13 @@ class NetTuningPlugin(base.Plugin):
"rx-jumbo": None,
"tx": None }
+ @classmethod
+ def _get_config_options_channels(cls):
+ return { "rx": None,
+ "tx": None,
+ "other": None,
+ "combined": None }
+
@classmethod
def _get_config_options(cls):
return {
@@ -132,6 +139,7 @@ class NetTuningPlugin(base.Plugin):
"coalesce": None,
"pause": None,
"ring": None,
+ "channels": None,
}
def _init_stats_and_idle(self, instance, device):
@@ -282,7 +290,8 @@ class NetTuningPlugin(base.Plugin):
params = set(d.keys())
supported_getter = { "coalesce": self._get_config_options_coalesce, \
"pause": self._get_config_options_pause, \
- "ring": self._get_config_options_ring }
+ "ring": self._get_config_options_ring, \
+ "channels": self._get_config_options_channels }
supported = set(supported_getter[context]().keys())
if not params.issubset(supported):
log.error("unknown %s parameter(s): %s" % (context, str(params - supported)))
@@ -313,6 +322,29 @@ class NetTuningPlugin(base.Plugin):
l = [x for x in [re.split(r":\s*", x) for x in l] if len(x) == 2]
return dict(l)
+ # parse output of ethtool -l
+ def _parse_channels_parameters(self, s):
+ a = re.split(r"^Current hardware settings:$", s, flags=re.MULTILINE)
+ s = a[1]
+ s = self._cmd.multiple_re_replace(\
+ {"RX": "rx",
+ "TX": "tx",
+ "Other": "other",
+ "Combined": "combined"}, s)
+ l = s.split("\n")
+ l = [x for x in l if x != '']
+ l = [x for x in [re.split(r":\s*", x) for x in l] if len(x) == 2]
+ return dict(l)
+
+ def _replace_channels_parameters(self, context, params_list, dev_params):
+ mod_params_list = []
+ if "combined" in params_list:
+ mod_params_list.extend(["rx", params_list[1], "tx", params_list[1]])
+ else:
+ cnt = str(max(int(params_list[1]), int(params_list[3])))
+ mod_params_list.extend(["combined", cnt])
+ return dict(list(zip(mod_params_list[::2], mod_params_list[1::2])))
+
def _check_device_support(self, context, parameters, device, dev_params):
"""Filter unsupported parameters and log warnings about it
@@ -337,7 +369,8 @@ class NetTuningPlugin(base.Plugin):
parameters.pop(param, None)
def _get_device_parameters(self, context, device):
- context2opt = { "coalesce": "-c", "features": "-k", "pause": "-a", "ring": "-g" }
+ context2opt = { "coalesce": "-c", "features": "-k", "pause": "-a", "ring": "-g", \
+ "channels": "-l"}
opt = context2opt[context]
ret, value = self._cmd.execute(["ethtool", opt, device])
if ret != 0 or len(value) == 0:
@@ -345,7 +378,8 @@ class NetTuningPlugin(base.Plugin):
context2parser = { "coalesce": self._parse_device_parameters, \
"features": self._parse_device_parameters, \
"pause": self._parse_pause_parameters, \
- "ring": self._parse_ring_parameters }
+ "ring": self._parse_ring_parameters, \
+ "channels": self._parse_channels_parameters }
parser = context2parser[context]
d = parser(value)
if context == "coalesce" and not self._check_parameters(context, d):
@@ -362,10 +396,14 @@ class NetTuningPlugin(base.Plugin):
# check if device supports parameters and filter out unsupported ones
if dev_params:
self._check_device_support(context, d, device, dev_params)
+ # replace the channel parameters based on the device support
+ if context == "channels" and int(dev_params[next(iter(d))]) == 0:
+ d = self._replace_channels_parameters(context, self._cmd.dict2list(d), dev_params)
if not sim and len(d) != 0:
log.debug("setting %s: %s" % (context, str(d)))
- context2opt = { "coalesce": "-C", "features": "-K", "pause": "-A", "ring": "-G" }
+ context2opt = { "coalesce": "-C", "features": "-K", "pause": "-A", "ring": "-G", \
+ "channels": "-L"}
opt = context2opt[context]
# ignore ethtool return code 80, it means parameter is already set
self._cmd.execute(["ethtool", opt, device] + self._cmd.dict2list(d), no_errors = [80])
@@ -422,3 +460,7 @@ class NetTuningPlugin(base.Plugin):
@command_custom("ring", per_device = True)
def _ring(self, start, value, device, verify, ignore_missing):
return self._custom_parameters("ring", start, value, device, verify)
+
+ @command_custom("channels", per_device = True)
+ def _channels(self, start, value, device, verify, ignore_missing):
+ return self._custom_parameters("channels", start, value, device, verify)

View File

@ -33,8 +33,8 @@
Summary: A dynamic adaptive system tuning daemon
Name: tuned
Version: 2.14.0
Release: 3%{?prerel1}%{?dist}.2
Version: 2.15.0
Release: 2%{?prerel1}%{?dist}
License: GPLv2+
Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz
# RHEL-8 specific recommend.conf:
@ -57,28 +57,25 @@ Requires: %{_py}-schedutils, %{_py}-linux-procfs, %{_py}-perf
BuildRequires: python3-dbus, python3-gobject-base
Requires: python3-dbus, python3-gobject-base
%if 0%{?fedora} > 22 || 0%{?rhel} > 7
Recommends: python3-dmidecode
Recommends: dmidecode
%endif
%else
# BuildRequires for 'make test'
BuildRequires: dbus-python, pygobject3-base
Requires: dbus-python, pygobject3-base
%if 0%{?fedora} > 22 || 0%{?rhel} > 7
Recommends: python-dmidecode
%endif
%endif
Requires: virt-what, ethtool, gawk, hdparm
Requires: virt-what, ethtool, gawk
Requires: util-linux, dbus, polkit
%if 0%{?fedora} > 22 || 0%{?rhel} > 7
Recommends: dmidecode
Recommends: hdparm
Recommends: kernel-tools
Recommends: kmod
%endif
%if 0%{?rhel} > 7
Requires: python3-syspurpose
%endif
Patch0: tuned-2.14.0-amd-performance-regression-fix.patch
Patch1: tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch
Patch2: tuned-2.14.0-realtime-virtual-host-remove-lapic-advancement.patch
Patch3: tuned-2.14.0-cmdline-duplication-with-BLS-and-grub2-mkconfig-fix.patch
Patch0: tuned-2.15.0-netdev-queue-count.patch
%description
The tuned package contains a daemon that tunes system settings dynamically.
@ -224,19 +221,27 @@ Requires: %{name} = %{version}
Additional tuned profiles mainly for backward compatibility with tuned 1.0.
It can be also used to fine tune your system for specific scenarios.
%package profiles-postgresql
Summary: Additional tuned profile(s) targeted to PostgreSQL server loads
Requires: %{name} = %{version}
%description profiles-postgresql
Additional tuned profile(s) targeted to PostgreSQL server loads.
%prep
%setup -q -n %{name}-%{version}%{?prerel2}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
# Replace the upstream recommend.conf with a RHEL-8-specific one
rm -f recommend.conf
cp -p %{SOURCE1} recommend.conf
%build
# Docs cannot be generated on RHEL now due to missing asciidoctor dependency
# asciidoc doesn't seem to be compatible
%if ! 0%{?rhel}
make html %{make_python_arg}
%endif
%install
make install DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg}
@ -244,6 +249,11 @@ make install DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg}
sed -i 's/\(dynamic_tuning[ \t]*=[ \t]*\).*/\10/' %{buildroot}%{_sysconfdir}/tuned/tuned-main.conf
%endif
%if ! 0%{?rhel}
# manual
make install-html DESTDIR=%{buildroot} DOCDIR=%{docdir}
%endif
# conditional support for grub2, grub2 is not available on all architectures
# and tuned is noarch package, thus the following hack is needed
mkdir -p %{buildroot}%{_datadir}/tuned/grub2
@ -260,8 +270,13 @@ touch %{buildroot}%{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf
# validate desktop file
desktop-file-validate %{buildroot}%{_datadir}/applications/tuned-gui.desktop
# Run tests on RHEL > 7 or non RHEL
# We cannot run tests on RHEL-7 because there is no python-mock package and
# python-2.7 doesn't have mock built-in
%if 0%{?rhel} > 7 || ! 0%{?rhel}
%check
make test
make test %{make_python_arg}
%endif
%post
%systemd_post tuned.service
@ -308,11 +323,18 @@ if [ "$1" == 0 ]; then
then
for f in /boot/loader/entries/$MACHINE_ID-*.conf
do
if [ -f "$f" -a "${f: -12}" != "-rescue.conf" ]
# Skip non-files and rescue entries
if [ ! -f "$f" -o "${f: -12}" == "-rescue.conf" ]
then
sed -i '/^\s*options\s\+.*\$tuned_params/ s/\s\+\$tuned_params\b//g' "$f" &>/dev/null || :
sed -i '/^\s*initrd\s\+.*\$tuned_initrd/ s/\s\+\$tuned_initrd\b//g' "$f" &>/dev/null || :
continue
fi
# Skip boom managed entries
if [[ "$f" =~ \w*-[0-9a-f]{7,}-.*-.*.conf ]]
then
continue
fi
sed -i '/^\s*options\s\+.*\$tuned_params/ s/\s\+\$tuned_params\b//g' "$f" &>/dev/null || :
sed -i '/^\s*initrd\s\+.*\$tuned_initrd/ s/\s\+\$tuned_initrd\b//g' "$f" &>/dev/null || :
done
fi
fi
@ -371,6 +393,7 @@ fi
%exclude %{_prefix}/lib/tuned/realtime-virtual-host
%exclude %{_prefix}/lib/tuned/cpu-partitioning
%exclude %{_prefix}/lib/tuned/spectrumscale-ece
%exclude %{_prefix}/lib/tuned/postgresql
%{_prefix}/lib/tuned
%dir %{_sysconfdir}/tuned
%dir %{_sysconfdir}/tuned/recommend.d
@ -484,15 +507,41 @@ fi
%{_prefix}/lib/tuned/spindown-disk
%{_mandir}/man7/tuned-profiles-compat.7*
%changelog
* Tue Feb 2 2021 Jan Zerdik <jzerdik@redhat.com> - 2.14.0-3.2
- bootloader: fixed cmdline duplication with BLS and grub2-mkconfig
Resolves: rhbz#1918995
%files profiles-postgresql
%{_prefix}/lib/tuned/postgresql
%{_mandir}/man7/tuned-profiles-postgresql.7*
* Fri Oct 2 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-3.1
%changelog
* Fri Feb 19 2021 Jaroslav Škarvada <jskarvad@redhat.com> - 2.15.0-2
- realtime: added support for netdev_queue_count and extended plugin_net
resolves: rhbz#1846767
* Thu Dec 17 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.15.0-1
- new release
- rebased tuned to latest upstream
related: rhbz#1874052
* Tue Dec 1 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.15.0-0.1.rc1
- new release
- rebased tuned to latest upstream
resolves: rhbz#1874052
- added plugin service for linux services control
resolves: rhbz#1869991
- scheduler: added default_irq_smp_affinity option
resolves: rhbz#1896348
- bootloader: skip boom managed BLS snippets
resolves: rhbz#1901532
- scheduler: added perf_process_fork option to enable processing of fork
resolves: rhbz#1894610
- scheduler: added perf_mmap_pages option to set perf buffer size
resolves: rhbz#1890219
- bootloader: fixed cmdline duplication with BLS and grub2-mkconfig
resolves: rhbz#1777874
* Thu Oct 1 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-4
- realtime-virtual-host: remove lapic advancement calculation and
related qemu-kvm-tools-rhev requirement
Resolves: rhbz#1884544
Resolves: rhbz#1845717
* Fri Jul 3 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-3
- scheduler: fixed isolated_cores to work with cgroups