Посмотреть текущую частоту процессора в 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
литература: