From 9c2d25225a2f91dac781eca498ce9d384be335ab Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 24 Jun 2025 10:00:05 +0000 Subject: [PATCH] import CS tuned-2.25.1-2.el10 --- .gitignore | 2 +- .tuned.metadata | 1 - SOURCES/tuned-2.21.0-sd-load-balance.patch | 80 -- SOURCES/tuned-2.21.1-CVE-2024-52337.patch | 118 --- SOURCES/tuned-2.22.0-rhel-8-profiles.patch | 88 -- ...22.1-postgresql-disable-amd-instance.patch | 11 - SOURCES/tuned-2.22.1-profile-epyc-eda.patch | 54 -- .../tuned-2.22.1-sap-vm-max-map-count.patch | 28 - SOURCES/tuned-2.22.1-use-hdparm-lazily.patch | 97 --- SOURCES/recommend.conf => recommend.conf | 0 sources | 1 + tuned-2.25.1-bootc-kargs.patch | 311 +++++++ SPECS/tuned.spec => tuned.spec | 761 +++++++++++------- 13 files changed, 805 insertions(+), 747 deletions(-) delete mode 100644 .tuned.metadata delete mode 100644 SOURCES/tuned-2.21.0-sd-load-balance.patch delete mode 100644 SOURCES/tuned-2.21.1-CVE-2024-52337.patch delete mode 100644 SOURCES/tuned-2.22.0-rhel-8-profiles.patch delete mode 100644 SOURCES/tuned-2.22.1-postgresql-disable-amd-instance.patch delete mode 100644 SOURCES/tuned-2.22.1-profile-epyc-eda.patch delete mode 100644 SOURCES/tuned-2.22.1-sap-vm-max-map-count.patch delete mode 100644 SOURCES/tuned-2.22.1-use-hdparm-lazily.patch rename SOURCES/recommend.conf => recommend.conf (100%) create mode 100644 sources create mode 100644 tuned-2.25.1-bootc-kargs.patch rename SPECS/tuned.spec => tuned.spec (68%) diff --git a/.gitignore b/.gitignore index 7d0986a..e4b79af 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.22.1.tar.gz +tuned-2.25.1.tar.gz diff --git a/.tuned.metadata b/.tuned.metadata deleted file mode 100644 index f939654..0000000 --- a/.tuned.metadata +++ /dev/null @@ -1 +0,0 @@ -60e206fe73ea537e64141f92b331f65879766f97 SOURCES/tuned-2.22.1.tar.gz diff --git a/SOURCES/tuned-2.21.0-sd-load-balance.patch b/SOURCES/tuned-2.21.0-sd-load-balance.patch deleted file mode 100644 index f77f30f..0000000 --- a/SOURCES/tuned-2.21.0-sd-load-balance.patch +++ /dev/null @@ -1,80 +0,0 @@ -diff --git a/profiles/cpu-partitioning/script.sh b/profiles/cpu-partitioning/script.sh -index ec422ca..cb378b7 100755 ---- a/profiles/cpu-partitioning/script.sh -+++ b/profiles/cpu-partitioning/script.sh -@@ -2,6 +2,38 @@ - - . /usr/lib/tuned/functions - -+no_balance_cpus_file=$STORAGE/no-balance-cpus.txt -+ -+change_sd_balance_bit() -+{ -+ local set_bit=$1 -+ local flags_cur= -+ local file= -+ local cpu= -+ -+ for cpu in $(cat $no_balance_cpus_file); do -+ for file in $(find /proc/sys/kernel/sched_domain/cpu$cpu -name flags -print); do -+ flags_cur=$(cat $file) -+ if [ $set_bit -eq 1 ]; then -+ flags_cur=$((flags_cur | 0x1)) -+ else -+ flags_cur=$((flags_cur & 0xfffe)) -+ fi -+ echo $flags_cur > $file -+ done -+ done -+} -+ -+disable_balance_domains() -+{ -+ change_sd_balance_bit 0 -+} -+ -+enable_balance_domains() -+{ -+ change_sd_balance_bit 1 -+} -+ - start() { - mkdir -p "${TUNED_tmpdir}/etc/systemd" - mkdir -p "${TUNED_tmpdir}/usr/lib/dracut/hooks/pre-udev" -@@ -9,6 +41,9 @@ start() { - cp 00-tuned-pre-udev.sh "${TUNED_tmpdir}/usr/lib/dracut/hooks/pre-udev/" - setup_kvm_mod_low_latency - disable_ksm -+ -+ echo "$TUNED_no_balance_cores_expanded" | sed 's/,/ /g' > $no_balance_cpus_file -+ disable_balance_domains - return "$?" - } - -@@ -18,6 +53,7 @@ stop() { - teardown_kvm_mod_low_latency - enable_ksm - fi -+ enable_balance_domains - return "$?" - } - -diff --git a/profiles/cpu-partitioning/tuned.conf b/profiles/cpu-partitioning/tuned.conf -index 11f03cf..a682c9c 100644 ---- a/profiles/cpu-partitioning/tuned.conf -+++ b/profiles/cpu-partitioning/tuned.conf -@@ -35,8 +35,6 @@ no_balance_cores_expanded=${f:cpulist_unpack:${no_balance_cores}} - # Fail if isolated_cores contains CPUs which are not online - assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}} - --cmd_isolcpus=${f:regex_search_ternary:${no_balance_cores}:\s*[0-9]: isolcpus=${no_balance_cores}:} -- - [sysfs] - /sys/bus/workqueue/devices/writeback/cpumask = ${not_isolated_cpumask} - /sys/devices/virtual/workqueue/cpumask = ${not_isolated_cpumask} -@@ -62,4 +60,4 @@ priority=10 - initrd_remove_dir=True - initrd_dst_img=tuned-initrd.img - initrd_add_dir=${tmpdir} --cmdline_cpu_part=+nohz=on${cmd_isolcpus} nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} tuned.non_isolcpus=${not_isolated_cpumask} intel_pstate=disable nosoftlockup -+cmdline_cpu_part=+nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores} tuned.non_isolcpus=${not_isolated_cpumask} intel_pstate=disable nosoftlockup diff --git a/SOURCES/tuned-2.21.1-CVE-2024-52337.patch b/SOURCES/tuned-2.21.1-CVE-2024-52337.patch deleted file mode 100644 index c271575..0000000 --- a/SOURCES/tuned-2.21.1-CVE-2024-52337.patch +++ /dev/null @@ -1,118 +0,0 @@ -diff --git a/tuned/consts.py b/tuned/consts.py -index 3749363..3b41ed9 100644 ---- a/tuned/consts.py -+++ b/tuned/consts.py -@@ -1,4 +1,8 @@ - import logging -+import string -+ -+NAMES_ALLOWED_CHARS = string.ascii_letters + string.digits + " !@'+-.,/:;_$&*()%<=>?#[]{|}^~" + '"' -+NAMES_MAX_LENGTH = 4096 - - GLOBAL_CONFIG_FILE = "/etc/tuned/tuned-main.conf" - ACTIVE_PROFILE_FILE = "/etc/tuned/active_profile" -diff --git a/tuned/daemon/controller.py b/tuned/daemon/controller.py -index 6a59a1d..94e9022 100644 ---- a/tuned/daemon/controller.py -+++ b/tuned/daemon/controller.py -@@ -182,6 +182,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - def switch_profile(self, profile_name, caller = None): - if caller == "": - return (False, "Unauthorized") -+ if not self._cmd.is_valid_name(profile_name): -+ return (False, "Invalid profile_name") - return self._switch_profile(profile_name, True) - - @exports.export("", "(bs)") -@@ -255,8 +257,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - - @exports.export("s", "(bsss)") - def profile_info(self, profile_name, caller = None): -- if caller == "": -- return tuple(False, "", "", "") -+ if caller == "" or not self._cmd.is_valid_name(profile_name): -+ return (False, "", "", "") - if profile_name is None or profile_name == "": - profile_name = self.active_profile() - return tuple(self._daemon.profile_loader.profile_locator.get_profile_attrs(profile_name, [consts.PROFILE_ATTR_SUMMARY, consts.PROFILE_ATTR_DESCRIPTION], [""])) -@@ -287,7 +289,7 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - dictionary -- {plugin_name: {parameter_name: default_value}} - """ - if caller == "": -- return False -+ return {} - plugins = {} - for plugin_class in self._daemon.get_all_plugins(): - plugin_name = plugin_class.__module__.split(".")[-1].split("_", 1)[1] -@@ -300,8 +302,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - @exports.export("s","s") - def get_plugin_documentation(self, plugin_name, caller = None): - """Return docstring of plugin's class""" -- if caller == "": -- return False -+ if caller == "" or not self._cmd.is_valid_name(plugin_name): -+ return "" - return self._daemon.get_plugin_documentation(str(plugin_name)) - - @exports.export("s","a{ss}") -@@ -314,8 +316,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - Return: - dictionary -- {parameter_name: hint} - """ -- if caller == "": -- return False -+ if caller == "" or not self._cmd.is_valid_name(plugin_name): -+ return {} - return self._daemon.get_plugin_hints(str(plugin_name)) - - @exports.export("s", "b") -@@ -328,7 +330,7 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - Return: - bool -- True on success - """ -- if caller == "": -+ if caller == "" or not self._cmd.is_valid_name(path): - return False - if self._daemon._application and self._daemon._application._unix_socket_exporter: - self._daemon._application._unix_socket_exporter.register_signal_path(path) -@@ -342,6 +344,10 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - def instance_acquire_devices(self, devices, instance_name, caller = None): - if caller == "": - return (False, "Unauthorized") -+ if not self._cmd.is_valid_name(devices): -+ return (False, "Invalid devices") -+ if not self._cmd.is_valid_name(instance_name): -+ return (False, "Invalid instance_name") - found = False - for instance_target in self._daemon._unit_manager.instances: - if instance_target.name == instance_name: -@@ -388,6 +394,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - """ - if caller == "": - return (False, "Unauthorized", []) -+ if not self._cmd.is_valid_name(plugin_name): -+ return (False, "Invalid plugin_name", []) - if plugin_name != "" and plugin_name not in self.get_all_plugins().keys(): - rets = "Plugin '%s' does not exist" % plugin_name - log.error(rets) -@@ -411,6 +419,8 @@ class Controller(tuned.exports.interfaces.ExportableInterface): - """ - if caller == "": - return (False, "Unauthorized", []) -+ if not self._cmd.is_valid_name(instance_name): -+ return (False, "Invalid instance_name", []) - for instance in self._daemon._unit_manager.instances: - if instance.name == instance_name: - return (True, "OK", sorted(list(instance.processed_devices))) -diff --git a/tuned/utils/commands.py b/tuned/utils/commands.py -index ce51fc0..38d95ef 100644 ---- a/tuned/utils/commands.py -+++ b/tuned/utils/commands.py -@@ -544,3 +544,7 @@ class commands: - import string - trans = string.maketrans(source_chars, dest_chars) - return text.translate(trans) -+ -+ # Checks if name contains only valid characters and has valid length or is empty string or None -+ def is_valid_name(self, name): -+ return not name or (all(c in consts.NAMES_ALLOWED_CHARS for c in name) and len(name) <= consts.NAMES_MAX_LENGTH) diff --git a/SOURCES/tuned-2.22.0-rhel-8-profiles.patch b/SOURCES/tuned-2.22.0-rhel-8-profiles.patch deleted file mode 100644 index 1d7dd3f..0000000 --- a/SOURCES/tuned-2.22.0-rhel-8-profiles.patch +++ /dev/null @@ -1,88 +0,0 @@ -diff --git a/profiles/latency-performance/tuned.conf b/profiles/latency-performance/tuned.conf -index 1dec690..e592138 100644 ---- a/profiles/latency-performance/tuned.conf -+++ b/profiles/latency-performance/tuned.conf -@@ -35,3 +35,17 @@ vm.dirty_background_ratio=3 - # 100 tells the kernel to aggressively swap processes out of physical memory - # and move them to swap cache - vm.swappiness=10 -+ -+[scheduler] -+runtime=0 -+# ktune sysctl settings for rhel6 servers, maximizing i/o throughput -+# -+# Minimal preemption granularity for CPU-bound tasks: -+# (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds) -+sched_min_granularity_ns = 3000000 -+sched_wakeup_granularity_ns = 4000000 -+ -+# The total time the scheduler will consider a migrated process -+# "cache hot" and thus less likely to be re-migrated -+# (system default is 500000, i.e. 0.5 ms) -+sched_migration_cost_ns = 5000000 -diff --git a/profiles/sap-hana/tuned.conf b/profiles/sap-hana/tuned.conf -index aeecf53..1b15ea3 100644 ---- a/profiles/sap-hana/tuned.conf -+++ b/profiles/sap-hana/tuned.conf -@@ -20,3 +20,8 @@ kernel.numa_balancing = 0 - vm.dirty_ratio = 40 - vm.dirty_background_ratio = 10 - vm.swappiness = 10 -+ -+[scheduler] -+runtime=0 -+sched_min_granularity_ns = 3000000 -+sched_wakeup_granularity_ns = 4000000 -diff --git a/profiles/throughput-performance/tuned.conf b/profiles/throughput-performance/tuned.conf -index e4e832f..3d9c42f 100644 ---- a/profiles/throughput-performance/tuned.conf -+++ b/profiles/throughput-performance/tuned.conf -@@ -67,9 +67,33 @@ vm.swappiness=10 - # on older kernels - net.core.somaxconn=>2048 - -+[scheduler] -+runtime=0 -+# ktune sysctl settings for rhel6 servers, maximizing i/o throughput -+# -+# Minimal preemption granularity for CPU-bound tasks: -+# (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds) -+sched_min_granularity_ns = 10000000 -+ -+# SCHED_OTHER wake-up granularity. -+# (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds) -+# -+# This option delays the preemption effects of decoupled workloads -+# and reduces their over-scheduling. Synchronous workloads will still -+# have immediate wakeup/sleep latencies. -+sched_wakeup_granularity_ns = 15000000 -+ - # Marvell ThunderX - [sysctl.thunderx] - type=sysctl - uname_regex=aarch64 - cpuinfo_regex=${thunderx_cpuinfo_regex} - kernel.numa_balancing=0 -+ -+# AMD -+[scheduler.amd] -+type=scheduler -+uname_regex=x86_64 -+cpuinfo_regex=${amd_cpuinfo_regex} -+runtime=0 -+sched_migration_cost_ns=5000000 -diff --git a/profiles/virtual-host/tuned.conf b/profiles/virtual-host/tuned.conf -index 5301d9f..24d0fb4 100644 ---- a/profiles/virtual-host/tuned.conf -+++ b/profiles/virtual-host/tuned.conf -@@ -14,3 +14,10 @@ vm.dirty_background_ratio = 5 - [cpu] - # Setting C3 state sleep mode/power savings - force_latency=cstate.id_no_zero:3|70 -+ -+[scheduler] -+runtime=0 -+# The total time the scheduler will consider a migrated process -+# "cache hot" and thus less likely to be re-migrated -+# (system default is 500000, i.e. 0.5 ms) -+sched_migration_cost_ns = 5000000 diff --git a/SOURCES/tuned-2.22.1-postgresql-disable-amd-instance.patch b/SOURCES/tuned-2.22.1-postgresql-disable-amd-instance.patch deleted file mode 100644 index 9493f56..0000000 --- a/SOURCES/tuned-2.22.1-postgresql-disable-amd-instance.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/profiles/postgresql/tuned.conf b/profiles/postgresql/tuned.conf -index 88da8e4..4fd3810 100644 ---- a/profiles/postgresql/tuned.conf -+++ b/profiles/postgresql/tuned.conf -@@ -55,3 +55,6 @@ sched_min_granularity_ns = 10000000 - # "cache hot" and thus less likely to be re-migrated - # (system default is 500000, i.e. 0.5 ms) - sched_migration_cost_ns = 50000000 -+ -+[scheduler.amd] -+enabled=false diff --git a/SOURCES/tuned-2.22.1-profile-epyc-eda.patch b/SOURCES/tuned-2.22.1-profile-epyc-eda.patch deleted file mode 100644 index bf0a7b6..0000000 --- a/SOURCES/tuned-2.22.1-profile-epyc-eda.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 7557cf975282326cdbfe55b7b803d8075ff37cba Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Tue, 12 Mar 2024 20:25:43 +0100 -Subject: [PATCH] epyc-eda: added new profile for EDA compute workloads on AMD - EPYC CPUs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jaroslav Škarvada ---- - man/tuned-profiles.7 | 4 ++++ - profiles/epyc-eda/tuned.conf | 14 ++++++++++++++ - 2 files changed, 18 insertions(+) - create mode 100644 profiles/epyc-eda/tuned.conf - -diff --git a/man/tuned-profiles.7 b/man/tuned-profiles.7 -index 10cad7b..600e8bb 100644 ---- a/man/tuned-profiles.7 -+++ b/man/tuned-profiles.7 -@@ -141,6 +141,10 @@ profiles (e.g. throughput\-performance profile), example: - Profile optimized for AWS EC2 instances. It is based on the - throughput\-performance profile. - -+.TP -+.BI "epyc-eda" -+Profile optimized for EDA compute workloads on AMD EPYC CPUs. -+ - .SH "FILES" - .nf - .I /etc/tuned/* -diff --git a/profiles/epyc-eda/tuned.conf b/profiles/epyc-eda/tuned.conf -new file mode 100644 -index 0000000..482d404 ---- /dev/null -+++ b/profiles/epyc-eda/tuned.conf -@@ -0,0 +1,14 @@ -+# -+# tuned configuration -+# -+ -+[main] -+summary=Optimize for EDA compute workloads on AMD EPYC CPUs -+description=Configures virtual memory, CPU governors, and network settings for EDA compute workloads. -+include=throughput-performance -+ -+# AMD -+[scheduler.amd] -+type=scheduler -+#Allow processes to rapidly move between cores to avoid idle time and maximize CPU usage -+sched_migration_cost_ns=10000 --- -2.44.0 - diff --git a/SOURCES/tuned-2.22.1-sap-vm-max-map-count.patch b/SOURCES/tuned-2.22.1-sap-vm-max-map-count.patch deleted file mode 100644 index 8d7eb08..0000000 --- a/SOURCES/tuned-2.22.1-sap-vm-max-map-count.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 04ead944fdf640ed986331179e533542efc934c7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Mon, 8 Apr 2024 11:03:47 +0200 -Subject: [PATCH] sap-netweaver: increased vm.max_map_count -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Resolves: RHEL-31757 - -Signed-off-by: Jaroslav Škarvada ---- - profiles/sap-netweaver/tuned.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/profiles/sap-netweaver/tuned.conf b/profiles/sap-netweaver/tuned.conf -index a1cfd17..81c4d44 100644 ---- a/profiles/sap-netweaver/tuned.conf -+++ b/profiles/sap-netweaver/tuned.conf -@@ -10,4 +10,4 @@ include=throughput-performance - kernel.sem = 32000 1024000000 500 32000 - kernel.shmall = 18446744073692774399 - kernel.shmmax = 18446744073692774399 --vm.max_map_count = 2000000 -+vm.max_map_count = 2147483647 --- -2.44.0 - diff --git a/SOURCES/tuned-2.22.1-use-hdparm-lazily.patch b/SOURCES/tuned-2.22.1-use-hdparm-lazily.patch deleted file mode 100644 index 2ff89e5..0000000 --- a/SOURCES/tuned-2.22.1-use-hdparm-lazily.patch +++ /dev/null @@ -1,97 +0,0 @@ -diff --git a/tuned/plugins/plugin_disk.py b/tuned/plugins/plugin_disk.py -index 1438e35..d6feb06 100644 ---- a/tuned/plugins/plugin_disk.py -+++ b/tuned/plugins/plugin_disk.py -@@ -100,19 +100,20 @@ class DiskPlugin(hotplug.Plugin): - self._devices_supported = True - self._use_hdparm = True - self._free_devices = set() -- self._hdparm_apm_devices = set() -+ self._hdparm_apm_device_support = dict() - for device in self._hardware_inventory.get_devices("block"): - if self._device_is_supported(device): - self._free_devices.add(device.sys_name) -- if self._use_hdparm and self._is_hdparm_apm_supported(device.sys_name): -- self._hdparm_apm_devices.add(device.sys_name) -- - self._assigned_devices = set() - - def _get_device_objects(self, devices): - return [self._hardware_inventory.get_device("block", x) for x in devices] - - def _is_hdparm_apm_supported(self, device): -+ if not self._use_hdparm: -+ return False -+ if device in self._hdparm_apm_device_support: -+ return self._hdparm_apm_device_support[device] - (rc, out, err_msg) = self._cmd.execute(["hdparm", "-C", "/dev/%s" % device], \ - no_errors = [errno.ENOENT], return_err=True) - if rc == -errno.ENOENT: -@@ -122,10 +123,13 @@ class DiskPlugin(hotplug.Plugin): - elif rc: - log.info("Device '%s' not supported by hdparm" % device) - log.debug("(rc: %s, msg: '%s')" % (rc, err_msg)) -+ self._hdparm_apm_device_support[device] = False - return False - elif "unknown" in out: - log.info("Driver for device '%s' does not support apm command" % device) -+ self._hdparm_apm_device_support[device] = False - return False -+ self._hdparm_apm_device_support[device] = True - return True - - @classmethod -@@ -232,7 +236,7 @@ class DiskPlugin(hotplug.Plugin): - return not "standby" in out and not "sleeping" in out - - def _instance_update_dynamic(self, instance, device): -- if not device in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - return - load = instance._load_monitor.get_device_load(device) - if load is None: -@@ -315,7 +319,7 @@ class DiskPlugin(hotplug.Plugin): - # At the moment we support dynamic tuning just for devices compatible with hdparm apm commands - # If in future will be added new functionality not connected to this command, - # it is needed to change it here -- if device not in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - log.info("There is no dynamic tuning available for device '%s' at time" % device) - else: - super(DiskPlugin, self)._instance_apply_dynamic(instance, device) -@@ -350,7 +354,7 @@ class DiskPlugin(hotplug.Plugin): - - @command_set("apm", per_device=True) - def _set_apm(self, value, device, sim, remove): -- if device not in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - if not sim: - log.info("apm option is not supported for device '%s'" % device) - return None -@@ -366,7 +370,7 @@ class DiskPlugin(hotplug.Plugin): - - @command_get("apm") - def _get_apm(self, device, ignore_missing=False): -- if device not in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - if not ignore_missing: - log.info("apm option is not supported for device '%s'" % device) - return None -@@ -390,7 +394,7 @@ class DiskPlugin(hotplug.Plugin): - - @command_set("spindown", per_device=True) - def _set_spindown(self, value, device, sim, remove): -- if device not in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - if not sim: - log.info("spindown option is not supported for device '%s'" % device) - return None -@@ -406,7 +410,7 @@ class DiskPlugin(hotplug.Plugin): - - @command_get("spindown") - def _get_spindown(self, device, ignore_missing=False): -- if device not in self._hdparm_apm_devices: -+ if not self._is_hdparm_apm_supported(device): - if not ignore_missing: - log.info("spindown option is not supported for device '%s'" % device) - return None diff --git a/SOURCES/recommend.conf b/recommend.conf similarity index 100% rename from SOURCES/recommend.conf rename to recommend.conf diff --git a/sources b/sources new file mode 100644 index 0000000..eecfcb9 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (tuned-2.25.1.tar.gz) = fa5ac9d818d11b118fb7c26db28993b704f590070edbece570fee1a6c60a1f5f850b711683c45b46f33d9b056a84e43ced2c4c1ee58e9ef3d1fd035a4c1d4de4 diff --git a/tuned-2.25.1-bootc-kargs.patch b/tuned-2.25.1-bootc-kargs.patch new file mode 100644 index 0000000..64a3b83 --- /dev/null +++ b/tuned-2.25.1-bootc-kargs.patch @@ -0,0 +1,311 @@ +From 91cb383ad7339873da3480463061500a308ba825 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= +Date: Fri, 31 Jan 2025 12:43:08 +0100 +Subject: [PATCH 1/2] bootloader: Simplify tuning of rpm-ostree kargs + +The bootloader plugin claims that it does not mess +with existing kernel parameters; make sure we adhere +to that also for rpm-ostree systems: + +1. Only append a new karg if the same key=value pair +does not already appear in kernel parameters. If we would +duplicate it, it would not be possible to determine which +one to delete when unapplying the profile. + +2. Do not delete existing key=value pairs when the profile +adds a karg with another value for the key. A single key can +appear multiple times in the kernel parameter list with different +values. + +Also make sure new kargs are added exactly in the order in which +they appear in the profile. This is especially important for kargs +related to hugepages. + +Resolves: RHEL-45836 +--- + tuned/consts.py | 1 - + tuned/plugins/plugin_bootloader.py | 142 +++++++++++------------------ + 2 files changed, 53 insertions(+), 90 deletions(-) + +diff --git a/tuned/consts.py b/tuned/consts.py +index 577ad9583..a92c78060 100644 +--- a/tuned/consts.py ++++ b/tuned/consts.py +@@ -43,7 +43,6 @@ + INITRD_IMAGE_DIR = "/boot" + BOOT_CMDLINE_TUNED_VAR = "TUNED_BOOT_CMDLINE" + BOOT_CMDLINE_INITRD_ADD_VAR = "TUNED_BOOT_INITRD_ADD" +-BOOT_CMDLINE_KARGS_DELETED_VAR = "TUNED_BOOT_KARGS_DELETED" + BOOT_CMDLINE_FILE = "/etc/tuned/bootcmdline" + PETITBOOT_DETECT_DIR = "/sys/firmware/opal" + MACHINE_ID_FILE = "/etc/machine-id" +diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py +index 4c66189fb..07a66d265 100644 +--- a/tuned/plugins/plugin_bootloader.py ++++ b/tuned/plugins/plugin_bootloader.py +@@ -209,24 +209,6 @@ def _get_config_options(cls): + "skip_grub_config": None, + } + +- @staticmethod +- def _options_to_dict(options, omit=""): +- """ +- Returns dict created from options +- e.g.: _options_to_dict("A=A A=B A B=A C=A", "A=B B=A B=B") returns {'A': ['A', None], 'C': ['A']} +- """ +- d = {} +- omit = omit.split() +- for o in options.split(): +- if o not in omit: +- arr = o.split('=', 1) +- d.setdefault(arr[0], []).append(arr[1] if len(arr) > 1 else None) +- return d +- +- @staticmethod +- def _dict_to_options(d): +- return " ".join([k + "=" + v1 if v1 is not None else k for k, v in d.items() for v1 in v]) +- + def _rpm_ostree_status(self): + """ + Returns status of rpm-ostree transactions or None if not run on rpm-ostree system +@@ -241,68 +223,45 @@ def _rpm_ostree_status(self): + return None + return splited[1] + +- def _wait_till_idle(self): ++ def _wait_till_rpm_ostree_idle(self): ++ """Check that rpm-ostree is idle, allowing some waiting time.""" + sleep_cycles = 10 + sleep_secs = 1.0 +- for i in range(sleep_cycles): ++ for _ in range(sleep_cycles): + if self._rpm_ostree_status() == "idle": + return True + sleep(sleep_secs) +- if self._rpm_ostree_status() == "idle": +- return True +- return False ++ return self._rpm_ostree_status() == "idle" ++ ++ def _get_rpm_ostree_kargs(self): ++ """Retrieve the output of rpm-ostree kargs, i.e., current default kernel arguments.""" ++ if not self._wait_till_rpm_ostree_idle(): ++ log.error("Error getting rpm-ostree kargs: rpm-ostree is busy") ++ return None ++ (rc, out, err) = self._cmd.execute(["rpm-ostree", "kargs"], return_err=True) ++ if out: ++ log.debug("rpm-ostree kargs: %s" % out) ++ if rc != 0: ++ log.error("Error getting rpm-ostree kargs: %s" % err) ++ return None ++ return out + +- def _rpm_ostree_kargs(self, append={}, delete={}): ++ def _modify_rpm_ostree_kargs(self, delete_kargs=[], append_kargs=[]): + """ +- Method for appending or deleting rpm-ostree karg +- returns None if rpm-ostree not present or is run on not ostree system +- or tuple with new kargs, appended kargs and deleted kargs ++ Modify (delete and append) kernel arguments in a rpm-ostree system. ++ Return a boolean indicating whether the operation was successful. + """ +- (rc, out, err) = self._cmd.execute(['rpm-ostree', 'kargs'], return_err=True) +- log.debug("rpm-ostree output stdout:\n%s\nstderr:\n%s" % (out, err)) +- if rc != 0: +- return None, None, None +- kargs = self._options_to_dict(out) +- +- if not self._wait_till_idle(): +- log.error("Cannot wait for transaction end") +- return None, None, None +- +- deleted = {} +- delete_params = self._dict_to_options(delete).split() +- # Deleting kargs, e.g. deleting added kargs by profile +- for k, val in delete.items(): +- for v in val: +- kargs[k].remove(v) +- deleted[k] = val +- +- appended = {} +- append_params = self._dict_to_options(append).split() +- # Appending kargs, e.g. new kargs by profile or restoring kargs replaced by profile +- for k, val in append.items(): +- if kargs.get(k): +- # If there is karg that we add with new value we want to delete it +- # and store old value for restoring after profile unload +- log.debug("adding rpm-ostree kargs %s: %s for delete" % (k, kargs[k])) +- deleted.setdefault(k, []).extend(kargs[k]) +- delete_params.extend([k + "=" + v if v is not None else k for v in kargs[k]]) +- kargs[k] = [] +- kargs.setdefault(k, []).extend(val) +- appended[k] = val +- +- if append_params == delete_params: +- log.info("skipping rpm-ostree kargs - append == deleting (%s)" % append_params) +- return kargs, appended, deleted +- +- log.info("rpm-ostree kargs - appending: '%s'; deleting: '%s'" % (append_params, delete_params)) +- (rc, _, err) = self._cmd.execute(['rpm-ostree', 'kargs'] + +- ['--append=%s' % v for v in append_params] + +- ['--delete=%s' % v for v in delete_params], return_err=True) ++ if not self._wait_till_rpm_ostree_idle(): ++ log.error("Error modifying rpm-ostree kargs: rpm-ostree is busy") ++ return False ++ (rc, _, err) = self._cmd.execute( ++ ["rpm-ostree", "kargs"] + ++ ["--delete=%s" % karg for karg in delete_kargs] + ++ ["--append=%s" % karg for karg in append_kargs], return_err=True) + if rc != 0: +- log.error("Something went wrong with rpm-ostree kargs\n%s" % (err)) +- return self._options_to_dict(out), None, None +- else: +- return kargs, appended, deleted ++ log.error("Error modifying rpm-ostree kargs: %s" % err) ++ return False ++ return True + + def _get_effective_options(self, options): + """Merge provided options with plugin default options and merge all cmdline.* options.""" +@@ -368,18 +327,16 @@ def _remove_grub2_tuning(self): + log.info("removing initrd image '%s'" % self._initrd_dst_img_val) + self._cmd.unlink(self._initrd_dst_img_val) + +- def _get_rpm_ostree_changes(self): ++ def _get_appended_rpm_ostree_kargs(self): ++ """Return the list of kernel arguments that were appended by this profile (in a rpm-ostree system).""" + f = self._cmd.read_file(consts.BOOT_CMDLINE_FILE) + appended = re.search(consts.BOOT_CMDLINE_TUNED_VAR + r"=\"(.*)\"", f, flags=re.MULTILINE) +- appended = appended[1] if appended else "" +- deleted = re.search(consts.BOOT_CMDLINE_KARGS_DELETED_VAR + r"=\"(.*)\"", f, flags=re.MULTILINE) +- deleted = deleted[1] if deleted else "" +- return appended, deleted ++ return appended[1].split() if appended else [] + + def _remove_rpm_ostree_tuning(self): +- appended, deleted = self._get_rpm_ostree_changes() +- self._rpm_ostree_kargs(append=self._options_to_dict(deleted), delete=self._options_to_dict(appended)) +- self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR: "", consts.BOOT_CMDLINE_KARGS_DELETED_VAR: ""}) ++ """Remove kernel parameter tuning in a rpm-ostree system.""" ++ self._modify_rpm_ostree_kargs(delete_kargs=self._get_appended_rpm_ostree_kargs()) ++ self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR: ""}) + + def _instance_unapply_static(self, instance, rollback = consts.ROLLBACK_SOFT): + if rollback == consts.ROLLBACK_FULL and not self._skip_grub_config_val: +@@ -489,14 +446,22 @@ def _grub2_cfg_patch(self, d): + return True + + def _rpm_ostree_update(self): +- appended, _ = self._get_rpm_ostree_changes() +- _cmdline_dict = self._options_to_dict(self._cmdline_val, appended) +- if not _cmdline_dict: +- return None +- (_, _, d) = self._rpm_ostree_kargs(append=_cmdline_dict) +- if d is None: ++ """Apply kernel parameter tuning in a rpm-ostree system.""" ++ if self._get_appended_rpm_ostree_kargs(): ++ # The kargs are already set in /etc/tuned/bootcmldine, ++ # we are likely post-reboot and done. ++ return ++ profile_kargs = self._cmdline_val.split() ++ active_kargs = self._get_rpm_ostree_kargs() ++ if active_kargs is None: ++ log.error("Not updating kernel arguments, could not read the current ones.") + return +- self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : self._cmdline_val, consts.BOOT_CMDLINE_KARGS_DELETED_VAR : self._dict_to_options(d)}) ++ # Only append key=value pairs that do not yet appear in kernel parameters, ++ # otherwise we would not be able to restore the cmdline to the previous state ++ # via rpm-ostree kargs --delete. ++ kargs_to_append = [karg for karg in profile_kargs if karg not in active_kargs.split()] ++ if self._modify_rpm_ostree_kargs(append_kargs=kargs_to_append): ++ self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : " ".join(kargs_to_append)}) + + def _grub2_update(self): + self._grub2_cfg_patch({consts.GRUB2_TUNED_VAR : self._cmdline_val, consts.GRUB2_TUNED_INITRD_VAR : self._initrd_val}) +@@ -646,11 +611,10 @@ def _cmdline(self, enabling, value, verify, ignore_missing, instance): + v = self._variables.expand(self._cmd.unquote(value)) + if verify: + if self._rpm_ostree: +- rpm_ostree_kargs = self._rpm_ostree_kargs()[0] +- cmdline = self._dict_to_options(rpm_ostree_kargs) ++ cmdline = self._get_rpm_ostree_kargs() + else: + cmdline = self._cmd.read_file("/proc/cmdline") +- if len(cmdline) == 0: ++ if cmdline is None or len(cmdline) == 0: + return None + cmdline_set = set(cmdline.split()) + value_set = set(v.split()) + +From 3e05cb783ee10ea78efb113c54bd2ad7d73a0e2e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= +Date: Fri, 16 May 2025 15:13:25 +0200 +Subject: [PATCH 2/2] bootloader: Remove previously appended rpm-ostree kargs + +If TuneD-appended kargs are present and do not match +the kargs to be appended, we should remove them. This +can happen if there was no profile rollback, e.g., +when using the no-daemon mode. + +Resolves: RHEL-86814 +--- + tuned/plugins/plugin_bootloader.py | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py +index 07a66d265..2711e116f 100644 +--- a/tuned/plugins/plugin_bootloader.py ++++ b/tuned/plugins/plugin_bootloader.py +@@ -105,7 +105,7 @@ class BootloaderPlugin(base.Plugin): + ---- + [main] + include=profile_1 +- ++ + [bootloader] + cmdline_profile_2=-quiet + ---- +@@ -114,7 +114,7 @@ class BootloaderPlugin(base.Plugin): + ---- + [main] + include=profile_1 +- ++ + [bootloader] + cmdline_profile_1=-quiet + ---- +@@ -447,20 +447,28 @@ def _grub2_cfg_patch(self, d): + + def _rpm_ostree_update(self): + """Apply kernel parameter tuning in a rpm-ostree system.""" +- if self._get_appended_rpm_ostree_kargs(): +- # The kargs are already set in /etc/tuned/bootcmldine, +- # we are likely post-reboot and done. +- return ++ appended_kargs = self._get_appended_rpm_ostree_kargs() + profile_kargs = self._cmdline_val.split() + active_kargs = self._get_rpm_ostree_kargs() + if active_kargs is None: + log.error("Not updating kernel arguments, could not read the current ones.") + return ++ # Ignore kargs previously appended by TuneD, these will be removed later. ++ non_tuned_kargs = active_kargs.split() ++ for karg in appended_kargs: ++ non_tuned_kargs.remove(karg) + # Only append key=value pairs that do not yet appear in kernel parameters, + # otherwise we would not be able to restore the cmdline to the previous state + # via rpm-ostree kargs --delete. +- kargs_to_append = [karg for karg in profile_kargs if karg not in active_kargs.split()] +- if self._modify_rpm_ostree_kargs(append_kargs=kargs_to_append): ++ kargs_to_append = [karg for karg in profile_kargs if karg not in non_tuned_kargs] ++ if appended_kargs == kargs_to_append: ++ # The correct kargs are already set in /etc/tuned/bootcmldine, ++ # we are likely post-reboot and done. ++ log.info("Kernel arguments already set, not updating.") ++ return ++ # If there are kargs in /etc/bootcmdline and they do not match ++ # the requested ones, there was no rollback, so remove them now. ++ if self._modify_rpm_ostree_kargs(delete_kargs=appended_kargs, append_kargs=kargs_to_append): + self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : " ".join(kargs_to_append)}) + + def _grub2_update(self): diff --git a/SPECS/tuned.spec b/tuned.spec similarity index 68% rename from SPECS/tuned.spec rename to tuned.spec index f0e089f..1199863 100644 --- a/SPECS/tuned.spec +++ b/tuned.spec @@ -1,3 +1,11 @@ +%if 0%{?rhel} && 0%{?rhel} < 10 +%global user_profiles_dir %{_sysconfdir}/tuned +%global system_profiles_dir %{_prefix}/lib/tuned +%else +%global user_profiles_dir %{_sysconfdir}/tuned/profiles +%global system_profiles_dir %{_prefix}/lib/tuned/profiles +%endif + %if 0%{?fedora} %if 0%{?fedora} > 27 %bcond_without python3 @@ -34,15 +42,20 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.22.1 -Release: 6%{?prerel1}%{?dist} -License: GPLv2+ +Version: 2.25.1 +Release: 2%{?prerel1}%{?dist} +License: GPL-2.0-or-later AND CC-BY-SA-3.0 Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz -# RHEL-8 specific recommend.conf: +# RHEL-9 specific recommend.conf: Source1: recommend.conf URL: http://www.tuned-project.org/ BuildArch: noarch BuildRequires: systemd, desktop-file-utils +%if 0%{?rhel} +BuildRequires: asciidoc +%else +BuildRequires: asciidoctor +%endif Requires(post): systemd, virt-what Requires(preun): systemd Requires(postun): systemd @@ -55,7 +68,8 @@ BuildRequires: %{_py}-mock %endif BuildRequires: %{_py}-pyudev Requires: %{_py}-pyudev -Requires: %{_py}-linux-procfs, %{_py}-perf +Requires: %{_py}-linux-procfs +Requires: %{_py}-inotify %if %{without python3} Requires: %{_py}-schedutils %endif @@ -64,9 +78,6 @@ Requires: %{_py}-schedutils # BuildRequires for 'make test' BuildRequires: python3-dbus, python3-gobject-base Requires: python3-dbus, python3-gobject-base -%if 0%{?fedora} > 22 || 0%{?rhel} > 7 -Recommends: dmidecode -%endif %else # BuildRequires for 'make test' BuildRequires: dbus-python, pygobject3-base @@ -76,11 +87,15 @@ Requires: virt-what, ethtool, gawk Requires: util-linux, dbus, polkit %if 0%{?fedora} > 22 || 0%{?rhel} > 7 Recommends: dmidecode +# https://src.fedoraproject.org/rpms/tuned/pull-request/8 +Recommends: %{_py}-perf # i686 excluded Recommends: kernel-tools Requires: hdparm Requires: kmod Requires: iproute +%else +Requires: %{_py}-perf %endif # syspurpose %if 0%{?rhel} > 8 @@ -93,19 +108,7 @@ Recommends: subscription-manager Requires: python3-syspurpose %endif %endif -# Revert upstream profiles changes which have not been approved for RHEL-8 (yet) -Patch0: tuned-2.22.0-rhel-8-profiles.patch -# Revert no balancing cores to use SD_LOAD_BALANCE (see rhbz#1874596 for details) -Patch1: tuned-2.21.0-sd-load-balance.patch -# epyc-eda TuneD profile only for RHEL-8 (see RHEL-27528 for details) -Patch2: tuned-2.22.1-profile-epyc-eda.patch -# Update vm.max_map_count in the sap-netweaver profile (see RHEL-32124 for details) -Patch3: tuned-2.22.1-sap-vm-max-map-count.patch -Patch4: tuned-2.21.1-CVE-2024-52337.patch -# Make hdparm device checks lazy (see RHEL-71457 for details) -Patch5: tuned-2.22.1-use-hdparm-lazily.patch -# Disable the amd.scheduler plug-in instance in the postgresql profile (see RHEL-70470 for details) -Patch6: tuned-2.22.1-postgresql-disable-amd-instance.patch +Patch0: tuned-2.25.1-bootc-kargs.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -195,7 +198,6 @@ Additional tuned profile(s) targeted to Atomic host and guest. %package profiles-realtime Summary: Additional tuned profile(s) targeted to realtime Requires: %{name} = %{version} -Requires: tuna %description profiles-realtime Additional tuned profile(s) targeted to realtime. @@ -204,7 +206,6 @@ Additional tuned profile(s) targeted to realtime. 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. @@ -213,7 +214,6 @@ Additional tuned profile(s) targeted to Network Function Virtualization (NFV) gu Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host Requires: %{name} = %{version} Requires: %{name}-profiles-realtime = %{version} -Requires: tuna %description profiles-nfv-host Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host. @@ -267,6 +267,9 @@ Additional TuneD profile(s) optimized for OpenShift. %package ppd Summary: PPD compatibility daemon Requires: %{name} = %{version} +%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10 +Obsoletes: power-profiles-daemon < 0.23-2 +%endif # The compatibility daemon is swappable for power-profiles-daemon Provides: ppd-service Conflicts: ppd-service @@ -278,20 +281,20 @@ to TuneD from power-profiles-daemon (PPD). %prep %autosetup -p1 -n %{name}-%{version}%{?prerel2} -# Replace the upstream recommend.conf with a RHEL-8-specific one +# Replace the upstream recommend.conf with a RHEL-9-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} -make install-ppd DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg} +make install DESTDIR="%{buildroot}" BINDIR="%{_bindir}" SBINDIR="%{_sbindir}" \ + DOCDIR="%{docdir}" %{make_python_arg} \ + TUNED_USER_PROFILES_DIR="%{user_profiles_dir}" \ + TUNED_SYSTEM_PROFILES_DIR="%{system_profiles_dir}" +make install-ppd DESTDIR="%{buildroot}" BINDIR="%{_bindir}" \ + SBINDIR="%{_sbindir}" DOCDIR="%{docdir}" %{make_python_arg} %if ! 0%{?rhel} # manual @@ -333,6 +336,19 @@ if [ -r "%{_sysconfdir}/default/grub" ]; then %{_sysconfdir}/default/grub fi +%if 0%{?fedora} || 0%{?rhel} >= 10 +# migrate all user-defined profiles from /etc/tuned/ to /etc/tuned/profiles/ +for f in %{_sysconfdir}/tuned/*; do + if [ -e "$f/tuned.conf" ]; then + mv -n "$f" %{_sysconfdir}/tuned/profiles/ + fi +done +%endif + + +%post ppd +%systemd_post tuned-ppd.service + %preun %systemd_preun tuned.service @@ -344,6 +360,10 @@ if [ "$1" == 0 ]; then fi +%preun ppd +%systemd_preun tuned-ppd.service + + %postun %systemd_postun_with_restart tuned.service @@ -383,12 +403,24 @@ if [ "$1" == 0 ]; then fi +%postun ppd +%systemd_postun_with_restart tuned-ppd.service + + %triggerun -- tuned < 2.0-0 # remove ktune from old tuned, now part of tuned /usr/sbin/service ktune stop &>/dev/null || : /usr/sbin/chkconfig --del ktune &>/dev/null || : +%triggerun ppd -- power-profiles-daemon +# if swapping power-profiles-daemon for tuned-ppd, check whether it is active +if systemctl is-active --quiet power-profiles-daemon; then + mkdir -p %{_localstatedir}/lib/rpm-state/tuned + touch %{_localstatedir}/lib/rpm-state/tuned/ppd-active +fi + + %posttrans # conditional support for grub2, grub2 is not available on all architectures # and tuned is noarch package, thus the following hack is needed @@ -399,6 +431,15 @@ if [ -d %{_sysconfdir}/grub.d ]; then fi +%posttrans ppd +# if power-profiles-daemon was active before installing tuned-ppd, +# start tuned-ppd right away +if [ -f %{_localstatedir}/lib/rpm-state/tuned/ppd-active ]; then + systemctl start tuned-ppd + rm -rf %{_localstatedir}/lib/rpm-state/tuned +fi + + %files %exclude %{docdir}/README.utils %exclude %{docdir}/README.scomes @@ -419,38 +460,44 @@ fi %exclude %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf %exclude %{_sysconfdir}/tuned/cpu-partitioning-variables.conf %exclude %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf -%exclude %{_prefix}/lib/tuned/default -%exclude %{_prefix}/lib/tuned/desktop-powersave -%exclude %{_prefix}/lib/tuned/laptop-ac-powersave -%exclude %{_prefix}/lib/tuned/server-powersave -%exclude %{_prefix}/lib/tuned/laptop-battery-powersave -%exclude %{_prefix}/lib/tuned/enterprise-storage -%exclude %{_prefix}/lib/tuned/spindown-disk -%exclude %{_prefix}/lib/tuned/sap-netweaver -%exclude %{_prefix}/lib/tuned/sap-hana -%exclude %{_prefix}/lib/tuned/sap-hana-kvm-guest -%exclude %{_prefix}/lib/tuned/mssql -%exclude %{_prefix}/lib/tuned/oracle -%exclude %{_prefix}/lib/tuned/atomic-host -%exclude %{_prefix}/lib/tuned/atomic-guest -%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 -%exclude %{_prefix}/lib/tuned/cpu-partitioning-powersave -%exclude %{_prefix}/lib/tuned/spectrumscale-ece -%exclude %{_prefix}/lib/tuned/postgresql -%exclude %{_prefix}/lib/tuned/openshift -%exclude %{_prefix}/lib/tuned/openshift-control-plane -%exclude %{_prefix}/lib/tuned/openshift-node +%exclude %{system_profiles_dir}/default +%exclude %{system_profiles_dir}/desktop-powersave +%exclude %{system_profiles_dir}/laptop-ac-powersave +%exclude %{system_profiles_dir}/server-powersave +%exclude %{system_profiles_dir}/laptop-battery-powersave +%exclude %{system_profiles_dir}/enterprise-storage +%exclude %{system_profiles_dir}/spindown-disk +%exclude %{system_profiles_dir}/sap-netweaver +%exclude %{system_profiles_dir}/sap-hana +%exclude %{system_profiles_dir}/sap-hana-kvm-guest +%exclude %{system_profiles_dir}/mssql +%exclude %{system_profiles_dir}/oracle +%exclude %{system_profiles_dir}/atomic-host +%exclude %{system_profiles_dir}/atomic-guest +%exclude %{system_profiles_dir}/realtime +%exclude %{system_profiles_dir}/realtime-virtual-guest +%exclude %{system_profiles_dir}/realtime-virtual-host +%exclude %{system_profiles_dir}/cpu-partitioning +%exclude %{system_profiles_dir}/cpu-partitioning-powersave +%exclude %{system_profiles_dir}/spectrumscale-ece +%exclude %{system_profiles_dir}/postgresql +%exclude %{system_profiles_dir}/openshift +%exclude %{system_profiles_dir}/openshift-control-plane +%exclude %{system_profiles_dir}/openshift-node %{_prefix}/lib/tuned %dir %{_sysconfdir}/tuned %dir %{_sysconfdir}/tuned/recommend.d + +%if "%{user_profiles_dir}" != "%{_sysconfdir}/tuned" +%dir %{user_profiles_dir} +%endif + %dir %{_libexecdir}/tuned %{_libexecdir}/tuned/defirqaffinity* %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/active_profile %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/profile_mode %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/post_loaded_profile +%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/ppd_base_profile %config(noreplace) %{_sysconfdir}/tuned/tuned-main.conf %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/bootcmdline %verify(not size mtime md5) %{_sysconfdir}/modprobe.d/tuned.conf @@ -499,40 +546,40 @@ fi %{_mandir}/man8/scomes.* %files profiles-sap -%{_prefix}/lib/tuned/sap-netweaver +%{system_profiles_dir}/sap-netweaver %{_mandir}/man7/tuned-profiles-sap.7* %files profiles-sap-hana -%{_prefix}/lib/tuned/sap-hana -%{_prefix}/lib/tuned/sap-hana-kvm-guest +%{system_profiles_dir}/sap-hana +%{system_profiles_dir}/sap-hana-kvm-guest %{_mandir}/man7/tuned-profiles-sap-hana.7* %files profiles-mssql -%{_prefix}/lib/tuned/mssql +%{system_profiles_dir}/mssql %{_mandir}/man7/tuned-profiles-mssql.7* %files profiles-oracle -%{_prefix}/lib/tuned/oracle +%{system_profiles_dir}/oracle %{_mandir}/man7/tuned-profiles-oracle.7* %files profiles-atomic -%{_prefix}/lib/tuned/atomic-host -%{_prefix}/lib/tuned/atomic-guest +%{system_profiles_dir}/atomic-host +%{system_profiles_dir}/atomic-guest %{_mandir}/man7/tuned-profiles-atomic.7* %files profiles-realtime %config(noreplace) %{_sysconfdir}/tuned/realtime-variables.conf -%{_prefix}/lib/tuned/realtime +%{system_profiles_dir}/realtime %{_mandir}/man7/tuned-profiles-realtime.7* %files profiles-nfv-guest %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-guest-variables.conf -%{_prefix}/lib/tuned/realtime-virtual-guest +%{system_profiles_dir}/realtime-virtual-guest %{_mandir}/man7/tuned-profiles-nfv-guest.7* %files profiles-nfv-host %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf -%{_prefix}/lib/tuned/realtime-virtual-host +%{system_profiles_dir}/realtime-virtual-host %{_mandir}/man7/tuned-profiles-nfv-host.7* %files profiles-nfv @@ -541,32 +588,32 @@ fi %files profiles-cpu-partitioning %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-variables.conf %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf -%{_prefix}/lib/tuned/cpu-partitioning -%{_prefix}/lib/tuned/cpu-partitioning-powersave +%{system_profiles_dir}/cpu-partitioning +%{system_profiles_dir}/cpu-partitioning-powersave %{_mandir}/man7/tuned-profiles-cpu-partitioning.7* %files profiles-spectrumscale -%{_prefix}/lib/tuned/spectrumscale-ece +%{system_profiles_dir}/spectrumscale-ece %{_mandir}/man7/tuned-profiles-spectrumscale-ece.7* %files profiles-compat -%{_prefix}/lib/tuned/default -%{_prefix}/lib/tuned/desktop-powersave -%{_prefix}/lib/tuned/laptop-ac-powersave -%{_prefix}/lib/tuned/server-powersave -%{_prefix}/lib/tuned/laptop-battery-powersave -%{_prefix}/lib/tuned/enterprise-storage -%{_prefix}/lib/tuned/spindown-disk +%{system_profiles_dir}/default +%{system_profiles_dir}/desktop-powersave +%{system_profiles_dir}/laptop-ac-powersave +%{system_profiles_dir}/server-powersave +%{system_profiles_dir}/laptop-battery-powersave +%{system_profiles_dir}/enterprise-storage +%{system_profiles_dir}/spindown-disk %{_mandir}/man7/tuned-profiles-compat.7* %files profiles-postgresql -%{_prefix}/lib/tuned/postgresql +%{system_profiles_dir}/postgresql %{_mandir}/man7/tuned-profiles-postgresql.7* %files profiles-openshift -%{_prefix}/lib/tuned/openshift -%{_prefix}/lib/tuned/openshift-control-plane -%{_prefix}/lib/tuned/openshift-node +%{system_profiles_dir}/openshift +%{system_profiles_dir}/openshift-control-plane +%{system_profiles_dir}/openshift-node %{_mandir}/man7/tuned-profiles-openshift.7* %files ppd @@ -575,201 +622,287 @@ fi %{_datadir}/dbus-1/system-services/net.hadess.PowerProfiles.service %{_datadir}/dbus-1/system.d/net.hadess.PowerProfiles.conf %{_datadir}/polkit-1/actions/net.hadess.PowerProfiles.policy +%{_datadir}/dbus-1/system-services/org.freedesktop.UPower.PowerProfiles.service +%{_datadir}/dbus-1/system.d/org.freedesktop.UPower.PowerProfiles.conf +%{_datadir}/polkit-1/actions/org.freedesktop.UPower.PowerProfiles.policy %config(noreplace) %{_sysconfdir}/tuned/ppd.conf %changelog -* Mon Jan 06 2025 Pavol Žáčik - 2.22.1-6 -- Make hdparm device checks lazy - Resolves: RHEL-71457 -- Disable the amd.scheduler plug-in instance in the postgresql profile - Resolves: RHEL-70470 +* Thu Jun 05 2025 Pavol Žáčik - 2.25.1-2 +- Fix handling of kernel arguments on bootc systems + resolves: RHEL-94185 -* Mon Nov 18 2024 Jaroslav Škarvada - 2.22.1-5 +* Tue Feb 4 2025 Jaroslav Škarvada - 2.25.1-1 +- new release + - rebased tuned to latest upstream + related: RHEL-70454 + - plugins: added missing instance parameters + - disk: added missing remove parameter + - plugin_scheduler: added switch to disable processing of kthreads + - Makefile: added support for installation to custom LIBEXECDIR + - functions: create a new parser object for each string expansion + +* Fri Jan 31 2025 Jaroslav Škarvada - 2.25.0-1 +- new release + - rebased tuned to latest upstream + related: RHEL-70454 + - sap-hana: Set transparent_hugepages to madvise + resolves: RHEL-68454 + - plugin_bootloader: export Grub variables to make them available in submenus + - utils.commands: fixed CPU online detection when not present + - plugin_net: handled cqe-mode-rx ethtool option + - profiles: correct CPU governor settings + +* Sun Jan 19 2025 Jaroslav Škarvada - 2.25.0-0.1.rc1 +- new release + - tuned-ppd: removed the use of StrEnum + - tuned-ppd: fixed traceback + resolves: RHEL-74384 + - tuned-ppd: multiple fixes and updates + - docs: plugins docs are now automatically generated from the docstrings + - plugin_cpu: fixed no_turbo boolean option parsing + - plugin_cpu: allowed raw energy_performance_preference values + - plugin_vm: added support for dirty_(bytes|ratio) sysctl parameters + - plugin_bootloader: added variables to BLS entries only if grub is used + - plugin_scheduler: do not assume that perf events have type attribute + - plugin_scheduler: updated sched knobs for kernels 6.6+ + - plugin_scheduler: log process info when its affinity cannot be changed + resolves: RHEL-69933 + - plugin_scheduler: postpone cgroup blacklist check, double-check after fail + - plugin_scheduler: made perf support optional + - plugin_net: added support for hotplug and rename + - makefile: added support for installation to custom $BINDIR/$SBINDIR + - functions: dropped cpuspeed support + +* Mon Nov 18 2024 Jaroslav Škarvada - 2.24.0-3 +- Fixed privileged execution of arbitrary scripts by active local user, + (CVE-2024-52336) + Resolves: RHEL-66636 - Added sanity checks for API methods parameters, (CVE-2024-52337) - Resolves: RHEL-66614 + Resolves: RHEL-66613 -* Fri May 3 2024 Pavol Žáčik - 2.22.1-4.1 -- sap-netweaver: increase vm.max_map_count - resolves: RHEL-32124 +* Tue Oct 29 2024 Troy Dawson - 2.24.0-2 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Wed Mar 13 2024 Jaroslav Škarvada - 2.22.1-4 -- release bump due to broken c8s - related: RHEL-27528 +* Wed Aug 7 2024 Jaroslav Škarvada - 2.24.0-1 +- new release + - rebased tuned to latest upstream + related: RHEL-50567 + - clear plugin repository when stopping tuning + - man: add description of the balanced-battery profile -* Wed Mar 13 2024 Jaroslav Škarvada - 2.22.1-3 -- release bump - related: RHEL-27528 +* Thu Jul 25 2024 Jaroslav Škarvada - 2.24.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: RHEL-50567 + - spec: create /etc/tuned/profiles directory + resolves: RHEL-46721 + - hotplug: wait for device initialization + - sap-netweaver: increased vm.max_map_count + - daemon: buffer sighup signal + - added an option to configure profile directories + - api: added commands to dynamically create/destroy instances + - functions: added 'intel_recommended_pstate' + - functions: added 'log' which helps with debugging + - functions: added 'package2cpus' and 'packages2uncores' matchers + - functions: added 'lscpu' to list CPU details + - plugins: added plugin_irq + - plugin_video: added support for amdgpu `panel_power_savings` attribute + - plugin_cpu: check that writes are necessary if they may cause redundant IPIs + - plugin_uncore: allow to configure frequency limits using percent + - amd-pstate: added support for controlling core performance boost + - plugin_scheduler: adjusted error logging in _set_affinity + - plugin_audio: enabled controller reset to fix suspend with NVIDIA + - plugin_irq: fixed expansion of variables + - plugin_irqbalance: switched to IRQBALANCE_BANNED_CPULIST -* Tue Mar 12 2024 Jaroslav Škarvada - 2.22.1-2 -- profiles: added epyc-eda profile - resolves: RHEL-27528 +* Mon Jun 24 2024 Troy Dawson - 2.22.1-3 +- Bump release for June 2024 mass rebuild + +* Tue May 7 2024 Jaroslav Škarvada - 2.22.1-2 +- converted license to SPDX + resolves: RHEL-35694 * Thu Feb 22 2024 Jaroslav Škarvada - 2.22.1-1 - new release - rebased tuned to latest upstream - related: RHEL-17119 + related: RHEL-17121 - renamed intel_uncore plugin to uncore - network-throughput: increased net.ipv4.tcp_rmem default value + resolves: RHEL-25847 * Fri Feb 16 2024 Jaroslav Škarvada - 2.22.0-1 - new release - rebased tuned to latest upstream - related: RHEL-17119 - - lower CPU usage by using runtime=0 in profiles using scheduler plugin - resolves: RHEL-6869 + related: RHEL-17121 * Fri Feb 9 2024 Jaroslav Škarvada - 2.22.0-0.1.rc1 - new release - rebased tuned to latest upstream - resolves: RHEL-17119 + resolves: RHEL-17121 - print all arguments of failing commands in error messages + resolves: RHEL-3689 - plugin_sysctl: added support for sysctl names with slash + resolves: RHEL-3707 - tuned-adm: added support for moving devices between plugin instances + resolves: RHEL-15141 - api: added methods for retrieval of plugin instances and devices + resolves: RHEL-15137 - plugin_cpu: amd-pstate mentioned instead of just intel_pstate + resolves: RHEL-16469 - hotplug: do not report ENOENT errors on device remove + resolves: RHEL-11342 - plugin_sysctl: expand variables when reporting overrides + resolves: RHEL-18972 - plugin_acpi: new plugin which handles ACPI platform_profile + resolves: RHEL-16966 - plugin_bootloader: skip calling rpm-ostree kargs in no-op case + resolves: RHEL-20767 - plugin_cpu: support cstate settings of pm_qos_resume_latency_us + resolves: RHEL-21129 - scheduler: add option for ignoring IRQs affinity + resolves: RHEL-21923 - plugin_intel_uncore: new plugin for uncore setting * Tue Aug 29 2023 Jaroslav Škarvada - 2.21.0-1 - new release - api: fixed stop method not to require any parameter - resolves: rhbz#2235638 + resolves: rhbz#2235637 * Sun Aug 20 2023 Jaroslav Škarvada - 2.21.0-0.1.rc1 - new release - rebased tuned to latest upstream - resolves: rhbz#2182119 - - sap-hana: new profile sap-hana-kvm-guest - resolves: rhbz#2173740 - - serialized SIGHUP handler to prevent possible bootcmdline corruption - resolves: rhbz#2215298 + resolves: rhbz#2182117 + - plugin_scheduler: fix perf fd leaks + resolves: rhbz#2173938 + - allow skipping rollback when restarting TuneD or switching profile + resolves: rhbz#2203142 + - function_calc_isolated_cores: no errors for offline CPUs + resolves: rhbz#2217015 * Fri Feb 17 2023 Jaroslav Škarvada - 2.20.0-1 - new release - rebased tuned to latest upstream - related: rhbz#2133814 + related: rhbz#2133815 * Wed Feb 15 2023 Jaroslav Škarvada - 2.20.0-0.2.rc1 - post RC.1 fixes - related: rhbz#2133814 + related: rhbz#2133815 - fixed possible traceback on SIGHUP + resolves: rhbz#2169712 * Wed Feb 8 2023 Jaroslav Škarvada - 2.20.0-0.1.rc1 - new release - rebased tuned to latest upstream - resolves: rhbz#2133814 + resolves: rhbz#2133815 - systemd: relax polkit requirement - resolves: rhbz#2065591 - sysvinit: fixed path + resolves: rhbz#2118301 - plugin_cpu: added support for pm_qos_resume_latency_us + resolves: rhbz#2118786 - do not exit on duplicate config lines - resolves: rhbz#2071418 - profiles: new cpu-partitioning-powersave profile - profiles: new profile for AWS EC2 - API: add support for moving devices between instances + resolves: rhbz#2113925 - D-Bus: send tracebacks through D-Bus only in debug mode + resolves: rhbz#2159680 - Makefile: added fix for python-3.12 - throughput-performance: set net.core.somaxconn to at least 2048 - resolves: rhbz#1998310 - plugin_scheduler: do not leak FDs from the perf - resolves: rhbz#2080227 - plugin_cpu: added support for intel_pstate scaling driver + resolves: rhbz#2095829 - added support for the API access through the Unix Domain Socket + resolves: rhbz#2113900 * Fri Aug 19 2022 Jaroslav Škarvada - 2.19.0-1 - new release - rebased tuned to latest upstream - related: rhbz#2057602 + related: rhbz#2057609 * Tue Aug 9 2022 Jaroslav Škarvada - 2.19.0-0.1.rc1 - new release - rebased tuned to latest upstream - resolves: rhbz#2057602 + resolves: rhbz#2057609 - fixed parsing of inline comments - resolves: rhbz#2060138 - added support for quotes in isolated_cores specification - resolves: rhbz#1891036 - - recommend: preset balanced profile for notebook, laptop or portable if - syspurpose is not defined - resolves: rhbz#1896717 + - spec: reduced weak dependencies + resolves: rhbz#2093841 + - recommend: do not ignore syspurpose_role if there is no syspurpose + resolves: rhbz#2030580 + - added support for initial autosetup of isolated_cores + resolves: rhbz#2093847 -* Wed Jun 8 2022 Jaroslav Škarvada - 2.18.0-3 -- bootloader: do not hardcode device to initrd - resolves: rhbz#2050246 - -* Thu Feb 10 2022 Jaroslav Škarvada - 2.18.0-2 -- openshift/atomic: increased nf_conntrack_hashsize - resolves: rhbz#2052886 +* Thu May 19 2022 Jaroslav Škarvada - 2.18.0-2 +- realtime: set tsc as reliable + resolves: rhbz#2086374 * Wed Feb 9 2022 Jaroslav Škarvada - 2.18.0-1 - new release - rebased tuned to latest upstream - related: rhbz#2003833 + related: rhbz#2003838 - tuned-gui: fixed creation of new profile -* Wed Feb 2 2022 Jaroslav Škarvada - 2.18.0-0.1.rc1 +* Sun Jan 16 2022 Jaroslav Škarvada - 2.17.0-1 - new release - rebased tuned to latest upstream - resolves: rhbz#2003833 - - profiles: fix improper parsing of include directive - resolves: rhbz#2017924 - - disk: added support for the nvme - resolves: rhbz#1854816 - - cpu: extended cstate force_latency syntax to allow skipping zero latency - resolves: rhbz#2002744 - - net: added support for the txqueuelen - resolves: rhbz#2015044 - - bootloader: on s390(x) remove TuneD variables from the BLS - resolves: rhbz#1978786 - - daemon: don't do full rollback on systemd failure - resolves: rhbz#2011459 + related: rhbz#2003838 + +* Sun Jan 2 2022 Jaroslav Škarvada - 2.17.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: rhbz#2003838 + - cpu-partitioning: fixed no_balance_cores on newer kernels + resolves: rhbz#1874596 + +* Mon Dec 6 2021 Jaroslav Škarvada - 2.16.0-4 +- spec: do not require subscription-manager on CentOS + Resolves: rhbz#2029405 + +* Wed Aug 18 2021 Jaroslav Škarvada - 2.16.0-3 +- scheduler: allow exclude of processes from the specific cgroup(s) + Resolves: rhbz#1980715 +- Switched to the configparser from the configobj + Resolves: rhbz#1936386 + +* Tue Aug 10 2021 Mohan Boddu - 2.16.0-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 * Wed Jul 21 2021 Jaroslav Škarvada - 2.16.0-1 - new release - rebased tuned to latest upstream - related: rhbz#1936426 + resolves: rhbz#1944643 + - realtime: disabled kvm.nx_huge_page kernel module option in + realtime-virtual-host profile + resolves: rhbz#1976825 + - realtime: explicitly set 'irqaffinity=~' in kernel + command line + resolves: rhbz#1974820 + - scheduler: added abstraction for the sched_* and numa_* variables which + were previously accessible through the sysctl + resolves: rhbz#1952687 + - recommend: fixed wrong profile on ppc64le bare metal servers + resolves: rhbz#1959889 -* Wed Jul 7 2021 Jaroslav Škarvada - 2.16.0-0.1.rc1 -- new release - - rebased tuned to latest upstream - resolves: rhbz#1936426 - - realtime: "isolate_managed_irq=Y" should be mentioned in - "/etc/tuned/realtime-virtual-*-variables.conf" - resolves: rhbz#1817827 - - realtime: changed tuned default to "isolcpus=domain,managed_irq,X-Y" - resolves: rhbz#1820626 - - applying a profile with multiple inheritance where parents include a common - ancestor fails - resolves: rhbz#1825882 - - failure in moving i40e IRQ threads to housekeeping CPUs from isolated CPUs - resolves: rhbz#1933069 - - sort network devices before matching by regex - resolves: rhbz#1939970 - - net: fixed traceback while adjusting the netdev queue count - resolves: rhbz#1943291 - - net: fixed traceback if the first listed device returns netlink error - resolves: rhbz#1944686 - - realtime: improve verification - resolves: rhbz#1947858 - - bootloader: add support for the rpm-ostree - resolves: rhbz#1950164 - - net: fixed traceback if a device channel contains n/a - resolves: rhbz#1974071 - - mssql: updated the profile - resolves: rhbz#1942733 +* Thu May 27 2021 Jaroslav Škarvada - 2.15.0-6 +- Dropped python-schedutils + Resolves: rhbz#1964680 -* Wed Apr 21 2021 Jaroslav Škarvada - 2.15.0-3 -- updated mssql profile - resolves: rhbz#1942733 +* Fri Apr 16 2021 Mohan Boddu - 2.15.0-5 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 -* Fri Feb 19 2021 Jaroslav Škarvada - 2.15.0-2 -- realtime: added support for netdev_queue_count and extended plugin_net - resolves: rhbz#1951992 +* Mon Apr 12 2021 Jaroslav Škarvada - 2.15.0-4 +- updated syspurpose requirement for RHEL-9 + resolves: rhbz#1948764 + +* Mon Feb 08 2021 Jan Zerdik - 2.15.0-3 +- used RHEL recommend.conf + resolves: rhbz#1921016 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.15.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Thu Dec 17 2020 Jaroslav Škarvada - 2.15.0-1 - new release @@ -793,20 +926,16 @@ fi - bootloader: fixed cmdline duplication with BLS and grub2-mkconfig resolves: rhbz#1777874 -* Thu Oct 1 2020 Jaroslav Škarvada - 2.14.0-4 -- realtime-virtual-host: remove lapic advancement calculation and - related qemu-kvm-tools-rhev requirement - Resolves: rhbz#1845717 +* Wed Jul 29 2020 Fedora Release Engineering - 2.14.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -* Fri Jul 3 2020 Jaroslav Škarvada - 2.14.0-3 +* Fri Jul 3 2020 Jaroslav Škarvada - 2.14.0-2 - scheduler: fixed isolated_cores to work with cgroups related: rhbz#1784648 - -* Tue Jun 30 2020 Jaroslav Škarvada - 2.14.0-2 - throughput-performance: fix performance regression on AMD platforms related: rhbz#1746957 -* Mon Jun 15 2020 Jaroslav Škarvada - 2.14.0-1 +* Mon Jun 22 2020 Jaroslav Škarvada - 2.14.0-1 - new release - rebased tuned to latest upstream related: rhbz#1792264 @@ -834,25 +963,14 @@ fi - scheduler: added support for cgroups resolves: rhbz#1784648 -* Mon Mar 23 2020 Jaroslav Škarvada - 2.13.0-6 -- realtime: added conditional support for managed_irq - Resolves: rhbz#1797025 +* Tue May 26 2020 Miro Hrončok - 2.13.0-4 +- Rebuilt for Python 3.9 -* Wed Feb 12 2020 Jaroslav Škarvada - 2.13.0-5 -- profiles: renamed sst profile to intel-sst - related: rhbz#1743879 +* Mon Apr 06 2020 Miro Hrončok - 2.13.0-3 +- Build without unittest2 -* Fri Feb 07 2020 Ondřej Lysoněk - 2.13.0-4 -- Add accelerator-performance profile -- Resolves: rhbz#1795604 - -* Tue Jan 14 2020 Jaroslav Škarvada - 2.13.0-3 -- tuned-profiles-nfv-host: added ncat requirement - resolves: rhbz#1779117 - -* Tue Jan 7 2020 Jaroslav Škarvada - 2.13.0-2 -- profiles: define variables before use - resolves: rhbz#1788102 +* Fri Jan 31 2020 Fedora Release Engineering - 2.13.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Wed Dec 11 2019 Jaroslav Škarvada - 2.13.0-1 - new release @@ -862,6 +980,8 @@ fi resolves: rhbz#1779821 - latency-performance: updated tuning resolves: rhbz#1779759 + - added sst profile + resolves: rhbz#1743879 * Sun Dec 1 2019 Jaroslav Škarvada - 2.13.0-0.1.rc1 - new release @@ -882,18 +1002,19 @@ fi - realtime: added nowatchdog kernel command line option resolves: rhbz#1767614 -* Fri Aug 16 2019 Jaroslav Škarvada - 2.12.0-3 -- used C-states in latency specification - related: rhbz#1737628 +* Thu Oct 03 2019 Miro Hrončok - 2.12.0-4 +- Rebuilt for Python 3.8.0rc1 (#1748018) -* Fri Aug 16 2019 Jaroslav Škarvada - 2.12.0-2 -- plugin_cpu: latency can be now specified as C-state - resolves: rhbz#1737628 +* Mon Aug 19 2019 Miro Hrončok - 2.12.0-3 +- Rebuilt for Python 3.8 + +* Sat Jul 27 2019 Fedora Release Engineering - 2.12.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Thu Jun 27 2019 Jaroslav Škarvada - 2.12.0-1 - new release - rebased tuned to latest upstream - related: rhbz#1685585 + resolves: rhbz#1685585 * Wed Jun 12 2019 Jaroslav Škarvada - 2.12.0-0.1.rc1 - new release @@ -918,59 +1039,78 @@ fi - fixed handling of devices that have been removed and re-attached resolves: rhbz#1677730 -* Fri Feb 22 2019 Jaroslav Škarvada - 2.10.0-15 +* Thu Mar 21 2019 Jaroslav Škarvada - 2.11.0-1 +- new release + - rebased tuned to latest upstream + related: rhbz#1643654 + - used dmidecode only on x86 architectures + resolves: rhbz#1688371 + - recommend: fixed to work without tuned daemon running + resolves: rhbz#1687397 + - powertop2tuned: added support for wakeup tuning (powertop-2.10) + resolves: rhbz#1690354 + +* Sun Mar 10 2019 Jaroslav Škarvada - 2.11.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: rhbz#1643654 + - use online CPUs for cpusets calculations instead of present CPUs + resolves: rhbz#1613478 + - realtime-virtual-guest: run script.sh + related: rhbz#1616043 + - make python-dmidecode a weak dependency + resolves: rhbz#1565598 + - make virtual-host identical to latency-performance + resolves: rhbz#1588932 + - added support for Boot loader specification (BLS) + resolves: rhbz#1576435 + - scheduler: keep polling file objects alive long enough + resolves: rhbz#1659140 + - mssql: updated tuning + resolves: rhbz#1660178 + - s2kb: fixed to be compatible with python3 + resolves: rhbz#1684122 + - profiles: fallback to the 'powersave' scaling governor + resolves: rhbz#1679205 + - disable KSM only once, re-enable it only on full rollback + resolves: rhbz#1622239 + - functions: reworked setup_kvm_mod_low_latency to count with kernel changes + resolves: rhbz#1649408 + - updated virtual-host profile + resolves: rhbz#1569375 + - added log message for unsupported parameters in plugin_net + resolves: rhbz#1533852 + - added range feature for cpu exclusion + resolves: rhbz#1533908 + - make a copy of devices when verifying tuning + resolves: rhbz#1592743 + - fixed disk plugin/plugout problem + resolves: rhbz#1595156 + - fixed unit configuration reading + resolves: rhbz#1613379 + - reload profile configuration on SIGHUP + resolves: rhbz#1631744 + - use built-in functionality to apply system sysctl + resolves: rhbz#1663412 + +* Sun Feb 03 2019 Fedora Release Engineering - 2.10.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jan 25 2019 Jaroslav Škarvada - 2.10.0-6 - Fixed disk plugin to correctly match devices with python3 - Resolves: rhbz#1676513 -* Tue Jan 8 2019 Jaroslav Škarvada - 2.10.0-14 -- Updated mssql tuning - Resolves: rhbz#1660178 - -* Fri Dec 14 2018 Ondřej Lysoněk - 2.10.0-13 -- Fix excessive CPU usage in the scheduler plugin -- Resolves: rhbz#1659140 - -* Mon Dec 10 2018 Jaroslav Škarvada - 2.10.0-12 -- Added workaround for s390x zipl not supporting multiple initrds - Related: rhbz#1576435 - -* Sun Dec 9 2018 Jaroslav Škarvada - 2.10.0-11 -- Added support for BLS - Resolves: rhbz#1576435 - -* Thu Dec 6 2018 Jaroslav Škarvada - 2.10.0-10 -- Reworked setup_kvm_mod_low_latency to count with kernel changes - Resolves: rhbz#1653819 - -* Tue Nov 27 2018 Jaroslav Škarvada - 2.10.0-9 -- realtime-virtual-guest/host: start/stop rt-entsk daemon on - initialization/shutdown - resolves: rhbz#1619822 - -* Tue Nov 27 2018 Jaroslav Škarvada - 2.10.0-8 -- Disable ksm once, re-enable it on full rollback - Resolves: rhbz#1652076 - -* Wed Oct 10 2018 Ondřej Lysoněk - 2.10.0-7 -- Make python3-dmidecode a weak dependency as it's x86_64 only -- Resolves: rhbz#1565598 - -* Tue Oct 09 2018 Ondřej Lysoněk - 2.10.0-6 -- Fix rules for profile recommendation -- Resolves: rhbz#1565598 - -* Wed Aug 8 2018 Jaroslav Škarvada - 2.10.0-5 -- use online CPUs for cpusets calculations instead of present CPUs - resolves: rhbz#1613832 +* Sat Jul 14 2018 Fedora Release Engineering - 2.10.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Wed Jul 11 2018 Ondřej Lysoněk - 2.10.0-4 - Fix a traceback in tuned-gui * Tue Jul 10 2018 Ondřej Lysoněk - 2.10.0-3 -- tuned-adm: Fix a traceback when run without action specified +- Used python intepreter path from the rpm macro -* Mon Jul 9 2018 Jaroslav Škarvada - 2.10.0-2 -- used python intepreter path from the rpm macro +* Tue Jul 10 2018 Ondřej Lysoněk - 2.10.0-2 +- tuned-adm: Fix a traceback when run without action specified +- Fixed compatibility with python-3.7 * Wed Jul 4 2018 Jaroslav Škarvada - 2.10.0-1 - new release @@ -979,20 +1119,30 @@ fi - IRQ affinity handled by scheduler plugin resolves: rhbz#1590937 -* Mon Jun 25 2018 Jaroslav Škarvada - 2.10.0-0.1.rc1 +* Mon Jun 11 2018 Jaroslav Škarvada - 2.10.0-0.1.rc1 - new release - rebased tuned to latest upstream resolves: rhbz#1546598 - script: show stderr output in the log + resolves: rhbz#1536476 - realtime-virtual-host: script.sh: add error checking + resolves: rhbz#1461509 - man: improved tuned-profiles-cpu-partitioning.7 + resolves: rhbz#1548148 - bootloader: check if grub2_cfg_file_name is None in _remove_grub2_tuning() + resolves: rhbz#1571403 - plugin_scheduler: whitelist/blacklist processed also for thread names + resolves: rhbz#1512295 - bootloader: patch all GRUB2 config files + resolves: rhbz#1556990 - profiles: added mssql profile + resolves: rhbz#1442122 - tuned-adm: print log excerpt when changing profile + resolves: rhbz#1538745 - cpu-partitioning: use no_balance_cores instead of no_rebalance_cores + resolves: rhbz#1550573 - sysctl: support assignment modifiers as other plugins do + resolves: rhbz#1564092 - oracle: fixed ip_local_port_range parity warning resolves: rhbz#1527219 - Fix verifying cpumask on systems with more than 32 cores @@ -1000,20 +1150,93 @@ fi - oracle: updated the profile to be in sync with KCS 39188 resolves: rhbz#1447323 -* Fri Jun 8 2018 Jaroslav Škarvada - 2.9.0-10.20180430git5d0a9d91 -- Fixed python3-gobject-base requirement +* Fri Mar 23 2018 Jaroslav Škarvada - 2.9.0-9 +- Used weak deps for tuned-profiles-nfv-host-bin -* Thu May 17 2018 Jaroslav Škarvada - 2.9.0-9.20180430git5d0a9d91 -- Bumped release to fix conflict caused by automerge +* Wed Mar 21 2018 Jaroslav Škarvada - 2.9.0-8 +- Dropped tuned-profiles-nfv-host-bin, now provided by standalone package -* Mon Apr 30 2018 Jaroslav Škarvada - 2.9.0-1.20180430git5d0a9d91 -- New version -- Dropped plugin-disk-traceback-fix patch (upstreamed) +* Fri Mar 2 2018 Jaroslav Škarvada - 2.9.0-7 +- Dropped exlusive arch in tuned-profiles-nfv-host-bin (it seems it + blocked all tuned packages on non x86 architectures) -* Fri Mar 23 2018 Jaroslav Škarvada - 2.8.0-6 -- Dropped qemu-kvm-tools-rhev requirement, now satisfied by - tuned-profiles-nfv-host-bin - Related: rhbz#1504681 +* Fri Feb 09 2018 Fedora Release Engineering - 2.9.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Feb 05 2018 Iryna Shcherbina - 2.9.0-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Jan 31 2018 Jaroslav Škarvada - 2.9.0-4 +- Fixed perf requirement, explicitly require python2-perf + +* Sat Jan 06 2018 Igor Gnatenko - 2.9.0-3 +- Remove obsolete scriptlets + +* Mon Nov 13 2017 Jaroslav Škarvada - 2.9.0-2 +- added tscdeadline_latency.flat benchmark + resolves: rhbz#1504680 + +* Sun Oct 29 2017 Jaroslav Škarvada - 2.9.0-1 +- new release + - rebased tuned to latest upstream + related: rhbz#1467576 + +* Fri Oct 20 2017 Jaroslav Škarvada - 2.9.0-0.2.rc2 +- new release + - rebased tuned to latest upstream + related: rhbz#1467576 + - fixed expansion of the variables in the 'devices' section + related: rhbz#1490399 + - cpu-partitioning: add no_rebalance_cores= option + resolves: rhbz#1497182 + +* Thu Oct 12 2017 Jaroslav Škarvada - 2.9.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: rhbz#1467576 + - added recommend.d functionality + resolves: rhbz#1459146 + - recommend: added support for matching of processes + resolves: rhbz#1461838 + - plugin_video: added support for the 'dpm' power method + resolves: rhbz#1417659 + - list available profiles on 'tuned-adm profile' + resolves: rhbz#988433 + - cpu-partitioning: used tuned instead of tuna for cores isolation + resolves: rhbz#1442229 + - inventory: added workaround for pyudev < 0.18 + resolves: rhbz#1251240 + - realtime: used skew_tick=1 in kernel cmdline + resolves: rhbz#1447938 + - realtime-virtual-guest: re-assigned kernel thread priorities + resolves: rhbz#1452357 + - bootloader: splitted string for removal from cmdline + resolves: rhbz#1461279 + - network-latency: added skew_tick=1 kernel command line parameter + resolves: rhbz#1451073 + - bootloader: accepted only certain values for initrd_remove_dir + resolves: rhbz#1455161 + - increased udev monitor buffer size, made it configurable + resolves: rhbz#1442306 + - bootloader: don't add nonexistent overlay image to grub.cfg + resolves: rhbz#1454340 + - plugin_cpu: don't log error in execute() if EPB is not supported + resolves: rhbz#1443182 + - sap-hana: fixed description of the sap-hana profiles + resolves: rhbz#1482005 + - plugin_systemd: on full_rollback notify about need of initrd regeneration + resolves: rhbz#1469258 + - don't log errors about missing files on verify with ignore_missing set + resolves: rhbz#1451435 + - plugin_scheduler: improved logging + resolves: rhbz#1474961 + - improved checking if we are rebooting or not + resolves: rhbz#1475571 + - started dbus exports after a profile is applied + resolves: rhbz#1443142 + - sap-hana: changed force_latency to 70 + resolves: rhbz#1501252 * Mon Aug 21 2017 Jaroslav Škarvada - 2.8.0-5 - kernel-tools made weak dependency