cpufreqd.conf вольная шпаргалка

Автор Utility, 29 июня 2015, 02:17:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Utility

cpufreqd.conf , рекомендуется перед настройкой демона составить список событий по которым демон применяет правила, например вкл от сети/бп или нет.
структура
Секция применяемых переменных и значений
[General]
Открыть содержимое (спойлер)

poll_interval= float более 0.15, в секундах. По умолчанию: 1.0
enable_plugins= list1, list2, ... cpufreqd 2.1.0 и выше автоматически подгружает и чистит после прочтения.Прим. Читай как устаревший
pidfile= spec path файл для записи PID. По умолчанию:  /var/run/cpufreqd.pid
enable_remote= bool создать на чтение-запись UNIX socket (локальный), для cpufreqd-set/cpufreqd-get
remote_group= spec group указать группу с чтением-записью UNIX socket, для cpufreqd-set/cpufreqd-get
double_check= bool для опроса и корректности перечитывает передаваемые ядру атрибуты
verbosity= 0...7 уровень журналирования. По умолчанию 4, warninng,error, critical
[свернуть]
[/General]

[Profile]
Открыть содержимое (спойлер)

name= string обязательный. произвольное и уникальное имя вашего профиля
minfreq= % или int в kHz см обязательный, cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_min_freq
maxfreq= % или int в kHz см обязательный, cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
policy= string обязательный, применяемая политика, которая собрана как модуль ядра и загружена до cpufreqd, см cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
other plugin entries= list1, list2, ... навреное так прочие доступные директивы профиля для включения плагинов
[свернуть]
[/Profile]

[Rule]
Открыть содержимое (спойлер)

name= string обязательный. произвольное и уникальное имя вашего профиля
profile= name profile=CPU%d:%s;CPU%d:%s:.../name profile=ALL:%s обязательный, пример profile=CPU0:profile0;CPU1:profile1
other plugin entries= list1, list2, ... навреное так прочие доступные директивы профиля для включения плагинов
[свернуть]
[/Rule]

PLUGINS

Это расширения cpufreqd для более экзотичных систем.

[acpi]
Открыть содержимое (спойлер)

acpid_socket= spec path отрыть socket для событий обновления от battery, ac. по умолчанию, /var/run/acpid.socket
battery_update_interval= int число в секундах, для опроса battery
battery_interval= %d-%d/%d/%s:%d-%d %d это процент, а %s имя, см ls /proc/acpi/battery. Пример: battery_interval=10-100
ac= on/off внешний источник питания, читай как питание от розетки/ внеш. блока питания
acpi_temperature= %d-%d/%d/%s:%d-%d %d в процентах от максимального, а %s имя. см. ls /proc/acpi/thermal_zone. Пример: acpi_temperature=10-100

[свернуть]
[/acpi]

[apm]
Открыть содержимое (спойлер)

ac= on/off внешний источник питания, читай как питание от розетки/ внеш. блока питания
battery_interval= %d-%d/%d %d это процент. Пример, battery_interval=10-100
[свернуть]
[/apm]

[pmu]
Открыть содержимое (спойлер)

ac= on/off внешний источник питания, читай как питание от розетки/ внеш. блока питания
battery_interval= %d-%d/%d %d это процент. Пример, battery_interval=10-100
[свернуть]
[/pmu]

прим. Thermal Assist Unit, см  cat /proc/cpuinfo | grep tau
[tau]
Открыть содержимое (спойлер)

tau_temperature= %d-%d/u] имеет высокий приоритет, если между значениями. Пример:  tau_temperature=30-60
[свернуть]
[/tau]

[cpu]
Открыть содержимое (спойлер)

cpu_interval= %d-%d/%d:%d-%d;%d:%d-%d;..../ALL:%d-%d/ANY:%d-%d/%d-%d,%f/%d:%d-%d,%f
Примеры: cpu_interval=10-100 cpu_interval=1:50-100 cpu_interval=0:50-100;1:0-60 cpu_interval=ANY:50-100 cpu_interval=1:70-100,1.5
%f по умолчанию, 3. %f это nice_PID разделённый на %f Допускается перекрытие cpu_intervals.
Настройка имеет приоритет между значениями. Cpu-interval это загрузка ЦПУ, в каких попугаях? наверное %
exec plugin: выполнить команду в этом Rule/Profile
exec_pre= string ман молчит
exec_post= string Пример: exec_post=echo 3 > /proc/acpi/sony/brightness
[свернуть]
[/cpu]

[programs]
Открыть содержимое (спойлер)

programs= list1, list2, ... когда среди запущенных есть эта программа, можно указывать полносью пути. Пример: programs=xine,mplayer,gmplayer
[свернуть]
[/programs]

[nforce2_atxp1]
Открыть содержимое (спойлер)

vcore_path= path определить путь создания файла для модуля atxp1 который хранит изменения Vcore. Пример: vcore_path=/some/path
vcore_default= int Для материнок с NForce2, только для инициализации atxp1 когда power-on, нужен обратный Vcore по умолчанию для reboot.
Здесь указано bcgjkmpetvjt значение Vcore для exit. Пермиер: vcore_default=1500
vcore= int значение в mV, для отправки Vcore в указанном Profile. имеет смысл значения в диапазоне от 1200 до 1850.
[свернуть]
[/nforce2_atxp1]
Прим. NOTE: you MUST use this  plugin  ONLY with supported cards. See also the nvclock homepage (http://www.linuxhardware.org/nvclock).

[nvclock]
Открыть содержимое (спойлер)

nv_core= int в MHz/%d:%d указать частоту ядра. Можно указать номер видеокарты:частоту ядра. Например: nv_core=0:400
nv_mem= int в MHz/%d:%dуказать частоту памяти. Можно указать номер видеокарты:частоту памяти. Например: nv_mem=0:400
[свернуть]
[/nvclock]
Прим. lm-sensors features to watch, see `sensors -u' to find  out  which sensors are available on your system.
[sensors_plugin]
Открыть содержимое (спойлер)

sensors_conf= spec path указать директорию sensors.conf для cpufreq для работы с sensor library
sensor= %s:%f-%f где %s "этикетка".  Например sensor=CPU Temp (motherboard sensor):0-50 и sensor=temp1:0-50
[свернуть]
[/sensors_plugin]

Прим. В [Profile] указать параметры. Текущие ondemand и conservative поддерживают. Описание каждого есть в governors.txt в документации к ядру 2.6.16 и выше
Note: `ignore_nice' was renamed  to `ignore_nice_load'  in  kernel  version  2.6.16.  Both names are accepted in cpufreqd.conf, regardless the version of the running kernel.

[governor_parameters]
Открыть содержимое (спойлер)

sampling_rate= `%' в %/`s' в секундах/`m' в милисекундах `u' в микросекундах по умолчанию 'u'. как часто проверять использование ЦПУ
up_threshold= `%' порог, средний порог загрузки на повышение частоты
down_threshold= % обратное up_threshold и только для conservative.
sampling_down_factor= int насколько "легко" частота понизится относительно повышения. см cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
ignore_nice=, ignore_nice_load= bool не замечать nice процессы, если 1.
freq_step= % только для conservative. шаг частоты выше-ниже от максимального значения. Автоподгонка для следующего значения.
[свернуть]
[/governor_parameters]

Стационар = MB: ASRock N68-gs4 FX R2.0 ; CPU: Athlon II x3 460 => Phenom B60; RAM: 2x Kingston KVR1333D3N9/4G; VGA: zotac gt630 4G
Ноутбук = ASUS x55a = MB: chipset HM70; CPU: Celeron B820; RAM: 2G: VGA: intel3000; audio VT1802

Utility

#1
Предупреждаю о одной особенности:
Открыть содержимое (спойлер)
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:      +1.20 V  (min =  +0.85 V, max =  +1.60 V)
+3.3 Voltage:      +3.30 V  (min =  +2.97 V, max =  +3.63 V)
+5 Voltage:        +5.02 V  (min =  +4.50 V, max =  +5.50 V)
+12 Voltage:      +12.10 V  (min = +10.20 V, max = +13.80 V)
CPU FAN Speed:     3245 RPM  (min =  600 RPM, max = 7200 RPM)
CHASSIS FAN Speed:    0 RPM  (min =  600 RPM, max = 7200 RPM)
POWER FAN Speed:      0 RPM  (min =  600 RPM, max = 7200 RPM)
CPU Temperature:    +38.0°C  (high = +60.0°C, crit = +95.0°C)
MB Temperature:     +31.0°C  (high = +45.0°C, crit = +75.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +32.5°C  (high = +70.0°C)
                       (crit = +99.5°C, hyst = +97.5°C)
[свернуть]
На такой вывод писать в /etc/cpufreqd.conf через sensors:
[Rule]
name=Critical&Shutdown
profile=my_userspace
cpu_interval=0:0-100,3;1:0-100,3;2:0-100,3;3:0-100,3
sensor=CPU Temperature:60-95           #60,95
sensor=MB Temperature:40-75             #45,75
sensor=temp1:60-99                            #70,99.500 PCI adapter
exec_post=systemctl hibernate
[/Rule]
Такой будет "проваливаться" в переключение, а если дополнить sensors=blah blah RPMfsn:1500-2000, то будет срабатывать по первому совпадению с любым из параметров. НО!
НО! чем чревато, когда вы выставили все хотелки и в том числе fan`ы, через sensors; то огребёте после первого reboot, выхода из сна и т.п. почему?
[Rule]
name=Critical&Shutdown
profile=my_userspace
cpu_interval=0:0-100,3;1:0-100,3;2:0-100,3;3:0-100,3
sensor=CPU Temperature:60-95           #60,95
sensor=MB Temperature:40-75             #45,75
sensor=temp1:60-99                            #70,99.500 PCI adapter
exec_post=sensors > /root/somefile
[/Rule]
Увидете, что sensors при инициализации, нифигашки не видит fan`ы и ваш cpufreqd будет сваливать в exec_post=blah_blah

Другими словами, мне нужно было предохранить системник от перегрева (рендерю) и с некой вероятностью сохранить данные. Критерий температура, потому и буду по нему мониторить. А через sensors fanы прописывать стал, на "пожарный случай", когда какой-либо будет давать 0 RPM.
ТАК ЧТО МОНИТОРТЕ ТОЛЬКО ТЕМПЕРАТУРУ, А КАЖДЫЙ ПЕРЕКЛЮЧАТЕЛЬ РАБОТАЕТ ПРИ ВСЕХ КРИТЕРИЯХ ИЗ ДИАПАЗОНА.
Спасибо
PS боялся, что "дёргание" поломало ahci на южном и капец двум жестким)


Cообщение объединено 01 июля 2015, 02:59:22

да и еще, "шаг" у вентилятора порядка 500 rpm

Cообщение объединено 01 июля 2015, 23:40:39

На заметку, очередь sensors не влияет на приоритет. При этом "оперативность" включения регулировщика зависит от CPU.
смотрел top, sensors, /proc. Пришёл к выводу, что (в моём случае точно) cpufreqd переключает при критерию CPU, прочее игнорирует. Изучал на предмет срабатывания температуры на GPU
Стационар = MB: ASRock N68-gs4 FX R2.0 ; CPU: Athlon II x3 460 => Phenom B60; RAM: 2x Kingston KVR1333D3N9/4G; VGA: zotac gt630 4G
Ноутбук = ASUS x55a = MB: chipset HM70; CPU: Celeron B820; RAM: 2G: VGA: intel3000; audio VT1802

VKH

#2
имею процессор 825, 1320, 1650мгц
Настроил cpufreqd.con: оставил три режима conservative high, conservative low и powersave high. В cpufreq установлен режим userspace. А переключения на разные режимы, указанные в cpufreqd, нет. В чем может быть проблема?
сам конфиг:
Открыть содержимое (спойлер)
# this is a comment
# see CPUFREQD.CONF(5) manpage for a complete reference
#
# Note: ondemand/conservative Profiles are disabled because
#       they are not available on many platforms.

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=4
#enable_remote=1
#remote_group=root
[/General]

#[acpi]
#acpid_socket=/var/run/acpid.socket
#[/acpi]

#[sensors_plugin]
#sensors_conf=/some/file
#[/sensors_plugin]

[Profile]
name=Powersave High
minfreq=0%
maxfreq=33%
policy=powersave
[/Profile]

#[Profile]
name=Conservative High
minfreq=0%
maxfreq=100%
policy=conservative
#[/Profile]

#[Profile]
name=Conservative Low
minfreq=0%
maxfreq=66%
policy=conservative
#[/Profile]

##
# Basic states
##
# when AC use conservative mode
[Rule]
name=AC Rule
ac=on                    # (on/off)
profile=Conservative High
[/Rule]

# stay in performance mode for the first minutes
[Rule]
name=AC Off - High Power
ac=off                   # (on/off)
battery_interval=65-100
#exec_post=echo 5 > /proc/acpi/sony/brightness
profile=Conservative High
[/Rule]

# conservative mode when not AC
[Rule]
name=AC Off - Medium Battery
ac=off                   # (on/off)
battery_interval=30-65
#exec_post=echo 3 > /proc/acpi/sony/brightness
profile=Conservative Low
[/Rule]

# conservative mode when not AC
[Rule]
name=AC Off - Low Battery
ac=off                   # (on/off)
battery_interval=0-30
#exec_post=echo 3 > /proc/acpi/sony/brightness
profile=Powersave High
[/Rule]

##
# Special Rules
##
# CPU Too hot!
[Rule]
name=CPU Too Hot
acpi_temperature=30-84
cpu_interval=30-84
profile=Conservative High
[/Rule]

# CPU Too hold!
[Rule]
name=CPU Too Hold
acpi_temperature=84-90
cpu_interval=84-92
profile=Powersave High
[/Rule]

[governor_parameters]
sampling_rate=2s 
up_threshold=85
down_threshold=50
sampling_down_factor=1
freq_step=33
ignore_nice_load=0
[/governor_parameters]
[свернуть]

Malaheenee

Ребят, pm-utils умеет почти тоже самое.
Все мы где-то, когда-то и в чем-то были новичками.

Vlad

Чем можно изменять максимальную частоту процессора в зависимости от нагрузки? Сейчас используется intel_pstate, не нравиться что постоянно частота процессора дёргается при малейшем изменении нагрузки. Хотелось бы к примеру до 50% загрузки вообще не увеличивать частоту и т.п. cpufreqd как мне показалось ничего не делает. Пока нашёл способ вручную задать верхнюю частоту в /sys/devices/system/cpu/intel_pstate/max_perf_pct, хотелось бы нормальный автомат.

yoric

Регулятором "ondemand", всё остальное от лукавого. Он, кстати, настраивается. Но и по умолчанию неплохо.

globus@aspera ~ $ ls -l /sys/devices/system/cpu/cpufreq/ondemand/
-rw-r--r-- 1 root root 4096 дек  4 22:54 ignore_nice_load
-rw-r--r-- 1 root root 4096 дек  4 22:54 io_is_busy
-rw-r--r-- 1 root root 4096 дек  4 22:54 powersave_bias
-rw-r--r-- 1 root root 4096 дек  4 22:54 sampling_down_factor
-rw-r--r-- 1 root root 4096 дек  4 22:54 sampling_rate
-r--r--r-- 1 root root 4096 дек  4 22:54 sampling_rate_min
-rw-r--r-- 1 root root 4096 дек  4 22:54 up_threshold

globus@aspera ~ $ ls -l /sys/devices/system/cpu/cpu0/cpufreq/
-r--r--r-- 1 root root 4096 дек  4 22:54 affected_cpus
-r--r--r-- 1 root root 4096 дек  4 22:54 bios_limit
-rw-r--r-- 1 root root 4096 дек  4 22:54 cpb
-r-------- 1 root root 4096 дек  4 22:54 cpuinfo_cur_freq
-r--r--r-- 1 root root 4096 ноя 29 11:54 cpuinfo_max_freq
-r--r--r-- 1 root root 4096 дек  4 22:54 cpuinfo_min_freq
-r--r--r-- 1 root root 4096 дек  4 22:54 cpuinfo_transition_latency
-r--r--r-- 1 root root 4096 дек  4 22:54 freqdomain_cpus
-r--r--r-- 1 root root 4096 дек  4 22:54 related_cpus
-r--r--r-- 1 root root 4096 дек  4 22:54 scaling_available_frequencies
-r--r--r-- 1 root root 4096 дек  4 22:54 scaling_available_governors
-r--r--r-- 1 root root 4096 ноя 28 21:44 scaling_cur_freq
-r--r--r-- 1 root root 4096 дек  4 22:54 scaling_driver
-rw-r--r-- 1 root root 4096 дек  4 22:54 scaling_governor
-rw-r--r-- 1 root root 4096 дек  4 22:54 scaling_max_freq
-rw-r--r-- 1 root root 4096 дек  4 22:54 scaling_min_freq
-rw-r--r-- 1 root root 4096 дек  4 22:54 scaling_setspeed

Vlad

Цитата: yoric от 04 декабря 2016, 18:59:11Регулятором "ondemand", всё остальное от лукавого. Он, кстати, настраивается. Но и по умолчанию неплохо.
У меня нет такого, только performance powersave.

Пока нашёл вот этот мануал, работает почти как нужно, при загрузке процессора, примерно через 10-15 сек. тот выходит на максимум. В простое 1 ГГц, не пойму пока как уменьшить до минимальной в 800 МГц.


yoric

А куда девался?  В дебиане он есть, по умолчанию стоит. Ядро сами собирали, или что за система?

Aalexeey

Цитата: Vlad от 04 декабря 2016, 19:25:16нет такого, только performance powersave
У меня тоже не было пока не внёс в GRUB_CMDLINE_LINUX_DEFAULT  intel_pstate=disable

https://debianforum.ru/index.php?topic=6879 100% защиты от "Ааааа у меня всё поломалось"

Vlad

Цитата: yoric от 05 декабря 2016, 12:00:24А куда девался?  В дебиане он есть, по умолчанию стоит. Ядро сами собирали, или что за система?
Без понятия. Система Debian 8.6. Вот тут вот:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
только performance powersave. По описанию в интернете, это доступные регуляторы. Остальные видимо нужно самому включать. Тут вот в чём дело, процессор и так меняет частоту от нагрузки, просто мне не нравится логика этой смены, при небольшой загрузке (до 10%) частота скачет до максимальной 3,5 ГГц. Эта система у меня работает в роли маршрутизатора (и ещё доп. функционал) круглые сутки и такой режим работы процессора как мне кажется ни к чему. 800 МГц ему вполне хватает на 90 % всех задач. Всё это я к чему? Допустим регулятор "ondemand" насколько он изменит поведение процессора, если не ставить cpufreqd, я так понял что "ondemand" сам неплохо справляется? Сейчас логика работы на чём основана с выше указанными регуляторами? Только от bios? Просто я боюсь что будет не особо лучше, поэтому решил что нужно вмешаться в процесс и сделать как мне это кажется правильным. С cpufreqd вроде получилось.

alsoijw

Можно в /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq явно прописать.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Vlad

Цитата: alsoijw от 06 декабря 2016, 20:02:54Можно в /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq явно прописать.

Да, но мне не хотелось ломать всю логику работы ЦП, урезая его по частоте. ЦП должен достигать максимальной частоты если будет сильно нужно.

alsoijw

Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Vlad

Вот я и пишу что у меня только два режима. По описанию из статьи меня бы устроил conservative. Просто выполнить echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor не получается, "недопустимый аргумент". К тому же я всё равно не знаю как работает этот conservative? Можно ли повлиять на результаты его работы? С другой стороны если бы можно было, то уже без разницы что бы это было conservative или ondemand ведь можно было бы любой из них "подкрутить". Но видимо всё таки нельзя.

mrgoodvin

Vlad, в принципе cpufreq-info (cpufrequtils) должен показать что можно. а что нельзя. Вот еще можно почитать - https://wiki.archlinux.org/index.php/CPU_frequency_scaling_%20(Русский). Тоже выбор регуляторов не велик был, но что делал и как устанавливал уже и не вспомню. Но grub для этих целей не правил. Laptop mode tools установлен и настроен. 4 скрипта, как пример для conservative .
#!/bin/sh
cpufreq-set -g conservative -c 1
cpufreq-set -g conservative -c 0

Прописал выбор 4-мя командами из ДЕ,  для conservative - gksudo /home/_user/_pathtogovernors/conservative.sh. При смене ввожу пароль для user. Можно в sudors настроить и без ввода пароля, но меня устраивает. В некоторых ДЕ есть аплеты для переключения, для xfce пока нету. Через cpufreqd.conf не пробовал настраивать, но судя из проделанной работы Utility, cpufreqd в сравнении более гибок в настройке.