- Saved searches
- Use saved searches to filter your results more quickly
- MarceloSerra/Disable-Turbo-Boost-on-Linux-Based
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- readme.md
- Prevent overheating by disabling turbo boost
- Motivation
- Solution
- Disable Intel Turbo Boost (on Windows)
- Disable Intel Turbo Boost (on Ubuntu)
- Results
- Включение и отключение Turbo Boost в Linux
- 1. Текущие состояние Turbo Boost и его смена.
- 2. Управление режимом питания процессора, если используется intel_pstate:
- Игорь Горгуль
- Оставить комментарий Отменить комментарий
- turboboost (Решено)
- 9 комментариев
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Just an easy way to disable (and re-enable) Intel Turbo Boost using shell scripts.
MarceloSerra/Disable-Turbo-Boost-on-Linux-Based
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
readme.md
git clone https://github.com/MarceloSerra/Disable-Turbo-Boost-on-Linux
Go to the folder, extract and execute chmod inside to give permissions (* will give permissions to all files in the folder, but you can set to one file just changing * by file name):
Now it’s necessary to verify if you’ve got an intel scaling driver (intel_pstate) output:
If the output was (intel_pstate), you can continue and execute:
You can check the status by executing (0 output = ENABLED and 1 output = DISABLED):
You can also re-enable the Turbo Boost by executing:
Prevent overheating by disabling turbo boost
CPU throttling, PC shutting down abruptly, etc. These may be signs of overheating. Disabling Intel turbo boost may help. Screenshot above is the temperature range after disabling turbo boost.
Motivation
My laptop has first generation Intel Core i7 740QM. Its peak CPU core temperature hit a high of 97C (about 207 Fahrenheit) which is very close to its junction temperature of 100C.
Even if the processor could handle the heat, I was concerned about how the heat would affect interconnected components. One may argue that the brains who designed it ought to have thought about it but I beg to differ. The heat vent of the laptop blows directly onto the screen when the laptop lid is open. Take a look:
When the CPU core temperature hits close to its junction temperature, throttling will begin taking effect and fans will be running at full speed generating loud noise.
Having more stable and predictable performance is what I prefer and disabling Intel Turbo Boost seemed like an easy win.
Solution
Disable Intel Turbo Boost (on Windows)
Tweak the maximum processor state to 99% via Power Options.
You do lose 1% of non-turbo boost speed as a result but this is likely to be negligible to you.
Disable Intel Turbo Boost (on Ubuntu)
Firstly, identify which frequency scaling driver is used by your Intel CPU.
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
If it is intel_pstate , the command to execute in order to disable turbo boost is:
echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
If it is acpi_cpufreq , the command to execute is:
echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost
To have this command executed on startup, add it into crontab
Replace with the appropriate one for your machine.
Results
Peak temperatures are now about 20C (68F) lower.
Quite an impressive drop! I did not run benchmarks but real world performance difference is not noticeable to me. Furthermore, throttling does not occur while gaming anymore.
Включение и отключение Turbo Boost в Linux
Бывает нужно отключить Turbo Boost или наоборот включить его, так же узнать текущие состояние. В Linux это можно сделать без перезагрузки в BIOS. Мы рассмотрим с помощью каких команд узнать текущие состояние, так же изменим режим работы процессора с «энергосбережение» на «производительность», что заставит процессор работать более эффективно.
1. Текущие состояние Turbo Boost и его смена.
Установим необходимый пакет
Проверим текущие состоние, где -p0 — номер ядра:
1 = деактивирован
0 = активирован
rdmsr:open: No such file or directory
Нужно загрузить модуль msr в ядро:
Далее можно правя регистры включать или отключать Turbo Boost, но чтобы было проще, я нашел скрипт, который активирует или деактивирует его, без запоминания сложных регистров. Назовем его turbo-boost.sh:
#!/bin/bash if [[ -z $(which rdmsr) ]]; then echo "msr-tools is not installed. Run 'sudo apt-get install msr-tools' to install it." >&2 exit 1 fi if [[ ! -z $1 && $1 != "enable" && $1 != "disable" ]]; then echo "Invalid argument: $1" >&2 echo "" echo "Usage: $(basename $0) [disable|enable]" exit 1 fi cores=$(cat /proc/cpuinfo | grep processor | awk '') for core in $cores; do if [[ $1 == "disable" ]]; then sudo wrmsr -p$ 0x1a0 0x4000850089 fi if [[ $1 == "enable" ]]; then sudo wrmsr -p$ 0x1a0 0x850089 fi state=$(sudo rdmsr -p$ 0x1a0 -f 38:38) if [[ $state -eq 1 ]]; then echo "core $: disabled" else echo "core $: enabled" fi done
Теперь вы можете активировать/деактивировать Turbo Boost:
./turbo-boost.sh disable ./turbo-boost.sh enable
2. Управление режимом питания процессора, если используется intel_pstate:
Установим утилиту cpupower:
apt install linux-cpupower
Узнать текущие состояние 1-го ядра:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Возможные варианты: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt.
Нас интересует режим performance, так как он дает наибольшую производительность. У вас возможно стоит powersave, как было у меня, поэтому сменим его.
cpupower frequency-set -g performance
На этом все, мы включили Turbo Boost и переключили режим работы процессора на максимальную производительность, так как нам нет смысла экономить электроэнергию на арендованом сервере в Дата Центре.
Еще дам команду, с помощью которой можно наблюдать за изменением частоты ядер процессора:
watch grep \"cpu MHz\" /proc/cpuinfo
Игорь Горгуль
Оставить комментарий Отменить комментарий
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
turboboost (Решено)
Здравствуйте! Узнал как отключать turboboost (echo «0» | sudo tee /sys/devices/system/cpu/cpufreq/boost) вот только после перезагрузки, значение снова «1». Подскажите, кто знает как решить проблему.
upd. У меня ноутбук, так что в биосе этих настроек нет.
9 комментариев
это можно сделать через конфигурирование TLP:
установите параметры в etc/default/tlp
TLP — конфигурация
Всегда есть быстрое простое неправильное решение.
быстрые простые правильные (иногда) ответы здесь t.me/manjarolinux
Нашел что-то похожее /etc/tlp.conf там есть параметры:
# Set the CPU «turbo boost» feature: 0=disable, 1=allow
# Requires an Intel Core i processor.
# Important:
# — This may conflict with your distribution’s governor settings
# — A value of 1 does *not* activate boosting, it just allows it
Default: # CPU_BOOST_ON_AC=1
# CPU_BOOST_ON_BAT=0
попробовал поставить значение # CPU_BOOST_ON_AC=0 раскомментировал эту строку, перезагружал-без изменений.
Не совсем понимаю, что надо сделать, чтобы это заработало.
я не уверен, но полагаю, что нужно раскомментировать обе строки и оставить значения как есть(ну или поиграться с цифрами, комбинаций не так уж много), потом выполнить
echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost
Необходимо ядро Linux 3.7 и выше
Значение 1 не активирует режим, а только позволяет его использовать
Отправка специалистом технической поддержки ссылки на руководство по эксплуатации и другую документацию, не является отказом в предоставлении поддержки.
bash.org
Поигрался с цифрами-ноль эмоций. Правда там же есть ещё такие строки:
#CPU_SCALING_MIN_FREQ_ON_AC=0
#CPU_SCALING_MAX_FREQ_ON_AC=100
#CPU_SCALING_MIN_FREQ_ON_BAT=0
#CPU_SCALING_MAX_FREQ_ON_BAT=100
раскомментил, пробовал разные варианты, но эффект был один и тот же- процессор работал строго на частоте 1.2Ггц ни больше ни меньше.
В общем, спасибо за ответы, теперь хоть знаю где копать. Буду пробовать дальше.
И снова на просторах инета находил для себя решение путем задействования средств системд.
Внутри юнита (именовать файл можете как угодно, главное чтоб для себя понятно было):
[Unit] Description=Disable Turbo Boost in /sys/devices/system/cpu/cpufreq/boost [Service] Type=oneshot ExecStart=/bin/sh -c "echo 0 > /sys/devices/system/cpu/cpufreq/boost" ExecStop=/bin/sh -c "echo 1 > /sys/devices/system/cpu/cpufreq/boost" RemainAfterExit=yes [Install] WantedBy=multi-user.target
Сохраняем, активируем, смотрим. Делал так на своем старом буке HP. Работало как часы.
Проблема решена! Спасибо! Но почему-то попытки с десятой. Я раз за разом производил одни и те же действия, но сначала система не видела юнит, потом маскировала его, а потом запустила. Не знаю почему так, но всё заработало.
Если кому-нибудь пригодится, то вот что я сделал: через графический интерфейс создал файл turboboost.service в каталоге /etc/systemd/system, скопировал туда
[Unit]
Description=Disable Turbo Boost in /sys/devices/system/cpu/cpufreq/boost
[Service]
Type=oneshot
ExecStart=/bin/sh -c «echo 0 > /sys/devices/system/cpu/cpufreq/boost»
ExecStop=/bin/sh -c «echo 1 > /sys/devices/system/cpu/cpufreq/boost»
RemainAfterExit=yes
сделал его исполняемым, запустил при помощи команды systemctl start turboboost.service, поставил в автостарт при помощи команды systemctl enable turboboost.service, перезагрузил и всё заработало.
Да, извиняюсь. Забыл написать не менее важное уточнение.
Файл сервиса надо помещать по пути /etc/systemd/system/ или сразу от рута создавать там.
Еще вариант если драйвер управления частотой процессора Intel_pstate, путь и значения будут другие:
Intel_Pstate - /sys/devices/system/cpu/intel_pstate/no_turbo 1 - off 0 - on