управление частотой процессора

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

управление частотой процессора

Непрочитанное сообщение Olej » 21 июн 2018, 19:02

Это особо имеет значение для одноплатных и встроенных конфигураций...
Потому что частота - это потребление мощности + расход батарей + тепло и охлаждение конструкции.
Но, поскольку это вообще возможность Linux, то пусть тема будет здесь.

Что такое «governor» и какой выбрать режим управления частотой процессора
ВОСКРЕСЕНЬЕ, 22 НОЯБРЯ 2015
Здесь описаны несколько десятков регуляторов ... и рекмендации по их использованию:
В большинстве своем, их можно разбить на группы:
Основанные на Ondemand: такие как Ondemand, OndemandX, Intellidemand, Lazy, Lagfree, PegasusQ, HYPER, Wheatley, Hotplug, HotplugX, AbyssPlug, AbyssPlugv2, Nightmare, Sleepy…
Основанные на Conservative: Conservative, Lionheart, LionheartX…
Основанные на Interactive: Interactive, InteractiveX, Intelliactive, Lulzactive, Luzactiveq, Smartass, SmartassV2, SmartassH3, Brazilianwax, SavagedZen, Dyninteractive, Interactive Pro…
Гибридные (комбинация двух и более говернеров): Smartmax, Dancedance, Performance May Cry(PMC), Ktoonservative, KtoonservativeQ…
Некая своеобразная категория (входят в стандартный набор доступных регуляторов на большинстве стоковых ядер): Userspace, Powersave, Performance, Min Max, ZZmove, MSM DCVS, IntelliMM.
Очень простая и приятная статья ... советую ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: управление частотой процессора

Непрочитанное сообщение Olej » 21 июн 2018, 19:07

Olej писал(а): Что такое «governor» и какой выбрать режим управления частотой процессора
Здесь описаны несколько десятков регуляторов ... и рекмендации по их использованию:
В большинстве своем, их можно разбить на группы:
Основанные на Ondemand: такие как Ondemand, OndemandX, Intellidemand, Lazy, Lagfree, PegasusQ, HYPER, Wheatley, Hotplug, HotplugX, AbyssPlug, AbyssPlugv2, Nightmare, Sleepy…
Основанные на Conservative: Conservative, Lionheart, LionheartX…
Основанные на Interactive: Interactive, InteractiveX, Intelliactive, Lulzactive, Luzactiveq, Smartass, SmartassV2, SmartassH3, Brazilianwax, SavagedZen, Dyninteractive, Interactive Pro…
Гибридные (комбинация двух и более говернеров): Smartmax, Dancedance, Performance May Cry(PMC), Ktoonservative, KtoonservativeQ…
Некая своеобразная категория (входят в стандартный набор доступных регуляторов на большинстве стоковых ядер): Userspace, Powersave, Performance, Min Max, ZZmove, MSM DCVS, IntelliMM.
Очень простая и приятная статья ... советую ;-)
Мне показалось интересным, может кому пригодится... Вопрос: из великого множества говерноров (разработанных от разных авторов и производителей железа) какие могут быть использованы в вашей конкретно системе на вашем конкретно железе?
Пока проверил только на десктопном Linux (Fedora 25):
- это политика по каждому процессору (ядру):

Код: Выделить всё

[olej@dell RTLinux]$ ls -l /sys/devices/system/cpu/cpufreq 
итого 0
-rw-r--r-- 1 root root 4096 июн 21 18:49 boost
drwxr-xr-x 2 root root    0 июн 21 18:38 ondemand
drwxr-xr-x 3 root root    0 июн 18 15:55 policy0
drwxr-xr-x 3 root root    0 июн 21 18:37 policy1
drwxr-xr-x 3 root root    0 июн 21 18:38 policy2
drwxr-xr-x 3 root root    0 июн 21 18:38 policy3
drwxr-xr-x 3 root root    0 июн 21 18:38 policy4
drwxr-xr-x 3 root root    0 июн 21 18:38 policy5
drwxr-xr-x 3 root root    0 июн 21 18:38 policy6
drwxr-xr-x 3 root root    0 июн 21 18:38 policy7
- вот действующий говернор для конкретного процессора:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
ondemand
- вот набор допустимых говерноров для этого процессора (думаю, что и для всех прочих процессоров будет идентично) - это и есть ответ на вопрос, заданный в этом сообщении:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
conservative userspace powersave ondemand performance schedutil 
- и вот набор дискретных частот, между которыми может переключаться этот процессор:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies 
1600000 1599000 1466000 1333000 1199000 1066000 933000 

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: управление частотой процессора

Непрочитанное сообщение Olej » 21 июн 2018, 19:10

Olej писал(а): - вот действующий говернор для конкретного процессора:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
ondemand
- вот набор допустимых говерноров для этого процессора (думаю, что и для всех прочих процессоров будет идентично) - это и есть ответ на вопрос, заданный в этом сообщении:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
conservative userspace powersave ondemand performance schedutil 
Предполагаю (!), что если в scaling_governor записать значение, допустимое из scaling_available_governors, (с правами root, естественно) то это изменит политику управления частотой процессора.

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: управление частотой процессора

Непрочитанное сообщение Olej » 21 июн 2018, 19:15

Olej писал(а): - и вот набор дискретных частот, между которыми может переключаться этот процессор:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies 
1600000 1599000 1466000 1333000 1199000 1066000 933000 
По аналогии, в scaling_cur_freq должна бы быть текущая частота на которой бегает процессор ... но:

Код: Выделить всё

[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1077775
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1068277
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1025063
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1027133
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1035622
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1065933
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1091194
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1106510
[olej@dell RTLinux]$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
1018682
Это последовательно считанные значения одной и той же переменной.
Это не совпадает с сеткой частот scaling_available_frequencies !
И это очень похоже на некоторый усреднённые значения за некоторый интервал времени ... какой? от uptime?

Аватара пользователя
Olej
Писатель
Сообщения: 14939
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: управление частотой процессора

Непрочитанное сообщение Olej » 22 июн 2018, 14:07

Olej писал(а):Это особо имеет значение для одноплатных и встроенных конфигураций...
Потому что частота - это потребление мощности + расход батарей + тепло и охлаждение конструкции.
Но, поскольку это вообще возможность Linux, то пусть тема будет здесь.
Смотрю Rapsberry Pi - совершенно другая архитектура:

Код: Выделить всё

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model name:            ARMv7 Processor rev 5 (v7l)
CPU max MHz:           900.0000
CPU min MHz:           600.0000
Тот же обыкновенный полноценный Linux, отличающийся только платформой:

Код: Выделить всё

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 8.0 (jessie)
Release:	8.0
Codename:	jessie
Здесь, в отличие от предыдущего, удивляет только то, что при наличии 4-х ядер - каталог policy только 1:

Код: Выделить всё

pi@raspberrypi:/sys/devices/system/cpu/cpufreq $ ls -l /sys/devices/system/cpu/cpufreq
total 0
drwxr-xr-x 2 root root 0 Jun 19 21:17 ondemand
drwxr-xr-x 3 root root 0 Jun 19 21:17 policy0

Но во всём остальном - всё то же самое:

Код: Выделить всё

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_governor 
ondemand

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_available_governors 
conservative ondemand userspace powersave performance schedutil 

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_min_freq 
600000

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_max_freq 
900000

pi@raspberrypi:/sys/devices/system/cpu/cpufreq/policy0 $ cat scaling_cur_freq 
600000

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя