diff --git a/tuned-2.18.0-rhel-8-profiles.patch b/tuned-2.18.0-rhel-8-profiles.patch new file mode 100644 index 0000000000000000000000000000000000000000..d1d575055acb0f36fcb4d5c2ff64cfcd7c02b3b9 --- /dev/null +++ b/tuned-2.18.0-rhel-8-profiles.patch @@ -0,0 +1,83 @@ +diff --git a/profiles/latency-performance/tuned.conf b/profiles/latency-performance/tuned.conf +index d200b5c..877229f 100644 +--- a/profiles/latency-performance/tuned.conf ++++ b/profiles/latency-performance/tuned.conf +@@ -32,3 +32,16 @@ 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] ++# 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..8dcee57 100644 +--- a/profiles/sap-hana/tuned.conf ++++ b/profiles/sap-hana/tuned.conf +@@ -20,3 +20,7 @@ kernel.numa_balancing = 0 + vm.dirty_ratio = 40 + vm.dirty_background_ratio = 10 + vm.swappiness = 10 ++ ++[scheduler] ++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 98c6b26..ebb3f7d 100644 +--- a/profiles/throughput-performance/tuned.conf ++++ b/profiles/throughput-performance/tuned.conf +@@ -58,9 +58,31 @@ vm.dirty_background_ratio = 10 + # and move them to swap cache + vm.swappiness=10 + ++[scheduler] ++# 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} ++sched_migration_cost_ns=5000000 +diff --git a/profiles/virtual-host/tuned.conf b/profiles/virtual-host/tuned.conf +index 5301d9f..74a5fb0 100644 +--- a/profiles/virtual-host/tuned.conf ++++ b/profiles/virtual-host/tuned.conf +@@ -14,3 +14,9 @@ vm.dirty_background_ratio = 5 + [cpu] + # Setting C3 state sleep mode/power savings + force_latency=cstate.id_no_zero:3|70 ++ ++[scheduler] ++# 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/tuned-2.18.0-sd-load-balance.patch b/tuned-2.18.0-sd-load-balance.patch new file mode 100644 index 0000000000000000000000000000000000000000..d42600c27822a33e14651c4d9adeb87fd291c4ad --- /dev/null +++ b/tuned-2.18.0-sd-load-balance.patch @@ -0,0 +1,80 @@ +diff --git a/profiles/cpu-partitioning/script.sh b/profiles/cpu-partitioning/script.sh +index 84e04fd..8677050 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 979e40b..842e2bd 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}:} +- + [sysctl] + kernel.hung_task_timeout_secs = 600 + kernel.nmi_watchdog = 0 +@@ -68,4 +66,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/tuned.spec b/tuned.spec index b05ba05e2bdc868437e0c1e8f8eaef7959887a77..a87fcdc192fc39f0635d7cb9ece0580f7760adf1 100644 --- a/tuned.spec +++ b/tuned.spec @@ -1,7 +1,7 @@ Summary: A system tuning service for Linux Name: tuned Version: 2.19.0 -Release: 1 +Release: 2 License: GPLv2+ Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}.tar.gz#/%{name}-%{version}%{?prerel2}.tar.gz URL: http://www.tuned-project.org/ @@ -27,7 +27,12 @@ Requires: %{_py}-schedutils, %{_py}-decorator, %{_py}-perf Recommends:kernel-tools Recommends:tuned-profiles-nfv-host-bin -Patch9000: bugfix-tuned-2.8.0-restart-after-kill-dbus.patch +Patch0: bugfix-tuned-2.8.0-restart-after-kill-dbus.patch +#the below two patches is from +#http://ftp.iij.ad.jp/pub/linux/centos-vault/centos/8-stream/BaseOS/Source/SPackages/tuned-2.19.0-1.el8.src.rpm +#this is used to compatible with old tuned version like 2.10 +Patch1: tuned-2.18.0-rhel-8-profiles.patch +Patch2: tuned-2.18.0-sd-load-balance.patch Provides: tuned-gtk Provides: tuned-utils @@ -291,6 +296,9 @@ fi %{_mandir}/man7/tuned-profiles-spectrumscale-ece.7* %changelog +* Tue Nov 8 2022 Qingqing Li - 2.19.0-2 +- backport some patches to compatible with version 2.10 + * Fri Sep 23 2022 langfei - 2.19.0-1 - upgrade to 2.19.0