diff --git a/.gitignore b/.gitignore index 755600b..70d925e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.26.0.tar.gz +SOURCES/tuned-2.27.0.tar.gz diff --git a/.tuned.metadata b/.tuned.metadata index e0156f4..fbe4f4c 100644 --- a/.tuned.metadata +++ b/.tuned.metadata @@ -1 +1 @@ -54cbb6b4c55a86b1a17807e4ce3a0f660c0d7b19 SOURCES/tuned-2.26.0.tar.gz +6cb7315fcded9ca9a414918876cc366773e05607 SOURCES/tuned-2.27.0.tar.gz diff --git a/SOURCES/tuned-2.27.0-net-coalescing-fix.patch b/SOURCES/tuned-2.27.0-net-coalescing-fix.patch new file mode 100644 index 0000000..c263b2c --- /dev/null +++ b/SOURCES/tuned-2.27.0-net-coalescing-fix.patch @@ -0,0 +1,73 @@ +From f5cfd2a72263ebf1c868fa75afd6d6e085e10e50 Mon Sep 17 00:00:00 2001 +From: Fothsid <18036123+Fothsid@users.noreply.github.com> +Date: Wed, 22 Apr 2026 16:01:23 +0200 +Subject: [PATCH] net: add more coalescing options, filter out unsupported ones + +Ethtool's tx-aggr-* parameters were not known to tuned. + +In addition to adding those, checking logic is changed to +filter out unknown parameters supported by ethtool instead +of simply failing to set any options. + +Resolves: RHEL-152675 +--- + tuned/plugins/plugin_net.py | 20 +++++++++----------- + 1 file changed, 9 insertions(+), 11 deletions(-) + +diff --git a/tuned/plugins/plugin_net.py b/tuned/plugins/plugin_net.py +index 6d291b291..31b30f5df 100644 +--- a/tuned/plugins/plugin_net.py ++++ b/tuned/plugins/plugin_net.py +@@ -332,7 +332,10 @@ def _get_config_options_coalesce(cls): + "rx-frames-high": None, + "tx-usecs-high": None, + "tx-frames-high": None, +- "sample-interval": None ++ "sample-interval": None, ++ "tx-aggr-max-bytes": None, ++ "tx-aggr-max-frames": None, ++ "tx-aggr-time-usecs": None + } + + @classmethod +@@ -615,7 +618,7 @@ def _get_mtu(self, device, instance, ignore_missing=False): + # d is dict: {parameter: value} + def _check_parameters(self, context, d): + if context == "features": +- return True ++ return d + params = set(d.keys()) + supported_getter = { "coalesce": self._get_config_options_coalesce, \ + "pause": self._get_config_options_pause, \ +@@ -623,9 +626,8 @@ def _check_parameters(self, context, d): + "channels": self._get_config_options_channels } + supported = set(supported_getter[context]().keys()) + if not params.issubset(supported): +- log.error("unknown %s parameter(s): %s" % (context, str(params - supported))) +- return False +- return True ++ log.warning("ignoring unknown %s parameter(s): %s" % (context, str(params - supported))) ++ return {k: v for k, v in d.items() if k in supported} + + # parse output of ethtool -a + def _parse_pause_parameters(self, s): +@@ -712,17 +714,13 @@ def _get_device_parameters(self, instance, context, device): + "channels": self._parse_channels_parameters } + parser = context2parser[context] + d = parser(value) +- if context == "coalesce" and not self._check_parameters(context, d): +- return None +- return d ++ return self._check_parameters(context, d) + + def _set_device_parameters(self, instance, context, value, device, sim, + dev_params = None): + if value is None or len(value) == 0: + return None +- d = self._parse_config_parameters(value, context) +- if d is None or not self._check_parameters(context, d): +- return {} ++ d = self._check_parameters(context, self._parse_config_parameters(value, context)) + # check if device supports parameters and filter out unsupported ones + if dev_params: + self._check_device_support(instance, context, d, device, dev_params) diff --git a/SOURCES/tuned-2.27.0-openshift-revert.patch b/SOURCES/tuned-2.27.0-openshift-revert.patch new file mode 100644 index 0000000..a4f2250 --- /dev/null +++ b/SOURCES/tuned-2.27.0-openshift-revert.patch @@ -0,0 +1,29 @@ +From 8d6874c9439054f5baa04b9988d4a472c5c2924b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= +Date: Tue, 10 Feb 2026 22:36:42 +0100 +Subject: [PATCH] Revert "feat(openshift): Optimize TCP settings for high + throughput and low latency" + +This reverts commit 7a1a288e85fdcd0cb163b307a54a0718064f6641. +--- + profiles/openshift/tuned.conf | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/profiles/openshift/tuned.conf b/profiles/openshift/tuned.conf +index b3cf62b..197850c 100644 +--- a/profiles/openshift/tuned.conf ++++ b/profiles/openshift/tuned.conf +@@ -17,10 +17,6 @@ kernel.pid_max=>4194304 + fs.aio-max-nr=>1048576 + net.netfilter.nf_conntrack_max=1048576 + net.ipv4.conf.all.arp_announce=2 +-net.ipv4.tcp_notsent_lowat=131072 +-net.ipv4.tcp_slow_start_after_idle=0 +-net.ipv4.tcp_rmem="4096 131072 16777216" +-net.ipv4.tcp_wmem="4096 16384 16777216" + net.ipv4.neigh.default.gc_thresh1=8192 + net.ipv4.neigh.default.gc_thresh2=32768 + net.ipv4.neigh.default.gc_thresh3=65536 +-- +2.52.0 + diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec index 64bf69e..771e753 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -42,8 +42,8 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.26.0 -Release: 1%{?prerel1}%{?dist} +Version: 2.27.0 +Release: 2%{?prerel1}%{?dist} License: GPLv2+ Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz # RHEL-9 specific recommend.conf: @@ -119,7 +119,11 @@ Requires: python3-syspurpose %endif %endif # Revert default profile directory migration only applicable for RHEL-10+ -Patch0: tuned-2.25.0-revert-profile-migration.patch +Patch: tuned-2.25.0-revert-profile-migration.patch +# Revert not yet RHEL approved tuning +Patch: tuned-2.27.0-openshift-revert.patch +# https://github.com/redhat-performance/tuned/pull/852 +Patch: tuned-2.27.0-net-coalescing-fix.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -309,7 +313,7 @@ make install-ppd DESTDIR="%{buildroot}" BINDIR="%{_bindir}" \ SBINDIR="%{_sbindir}" DOCDIR="%{docdir}" %{make_python_arg} # manual -make install-html DESTDIR=%{buildroot} DOCDIR=%{docdir} +make install-html DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg} # conditional support for grub2, grub2 is not available on all architectures # and tuned is noarch package, thus the following hack is needed @@ -638,6 +642,28 @@ fi %config(noreplace) %{_sysconfdir}/tuned/ppd.conf %changelog +* Mon Jun 15 2026 Jaroslav Škarvada - 2.27.0-2 +- net: added more coalescing options, filter out unsupported ones + resolves: RHEL-181668 + +* Sun Feb 22 2026 Jaroslav Škarvada - 2.27.0-1 +- new release + - rebased tuned to latest upstream + related: RHEL-123607 + +* Tue Feb 10 2026 Jaroslav Škarvada - 2.27.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: RHEL-123607 + - cpu-partitioning: autodetect dracut hook directory, systemd workaround + - openshift: optimize TCP settings for high throughput and low latency + - profiles: Set boost=1 in *-performance profiles + - sap-hana: force latency to 70 us, not to C-states + - man: fixed instance_acquire_devices example in tuned-adm man + - spec: use correct python interpreter for documentation installation + - sysctl: add reapply_sysctl_exclude option + - ppd: ask tuned recommend for base profile + * Mon Aug 25 2025 Jaroslav Škarvada - 2.26.0-1 - new release - rebased tuned to latest upstream