Как настроить регуляторы для работы Intel по старому доброму требованию?
Я работал на моем ноутбуке на ondemand
регулятор, который переключал частоту процессора в зависимости от загрузки процессора. Он работал довольно хорошо в течение многих лет и имел три очень важных преимущества:
- низкие аппаратные температуры
- тихий поклонник
- высокая производительность при необходимости
Теперь я обновил свой ноутбук (до Lenovo B5400, Intel Pentium 3550M) и систему (Ubuntu 14.10) и обнаружил, что:
- только
performance
а такжеpowersave
губернаторы доступны;ondemand
больше не доступен и не поддерживается - что-то изменилось в установочных файлах, потому что текущий регулятор и минимальная / максимальная скорости восстанавливаются до значений по умолчанию при каждой загрузке
В результате моя система:
- все еще превращает губернатора обратно в
performance
что неправильно, я считаю - каким бы ни был регулятор, cpufreq-info говорит мне, что "частота должна быть в пределах 2,30 МГц и 2,30 ГГц", хотя доступные частоты начинаются с 800 МГц
Я пытался редактировать /etc/init.d/cpufrequtils
определяя следующую настройку:
ВКЛЮЧИТЬ = "истина"
ГУБЕРНАТОР = "PowerSave"
MAX_SPEED = "2300000"
MIN_SPEED = "800000"
Я также пытался редактировать scaling_min_freq
файл в /sys/devices/system/cpu/cpu0/cpufreq
и установите его на 800000.
И, угадайте, что после перезапуска системы я снова в performance
режим с частотой "масштабируется между" 2,30 ГГц и 2,30 ГГц.
Не могли бы вы, пожалуйста, объясните мне:
а) где именно в Ubuntu 14.10 находятся мастер настройки минимальных / максимальных частот процессора?
б) как определить частоты и регуляторы для достижения того же результата, что и старый добрый ondemand
? (Я бы хотел работать на минимально возможной частоте и подниматься только при большой нагрузке)
в) и как избежать сброса того, что я определил, конечно.
Буду благодарен за объяснения.
2 ответа
Для совместимых процессоров по умолчанию Ubuntu теперь использует регулятор частоты процессора intel_pstate, тогда как он использовал регулятор частоты процессора acpi_cpufreq.
Привод intel_pstate не имеет ondemand
режим, но его powersave
режим должен быть эквивалентом acpi_cpufreq ondemand
Режим. Ваша система должна по умолчанию powersave
режим примерно через 1 минуту после загрузки и через /etc/init.d/ondemand
скрипт. В недавнем прошлом этот сценарий неправильно обрабатывал случай intel_pstate, но к настоящему времени он должен был быть исправлен для всех вариантов использования. Ссылка
Чтобы ответить на ваши актуальные вопросы:
A.) Основные минимальные и максимальные частоты сохраняются в процентах.cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
Интерпретация этих чисел является функцией флага включения или отключения турбо, и, на мой взгляд, в определениях есть несоответствие.cat /sys/devices/system/cpu/intel_pstate/no_turbo
Пример из моего i7-2600K: минимальная частота 1,6 ГГц; макс, не турбо 3,4 ГГц; макс турбо 3,8 ГГц.
Поэтому в процентах:
Турбо выкл: макс = 100%, мин = 47,1%
Turbo on: макс = 100%, мин = 42,1%
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
а также
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
1
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
B.) Интеллект-состояние powersave
режим должен быть эквивалентен acpi-cpufreq ondemand
Режим.
В) Что-то не так, что приводит к вашему горе. Были и другие сообщения, похожие на ваши. Сам я не знаю основной проблемы, но были также сообщения о несовместимости с cpufrequtils. Я не знаю, правда ли это или нет, так как я не использую такие вещи. Я использую только самый примитивный уровень управления с драйвером intel-pstate.
Я установил это в .bashrc
как псевдоним (и как root
), потому что у меня были похожие проблемы.
Псевдонимы выглядят так:
alias performance="echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias powersave="echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias ondemand="echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
Вы можете написать powersave
включить опцию энергосбережения на BASH
приставка. Когда я хочу использовать определенный регулятор масштабирования, я помещаю его в /etc/rc.local
:
#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
for i in `ls -d /sys/devices/system/cpu/cpu*|grep -v cpufreq|grep -v cpuidle`; do echo ondemand > $i/cpufreq/scaling_governor; done
exit 0
Возможно, у вас более одного процессора, поэтому отредактируйте его соответствующим образом. Мне лень писать короткий сценарий, но я сделаю это, если вы попросите меня сделать это:)
РЕДАКТИРОВАТЬ: я добавил сценарий /etc/rc.local