diff --git a/.vscode/settings.json b/.vscode/settings.json index c4bc2e4..eff487d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -41,7 +41,9 @@ "configmap", "containerd", "cowsay", + "cpufreq", "cpulimit", + "cpupower", "cryptsetup", "csma", "datagram", @@ -109,6 +111,7 @@ "nvme", "ocsp", "odhcpd", + "ondemand", "openpgp", "opkg", "pacman", @@ -122,6 +125,8 @@ "portsnap", "posix", "poweroff", + "powersave", + "pstate", "pulumi", "pvresize", "radeon", @@ -136,6 +141,7 @@ "runtimes", "sata", "schedulable", + "schedutil", "scrollback", "setfacl", "setfattr", @@ -168,7 +174,6 @@ "xkcd", "zstd" ], - "markdown.extension.toc.levels": "2..6", "markdown.extension.toc.orderedList": true } \ No newline at end of file diff --git a/knowledge base/check or set the cpu frequency or governor.md b/knowledge base/check or set the cpu frequency or governor.md new file mode 100644 index 0000000..8ef89f5 --- /dev/null +++ b/knowledge base/check or set the cpu frequency or governor.md @@ -0,0 +1,73 @@ +# Check or set the CPU frequency or governor + +1. [TL;DR](#tldr) +1. [Further readings](#further-readings) +1. [Sources](#sources) + +## TL;DR + +```sh +# Check what governors are available. +cat '/sys/devices/system/cpu/cpufreq/'*'/scaling_available_governors' + +# Get the current active governor. +cat '/sys/devices/system/cpu/cpufreq/policy0/scaling_governor' +cat '/sys/devices/system/cpu/cpufreq/'*'/scaling_governor' + +# List the active CPUs affected by the current governor. +cat '/sys/devices/system/cpu/cpufreq/'*'/affected_cpus' + +# Enable new governors. +echo 'schedutil' | sudo tee '/sys/devices/system/cpu/cpufreq/policy0/scaling_governor' +echo 'powersave' | sudo tee '/sys/devices/system/cpu/cpufreq/policy1/scaling_governor' + +# Get the current frequency of CPUs. +cat '/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq' +cat '/sys/devices/system/cpu/cpufreq/'*'/scaling_cur_freq' + +# Do not boost the CPU frequency for niced loads. +# The governor must support it - check if the file exists. +echo 1 | sudo tee '/sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load' + +# Disable (1) or enable (0) turbo boost for Intel CPUs. +echo 1 | sudo tee '/sys/devices/system/cpu/intel_pstate/no_turbo' + +# Check what energy vs performance hint are available for CPUs. +cat '/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences' + +# Get the current energy vs performance hint used by CPUs. +cat '/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference' +cat '/sys/devices/system/cpu/cpu'*'/cpufreq/energy_performance_preference' + +# Set energy vs performance hints. +echo 'balance_performance' | sudo tee '/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference' +echo 'power' | sudo tee '/sys/devices/system/cpu/cpu'*'/cpufreq/energy_performance_preference' +``` + +## Further readings + +- [`cpupower`][cpupower] +- [Set the _ondemand_ CPU governor to not rise the frequencies for niced loads][set the ondemand cpu governor to not rise the frequencies for niced loads] + +## Sources + +All the references in the [further readings] section, plus the following: + +- [CPU performance scaling] +- The [*intel_pstate* CPU performance scaling driver][intel_pstate cpu performance scaling driver] + + + + +[further readings]: #further-readings + + +[cpupower]: cpupower.md +[set the ondemand cpu governor to not rise the frequencies for niced loads]: set%20the%20ondemand%20cpu%20governor%20to%20not%20rise%20the%20frequencies%20for%20niced%20loads.md +[tlp]: tlp.md + + +[cpu performance scaling]: https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html +[intel_pstate cpu performance scaling driver]: https://www.kernel.org/doc/html/next/admin-guide/pm/intel_pstate.html diff --git a/knowledge base/check or set the cpu frequency or governor.placeholder b/knowledge base/check or set the cpu frequency or governor.placeholder deleted file mode 100644 index c657f66..0000000 --- a/knowledge base/check or set the cpu frequency or governor.placeholder +++ /dev/null @@ -1,17 +0,0 @@ -# Check or set the CPU frequency or governor - -```sh -cat '/sys/devices/system/cpu/cpufreq/'*'/affected_cpus' -cat '/sys/devices/system/cpu/cpufreq/'*'/scaling_available_governors' - -# Get the current active governor. -cat '/sys/devices/system/cpu/cpufreq/policy0/scaling_governor' -cat '/sys/devices/system/cpu/cpufreq/'*'/scaling_governor' - -# Enable a new governor. -echo 'schedutil' | sudo tee '/sys/devices/system/cpu/cpufreq/policy0/scaling_governor' -echo 'powersave' | sudo tee '/sys/devices/system/cpu/cpufreq/policy1/scaling_governor' - -# Do not boost the CPU frequency for nice loads. -echo 1 | sudo tee '/sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load' -``` diff --git a/knowledge base/cpupower.md b/knowledge base/cpupower.md index 865d75d..f3e6c9c 100644 --- a/knowledge base/cpupower.md +++ b/knowledge base/cpupower.md @@ -6,19 +6,29 @@ Default governor is _ondemand_ for older CPUs and kernels and _schedutil_ for ne ```sh # Install. -sudo apt install 'linux-cpupower' -sudo dnf install 'kernel-tools' +apt install 'linux-cpupower' +dnf install 'kernel-tools' +zypper install 'cpupower' # List the available governors. cpupower frequency-info --governors +cpupower -c "3-6" frequency-info --governors +cpupower --cpu "0-$(( $(nproc) - 1 ))" frequency-info --governors # Get the current active governor. cpupower frequency-info --policy +cpupower -c '4' frequency-info --policy +cpupower --cpu '4,5' frequency-info --policy -# Set a new governor until reboot. +# Set new governors until reboot. sudo cpupower frequency-set -g 'performance' -sudo cpupower frequency-set --governor 'powersave' -sudo cpupower frequency-set --governor 'schedutil' +sudo cpupower -c '1' frequency-set --governor 'powersave' +sudo cpupower --cpu '2,4,7' frequency-set --governor 'schedutil' + +# Get the current frequency of CPUs. +cpupower frequency-info -f +cpupower -c '4-7' frequency-info -fm +cpupower --cpu '2,5' frequency-info --freq --human ``` ## Further readings diff --git a/knowledge base/set the ondemand cpu governor to not rise the frequencies for niced load.md b/knowledge base/set the ondemand cpu governor to not rise the frequencies for niced loads.md similarity index 72% rename from knowledge base/set the ondemand cpu governor to not rise the frequencies for niced load.md rename to knowledge base/set the ondemand cpu governor to not rise the frequencies for niced loads.md index 09f3738..83a756b 100644 --- a/knowledge base/set the ondemand cpu governor to not rise the frequencies for niced load.md +++ b/knowledge base/set the ondemand cpu governor to not rise the frequencies for niced loads.md @@ -8,16 +8,16 @@ ## TL;DR ```sh -sudo cpupower frequency-set --governor ondemand -echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load +sudo cpupower frequency-set --governor 'ondemand' +echo 1 | sudo tee '/sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load' # set this on boot -echo "w /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load - - - - 1" | sudo tee /etc/tmpfiles.d/ondemand-ignore-nice.conf +echo "w /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load - - - - 1" | sudo tee '/etc/tmpfiles.d/ondemand-ignore-nice.conf' ``` ## Further readings -- [Cpufreq] +- [`cpupower`][cpupower] - [Laptop overheating and battery duration reduction] + + +[further readings]: #further-readings + + +[cpupower]: cpupower.md + + +[battery care vendor specifics]: https://linrunner.de/tlp/settings/bc-vendors.html +[documentation]: https://linrunner.de/tlp/index.html + +