как менять/смотреть частоту процессора


Посмотреть текущую частоту процессора в GNU/Linux нетрудно. Для этого достаточно просмотреть файл /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

cpu0 указывает на первый процессор, если процессоров несколько, то порядковые номера будут изменяться, в зависимости от их количества. Частота указывается в КилоГерцах (KHz). Для просмотра файла нужны привилегии root.

ls -la /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
-r-------- 1 root root 4096 Sep 30 21:09 /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

Если в системе доступно, например, 3 ядра, то можно выполнить вот этот однострочный скрипт, чтоб сразу перевести частоту из KHz в MHz:

for i in 0 1 2;
do echo "$(cat /sys/devices/system/cpu/cpu$i/cpufreq/cpuinfo_cur_freq) / 1000" | bc;
done

Вот еще один вариант, как проверить текущую частоту процессора непривилегированным пользователем:

grep MHz /proc/cpuinfo

Вот эта команда покажет температуру процессора:

acpi -t

В ядре существуют модули, отвечающие за регуляторы или политики изменения частоты процессора. Все доступные для загруженного ядра можно посмотреть в файле /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

Рассмотрим их ниже.

powersave и performance

Эти регуляторы статически устанавливают тактовую частоту процессора на минимальное (powersave) и на максимальное (performance) значение.

userspace

Этот регулятор даёт пользователю или программе в пользовательском пространстве возможность изменять тактовую частоту процессора. С помощью команды echo пользователь может внести нужное значение частоты в файл /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed или же представить возможность установить эту частоту какому-нибудь демону в пользовательском пространстве. Вносить настройку в файл scaling_setspeed необходимо для каждого из процессоров.

С регулятором userspace взаимодействуют несколько демонов, которые могут настраивать частоту процессора. Вот некоторые из них:

cpudyn (CPU dynamic frequency control): этот демон меняет частоту в соответствии с загрузкой процессора, а также, для ещё большей экономии энергии, может переводить диски в режим ожидания (standby) при отсутствии дисковой активности.

cpufreqd: это демон можно настроить на реагирование на уровень заряда батареи, тип питания (от сети или от батареи), температуру, запущенные программы, уровень использования процессора и на другие факторы.

cpuspeed: этот демон изменяет частоту в соответствии с требованиями процессора, изменением источника питания, температурой и другими данными.

powernowd: этот демон регулятора изменяет частоту процессора в соответствии с загрузкой процессора; у него четыре режима поведения, выбираемых пользователем.

ondemand

При задействованном регуляторе ondemand в каталоге cpufreq присутствует каталог ondemand. В этом каталоге имеется множество регулируемых настроек. Все файлы, доступные на запись для root, можно изменить, вписав новое значение с помощью команды echo, как показывалось ранее. Заметьте, что любые изменения в настройках регулятора ondemand будут применяться на общесистемном уровне, поэтому нет необходимости изменять настройки для каждого процессора.

conservative

При использовании регулятора conservative в каталоге cpufreq появляется подкаталог conservative. В этом подкаталоге имеется множество настроек. Все файлы, доступные на запись для root, можно изменять, вписывая в них новое значение с помощью команды echo. Заметьте, что любые изменения в настройках регулятора conservative будут применяться на общесистемном уровне, поэтому нет необходимости изменять настройки для каждого процессора. При этой политике, регулирование частоты происходит плавно, что сказывается благоприятнее на долговечность аккумулятора, если у вас портативное устройство.

Все доступные регуляторы можно посмотреть в /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

Так можно узнать текущую политику:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Политика управления частотой процессора изменяется подобным образом:

echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor

Для сохранения нужной политики управления частотой после перезагрузки существует набор служебных программ sysfsutils.

Работа этих программ основана на виртуальной файловой системе sysfs. С помощью этих программ можно управлять параметрами устройств и системы, расположенными в системной директории /sys.

Для Debian-подобных систем его установка производится следующим образом:

aptitude install sysfsutils

Конфигурируются sysfsutils через файл /etc/sysfs.conf. Для того, чтобы установить регулятор, нужно добавить этот файл такие строки, в зависимости от количества процессоров:

devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu2/cpufreq/scaling_governor = ondemand

литература:

http://wiki.debian.org/HowTo/CpuFrequencyScaling

http://www.ibm.com/developerworks/ru/library/l-cpufreq-2/

comments powered by Disqus