В Linux команда chrt
(Change the Real-time) позволяет отображать и изменять атрибуты процесса в режиме реального времени.
Содержание
Введение
В операционной системе Linux несколько программ всегда ожидают процесса выполнения. Команда chroot
является крайне полезным планировщиком, позволяющим изменять политику планирования процесса и установки его приоритета. Таким образом, именно эта утилита решает, какой процесс будет выполняться ЦП первым.
Синтаксис
Установить политику
$ chrt [опции] <приоритет> <команда> [<аргумент>...]
или
$ chrt [опции] --pid <приоритет>
Получить политику
chrt [опции] -p <pid>
Параметры
Параметры политики
-b, --batch
Установить политику SCHED_BATCH
-d, --deadline
Установить политику SCHED_DEADLINE
-f, --fifo
Установить политику SCHED_FIFO
-i, --idle
Установить политику SCHED_IDLE
-o, --other
Установить политику SCHED_OTHER
-r, --rr
Установить политику SCHED_RR (по умолчанию)
Параметры планирования
-R, --reset-on-fork
Установить флаг сброса настроек
-T, --sched-runtime
Параметр времени выполнения для DEADLINE
-P, --sched-period
Параметр периода для DEADLINE
-D, --sched-deadline
Параметр крайнего срока для DEADLINE
Другие параметры
-a, --all-tasks
Работать со всеми задачами (потоками) для данного pid
-m, --max
Показать минимальные и максимальные действительные приоритеты
-p, --pid
Работать с существующим данным pid
-v, --verbose
Показать информацию о состоянии
-h, --help
Вывести эту справку
-V, --version
Показать версию
Использование команды chrt в Linux
Отображение текущей политики
Для того чтобы увидеть текущую политику планирования, нам нужно создать процесс. Для примера запускаем редактор Geany, а чтобы увидеть его pid запускаем следующую команду:
oleg@mobile:~:$ pidof -s geany
154482
oleg@mobile:~:$
В нашем случае pid — 154482.
Далее для получения текущей политики планирования и приоритета для процесса Geany используем chrt
с параметром -p
:
oleg@mobile:~:$ chrt -p 154482
pid 154482's current scheduling policy: SCHED_OTHER
pid 154482's current scheduling priority: 0
oleg@mobile:~:$
Из приведённого примера видим, что политика планирования процесса Geany установлена как SCHED_OTHER.
Отображение допустимых приоритетов min/max
Это можно сделать запуском утилиты с параметром -m
:
oleg@mobile:~:$ chrt -m
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
SCHED_DEADLINE min/max priority : 0/0
oleg@mobile:~:$
При установке приоритетов во время настройки политик планирования надо будет ссылаться на эти значения.
Изменение политики
Для изменения политики к примеру на SCHED_BATCH, мы используем следующую команду:
oleg@mobile:~:$ sudo chrt -b -p 0 154482
oleg@mobile:~:$
Проверяем результат:
</p>
oleg@mobile:~:$ chrt -p 154482
pid 154482's current scheduling policy: SCHED_BATCH
pid 154482's current scheduling priority: 0
oleg@mobile:~:$
Изменения были успешно внесены.
Если мы, например, снова решим вернуться к политике SCHED_OTHER, то нужно будет запустить утилиту с параметром -o
:
oleg@mobile:~:$ sudo chrt -o -p 0 154482
oleg@mobile:~:$
Проверяем результат:
oleg@mobile:~:$ chrt -p 154482
pid 154482's current scheduling policy: SCHED_OTHER
pid 154482's current scheduling priority: 0
oleg@mobile:~:$
Аналогично производится установка и изменение всех политик планирования.
Заключение
Из этой статьи следует, что работать в Linux с командой chrt
совсем несложно. Она безусловно необходима тем, кто заинтересован в манипулировании политикой планирования и приоритетами процессов.