Я раньше работал над моим ноутбуком на ondemand
регулятор, который переключал частоту ЦП в зависимости от использования ЦП. Это работало довольно хорошее в течение многих лет и имело три очень важных преимущества:
Теперь я обновил оба своих ноутбука (до Lenovo B5400, Intel Pentium 3550M) и система (Ubuntu 14.10), и я нашел что:
performance
и powersave
регуляторы доступны; ondemand
больше не доступно и поддерживаетсяВ последствии моя система:
performance
, который является неправильным, я верюЯ попытался отредактировать /etc/init.d/cpufrequtils
определение следующей установки:
ВКЛЮЧИТЕ = "верный"
РЕГУЛЯТОР = "powersave"
MAX_SPEED = "2300000"
MIN_SPEED = "800000"
Я также попытался отредактировать scaling_min_freq
файл в /sys/devices/system/cpu/cpu0/cpufreq
и набор это к 800 000.
И, угадайте то, в чем, после перезапуска системы я нахожусь снова performance
режим с частотой, "масштабируемой между" 2.30 ГГц и 2.30 ГГц.
Могли Вы, объясняете меня:
a) где точно в Ubuntu 14.10 основные настройки минуты частоты ЦП / макс. частоты ЦП?
b) как определить частоты и регуляторы для достижения того же результата как старая польза ondemand
? (Я хотел бы работать над самой низкой возможной частотой и повыситься только на большой нагрузке),
c) и как постараться не сбрасывать то, что я определил, конечно.
Я был бы благодарен за объяснения.
Для совместимых процессоров, Ubuntu по умолчанию теперь использует intel_pstate регулятор частоты ЦП, тогда как это раньше использовало acpi_cpufreq ЦП frequncy регулятор.
диск intel_pstate не имеет ondemand
режим, но powersave
, режим должен быть эквивалентом режима acpi_cpufreq ondemand
. Ваша система должна принять значение по умолчанию к powersave
режим спустя приблизительно 1 минуту после начальной загрузки, и через /etc/init.d/ondemand
сценарий. В недалеком прошлом тот сценарий правильно не имел дело с intel_pstate случаем, но это должно было быть зафиксировано для всех вариантов использования к настоящему времени. Ссылка .
Для ответа на фактические вопросы:
А.) Основная минута и макс. частоты хранятся как числа процента.
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%
Турбо на: макс. = 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.) Режим intel-pstate powersave
должен быть эквивалентом режима acpi-cpufreq ondemand
.
C.) Существует что-то не так, приводя к Вашему горю. Были другие отчеты, подобные Вашему. Самостоятельно, я не знаю основную проблему, но также были сообщения о несовместимостях с 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