chemikadze — Боремся с жарой
Наступило лето, а вместе с ним пришла жара, и я стал замечать, что у многих начались проблемы с перегревом. Оно и не мудрено - даже нам, двуногим, достаточно легко спечься на такой жаре при рабочей температурой 36.6?C, что уже говорить о современных процессорах, а тем более о процессорах ноутбуков. Далее мы разберемся, как работает энергосбережение процессора, и как уберечься от этой летней напасти.
Как известно, процессором поддерживаются 4 режима энергосбережения: performance - максимальная производительность, ondemand и conservative - динамические режимы и powersave - энергосбережение/наименьшая производительность. Немного отдельно стоит userspace режим, при котором частота задается жестко. Разница же мажду ondemand и conservative состоит в том, что в первом случае при появлении нагрузки процессор сразу набирает полную частоту, а во втором - "раскачивается" некоторое время, что дает компромисс: с одной стороны не дает процессору тратить энергию/нагреваться зря, но в случае долгих пиковых нагрузок выдавать полную мощность.
Для управления режимами энергосбережения используются консольные утилиты cpufreq-set и cpufreq-info, входящие в пакет cpufrequtils (по крайней мере так обстоит дело в gentoo, но думаю не составит труда найти нужный пакет для вашего любимого дистрибутива). Как ясно из названия, они позволяют соответственно устанавливать частоту/режим работы процессора и получать информацию о текущем режиме.
Вот опции коммандной строки для cpufreq-set:
Пример:
переведет в режим энергосбережения процессор №0 (первый в системе).
Касательно cpufreq-info никаких особых опций знать не нужно, по умолчанию выводится вся нужная информация по каждому процессору (пределы частот, шаги частот, доступные политики управления и состояние процессора). Посмотреть ключи для вывода только нужной информации можно в руководстве man.
Для постоянного мониторинга частоты используется cpufreqd (не входит в cpufrequtils), который имеет достаточно гибкие возможности настройки зависимоти частоты от состояния компьютера, включая состояние AC-адаптера, а так же "белые" списки программ, которые не дают демону перевести процессор в режим энергосбережения, когда вы, например смотрите свое любимое аниме в HD качестве на слабой машине через mplayer, занесенный в "белый" список. Но есть у cpufreqd один минус - он конфликтует с GUI программами типа kpowersave и powerdevil. С другой стороны, эти программы не обладают достаточным функционалом для отслеживания температуры процессора, и поэтому я обратился за помощью к старым добрым cron и bash.
Ниже - пример с моей машины, надеюсь он окажется полезным для кого-нибудь:
Как известно, процессором поддерживаются 4 режима энергосбережения: performance - максимальная производительность, ondemand и conservative - динамические режимы и powersave - энергосбережение/наименьшая производительность. Немного отдельно стоит userspace режим, при котором частота задается жестко. Разница же мажду ondemand и conservative состоит в том, что в первом случае при появлении нагрузки процессор сразу набирает полную частоту, а во втором - "раскачивается" некоторое время, что дает компромисс: с одной стороны не дает процессору тратить энергию/нагреваться зря, но в случае долгих пиковых нагрузок выдавать полную мощность.
Для управления режимами энергосбережения используются консольные утилиты cpufreq-set и cpufreq-info, входящие в пакет cpufrequtils (по крайней мере так обстоит дело в gentoo, но думаю не составит труда найти нужный пакет для вашего любимого дистрибутива). Как ясно из названия, они позволяют соответственно устанавливать частоту/режим работы процессора и получать информацию о текущем режиме.
Вот опции коммандной строки для cpufreq-set:
- -c --cpu <CPU>
- Указывает номер процессора, к которому нужно применить частотную политику. На многоядерных системах частота ядер может не совпадать, все зависит от опций ядра и железа, поэтому может пригодиться.
- -d --min <FREQ>
- Нижняя граница частоты процессора для текущей политики энергосбережения.
- -u --max <FREQ>
- Соответственно верхняя граница частоты.
- -g --governor <GOV>
- Собственно, задает режим энергосбережения, доступны:
performance
ondemand
conservative
powersave
userspace - устанавливается автоматически при использовании флага -f - -f --freq <FREQ>
- Жестко задает частоту, совместим только с флагом -c. Как уже говорилось, автоматически устанавливает политику userspace.
- -h
- Справка, здесь все традиционно.
Пример:
cpufreq-set -c -g powersave
Касательно cpufreq-info никаких особых опций знать не нужно, по умолчанию выводится вся нужная информация по каждому процессору (пределы частот, шаги частот, доступные политики управления и состояние процессора). Посмотреть ключи для вывода только нужной информации можно в руководстве man.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
Для постоянного мониторинга частоты используется cpufreqd (не входит в cpufrequtils), который имеет достаточно гибкие возможности настройки зависимоти частоты от состояния компьютера, включая состояние AC-адаптера, а так же "белые" списки программ, которые не дают демону перевести процессор в режим энергосбережения, когда вы, например смотрите свое любимое аниме в HD качестве на слабой машине через mplayer, занесенный в "белый" список. Но есть у cpufreqd один минус - он конфликтует с GUI программами типа kpowersave и powerdevil. С другой стороны, эти программы не обладают достаточным функционалом для отслеживания температуры процессора, и поэтому я обратился за помощью к старым добрым cron и bash.
Ниже - пример с моей машины, надеюсь он окажется полезным для кого-нибудь:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|