Как настроить регуляторы для работы 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

Другие вопросы по тегам