new release
rebased tuned to latest upstream
resolves: RHEL-94809
tuned-ppd: renamed thinkpad_function_keys as sysfs_acpi_monitor
tuned-ppd: enabled sysfs_acpi_monitor by default
tuned-ppd: fixed inotify watch for performance degradation
tuned-ppd: pinned virtual files in memory for inotify
fixed instance priority inheritance
resolves: RHEL-94842
hotplug: added fixes for device remove race condition
tuned-main.conf: added startup_udev_settle_wait option
resolves: RHEL-88238
functions: silenced errors if module kvm_intel does not exist
functions: make calc_isolated_cores return CPU ranges
scsi: used 'med_power_with_dipm' for SATA ALPM
scsi: do not set ALPM on external SATA ports
resolves: RHEL-79913
network_latency: Set non-zero rcutree.nohz_full_patience_delay
realtime: disable appropriate P-State drivers
plugin_disk: added support for MMC (MultiMediaCard) devices
udev: fix possible traceback in device matcher
resolves: RHEL-97087
udev-settle: obey udev buffer size and handle possible tracebacks
resolves: RHEL-92637
daemon: re-raise daemon init exception in no-daemon mode
vm: deprecate dirty_ratio in favour of dirty_bytes with percents
gui: fix the profile deleter script
This commit is contained in:
parent
4bf638ab64
commit
1b1e8461f1
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (tuned-2.25.1.tar.gz) = fa5ac9d818d11b118fb7c26db28993b704f590070edbece570fee1a6c60a1f5f850b711683c45b46f33d9b056a84e43ced2c4c1ee58e9ef3d1fd035a4c1d4de4
|
||||
SHA512 (tuned-2.26.0-rc.1.tar.gz) = 31a54a43db676761610723e46abc7d280f5e547291146af9c210ac2d60376fa73941f7c39ffc197a443b459abe0bfe29e813c1450f5d0304ec148f3b2ce96c2a
|
||||
|
||||
@ -1,311 +0,0 @@
|
||||
From 91cb383ad7339873da3480463061500a308ba825 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= <zacik.pa@gmail.com>
|
||||
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?= <zacik.pa@gmail.com>
|
||||
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):
|
||||
68
tuned.spec
68
tuned.spec
@ -34,23 +34,24 @@
|
||||
%endif
|
||||
%endif
|
||||
|
||||
#%%global prerelease rc
|
||||
#%%global prereleasenum 1
|
||||
%global prerelease rc
|
||||
%global prereleasenum 1
|
||||
|
||||
%global prerel1 %{?prerelease:.%{prerelease}%{prereleasenum}}
|
||||
%global prerel2 %{?prerelease:-%{prerelease}.%{prereleasenum}}
|
||||
|
||||
Summary: A dynamic adaptive system tuning daemon
|
||||
Name: tuned
|
||||
Version: 2.25.1
|
||||
Release: 2%{?prerel1}%{?dist}
|
||||
Version: 2.26.0
|
||||
Release: 0.1%{?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-9 specific recommend.conf:
|
||||
Source1: recommend.conf
|
||||
URL: http://www.tuned-project.org/
|
||||
BuildArch: noarch
|
||||
BuildRequires: systemd, desktop-file-utils
|
||||
BuildRequires: systemd
|
||||
BuildRequires: desktop-file-utils
|
||||
%if 0%{?rhel}
|
||||
BuildRequires: asciidoc
|
||||
%else
|
||||
@ -60,7 +61,8 @@ Requires(post): systemd, virt-what
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
BuildRequires: make
|
||||
BuildRequires: %{_py}, %{_py}-devel
|
||||
BuildRequires: %{_py}
|
||||
BuildRequires: %{_py}-devel
|
||||
# BuildRequires for 'make test'
|
||||
# python-mock is needed for python-2.7, but it's not available on RHEL-7, only in the EPEL
|
||||
%if %{without python3} && ( ! 0%{?rhel} || 0%{?rhel} >= 8 || 0%{?epel})
|
||||
@ -76,15 +78,23 @@ Requires: %{_py}-schedutils
|
||||
# requires for packages with inconsistent python2/3 names
|
||||
%if %{with python3}
|
||||
# BuildRequires for 'make test'
|
||||
BuildRequires: python3-dbus, python3-gobject-base
|
||||
Requires: python3-dbus, python3-gobject-base
|
||||
BuildRequires: python3-dbus
|
||||
BuildRequires: python3-gobject-base
|
||||
Requires: python3-dbus
|
||||
Requires: python3-gobject-base
|
||||
%else
|
||||
# BuildRequires for 'make test'
|
||||
BuildRequires: dbus-python, pygobject3-base
|
||||
Requires: dbus-python, pygobject3-base
|
||||
BuildRequires: dbus-python
|
||||
BuildRequires: pygobject3-base
|
||||
Requires: dbus-python
|
||||
Requires: pygobject3-base
|
||||
%endif
|
||||
Requires: virt-what, ethtool, gawk
|
||||
Requires: util-linux, dbus, polkit
|
||||
Requires: virt-what
|
||||
Requires: ethtool
|
||||
Requires: gawk
|
||||
Requires: util-linux
|
||||
Requires: dbus
|
||||
Requires: polkit
|
||||
%if 0%{?fedora} > 22 || 0%{?rhel} > 7
|
||||
Recommends: dmidecode
|
||||
# https://src.fedoraproject.org/rpms/tuned/pull-request/8
|
||||
@ -108,7 +118,6 @@ Recommends: subscription-manager
|
||||
Requires: python3-syspurpose
|
||||
%endif
|
||||
%endif
|
||||
Patch0: tuned-2.25.1-bootc-kargs.patch
|
||||
|
||||
%description
|
||||
The tuned package contains a daemon that tunes system settings dynamically.
|
||||
@ -281,7 +290,7 @@ to TuneD from power-profiles-daemon (PPD).
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{version}%{?prerel2}
|
||||
|
||||
# Replace the upstream recommend.conf with a RHEL-9-specific one
|
||||
# Replace the upstream recommend.conf with a RHEL-10-specific one
|
||||
rm -f recommend.conf
|
||||
cp -p %{SOURCE1} recommend.conf
|
||||
|
||||
@ -296,10 +305,8 @@ make install DESTDIR="%{buildroot}" BINDIR="%{_bindir}" SBINDIR="%{_sbindir}" \
|
||||
make install-ppd DESTDIR="%{buildroot}" BINDIR="%{_bindir}" \
|
||||
SBINDIR="%{_sbindir}" DOCDIR="%{docdir}" %{make_python_arg}
|
||||
|
||||
%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
|
||||
@ -628,6 +635,35 @@ fi
|
||||
%config(noreplace) %{_sysconfdir}/tuned/ppd.conf
|
||||
|
||||
%changelog
|
||||
* Sun Aug 17 2025 Jaroslav Škarvada <jskarvad@redhat.com> - 2.26.0-0.1.rc1
|
||||
- new release
|
||||
- rebased tuned to latest upstream
|
||||
resolves: RHEL-94809
|
||||
- tuned-ppd: renamed thinkpad_function_keys as sysfs_acpi_monitor
|
||||
- tuned-ppd: enabled sysfs_acpi_monitor by default
|
||||
- tuned-ppd: fixed inotify watch for performance degradation
|
||||
- tuned-ppd: pinned virtual files in memory for inotify
|
||||
- fixed instance priority inheritance
|
||||
resolves: RHEL-94842
|
||||
- hotplug: added fixes for device remove race condition
|
||||
- tuned-main.conf: added startup_udev_settle_wait option
|
||||
resolves: RHEL-88238
|
||||
- functions: silenced errors if module kvm_intel does not exist
|
||||
- functions: make calc_isolated_cores return CPU ranges
|
||||
- scsi: used 'med_power_with_dipm' for SATA ALPM
|
||||
- scsi: do not set ALPM on external SATA ports
|
||||
resolves: RHEL-79913
|
||||
- network_latency: Set non-zero rcutree.nohz_full_patience_delay
|
||||
- realtime: disable appropriate P-State drivers
|
||||
- plugin_disk: added support for MMC (MultiMediaCard) devices
|
||||
- udev: fix possible traceback in device matcher
|
||||
resolves: RHEL-97087
|
||||
- udev-settle: obey udev buffer size and handle possible tracebacks
|
||||
resolves: RHEL-92637
|
||||
- daemon: re-raise daemon init exception in no-daemon mode
|
||||
- vm: deprecate dirty_ratio in favour of dirty_bytes with percents
|
||||
- gui: fix the profile deleter script
|
||||
|
||||
* Thu Jun 05 2025 Pavol Žáčik <pzacik@redhat.com> - 2.25.1-2
|
||||
- Fix handling of kernel arguments on bootc systems
|
||||
resolves: RHEL-94185
|
||||
|
||||
Loading…
Reference in New Issue
Block a user