Планировщики процессов на ОС Альт
Автор: Бондарева С.А., Денисюк М.В.
Журнал: Форум молодых ученых @forum-nauka
Статья в выпуске: 12 (100), 2024 года.
Бесплатный доступ
В работе проанализирована работа планировщиков процессов операционной системы Альт при различном количестве одновременно запущенных потоков программы cpuburn. На основе сравнения таблицы проанализирована нагрузка на процессор и сделаны выводы о каждом алгоритме планирования процессов.
Планировщик процессов, загруженность системы
Короткий адрес: https://sciup.org/140308984
IDR: 140308984
Текст научной статьи Планировщики процессов на ОС Альт
Планировщики процессов являются важной частью работы операционных систем. Они обеспечивают эффективное использование вычислительных ресурсов и повышают производительность системы, распределяя процессорное время между несколькими задачами. С помощью них современные операционные системы способны обрабатывать большое количество параллельных задач. Без них работа на компьютере не была бы такой эффективной.
В зависимости от задач и требований к ним необходимо использовать различные планировщики процессов. Один универсальный планировщик не сможет эффективно справиться со всеми ситуациями.
Объект исследования – процесс и их планирование в операционных системах.
Предмет исследования – сравнительный анализ эффективности алгоритмов планирования процессов операционной системы ALT Linux.
Цель – сравнить работу планировщиков процессов на отечественной операционной системе ALT Linux.
Литературный обзор
На эту тему было уже написано много статей. В пример возьму статью А.Г. Уймина «Моделирование телекоммуникационной сети средствами сетевых инструментов Linux: инструменты создания цифровых двойников» [10]
Если обобщить статьи, то основную информацию можно изложить следующим образом.
В операционных системах процесс - это программа, которая выполняется, используя ресурсы компьютера: память, центральный процессор. Иначе говоря, это активное состояние программы.
Например, пользователь запускает какое-либо приложение, компьютер получает инструкции от программы и выполняет их. Активно работающая версия программы - процесс.
В большинстве случаев пользователи хотят запускать более одной программы одновременно: различные браузеры, игры, текстовые редакторы. Современные операционные системы могут запускать сотни процессов одновременно. Но они только создают такое представление для пользователя. Процессор переключается между программами, предоставляя каждой определенное время (от десятков до сотен миллисекунд). В каждый момент он работает только с одной программой. Реальная параллельная работа программ может осуществляться в многопроцессорных и многоядерных системах. Так четырехъядерная система позволяет одновременно выполнять 4 процесса.
При запуске программа загружается в основную память компьютера, после чего делится на четыре части:
-
1. Стек. В нем хранится временная информация: вызовы функций, локальные переменные.
-
2. Куча. В ней хранится память, которая используется во время работы. Например, используется в случаях, когда программе требуется большее количество памяти для хранения дополнительных данных.
-
3. Раздел данных. Здесь хранятся глобальные и статические переменные, которые программа использует в процессе выполнения.
-
4. Раздел с текстом. В этой части хранятся фактические инструкции программы для компьютера.

Рисунок 1. Процесс в памяти
У каждого процесса есть атрибуты, которые помогают ОС управлять им и контролировать его. Они включают в себя:
-
1. Идентификатор процесса (PID), являющийся уникальным номером.
-
2. Состояние процесса: показывает текущий статус процесса.
-
3. Информация о планировании: данные, на основе которых ОС решает, какой процесс должен выполняться следующим (уровни приоритета).
-
4. Информация об устройствах ввода и вывода.
-
5. Учетная информация: продолжительность выполнения процесса, количество использованного процессорного времени и другие данные об использовании ресурсов.
-
6. Информация об управлении памятью: сведения о пространстве памяти, которое выделенно процессу.
В системе процесс может находиться в одном из трех основных состояний:
-
1) Выполнение – активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и выполняется процессором;
-
2) Ожидание - пассивное состояние процесса, процесс не выполняется по внутренним причинам, он ждет осуществления некоторого события, или освобождения необходимого для него ресурса;
-
3) Готовность - пассивное состояние процесса, процесс заблокирован из-за внешних причин: имеются все необходимы ресурсы, но пока что выполняется другой процесс.

Рисунок. 2. Граф состояний процесса
Из-за того, что процессор может выполнять только одну программу, то для эффективного использования вычислительных ресурсов необходимо использовать планировщиков процессов. Планирование – это обеспечение поочередного доступа процессов к одному процессору, а планировщик -отвечающая за это часть операционной системы.
Планирование процессов включает в себя определение момента времени для смены выполняемого процесса и выбор процесса на выполнение из очереди готовых процессов;
Различают виды алгоритмов планирования с переключениями и без. Алгоритм планирования без переключений (неприоритетный) не требует прерывание по аппаратному таймеру, процесс останавливается только когда блокируется или завершает работу. Алгоритм с переключениями (приоритетный) требует прерывание по аппаратному таймеру, процесс работает только отведенный период времени, после этого он приостанавливается по таймеру, чтобы передать управление планировщику.
Классы процессов Alt Linux:
-
1. Процессы реального времени (real_time), обслуживаемые по алгоритму FIFO. Эти процессы имеют наивысшие приоритеты. Они не могут прерываться
-
2. Процессы реального времени (real_time), обслуживаемые в порядке циклической очереди. Отличаются от процессов реального времени FIFO тем, что они могут прерываться по таймеру.
-
3. Процессы разделения времени (sharing_time). Обслуживаются в режиме пакетной обработки с выделением им определенного времени.
другими процессами. Исключением является процесс реального времени, который перешел в состояние готовности.
Алгоритмы планирования процессов Alt Linux:
Для того, чтобы узнать, какие планировщики процессов существуют в операционной системе, а также допустимые для них приоритеты можно использовать команду chrt -m
- ]S 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
Рисунок. 3. Планировщики процессов в ОС Альт
Таблица 1. Описание планировщиков процессов
Название планировщика |
Описание |
SCHED_OTHER |
Алгоритм планирования на основе разделения времени. Для выполнения выбирается процесс из списка со статическим приоритетом 0. Динамический приоритет основан на значении уступчивости и увеличивается с каждым квантом времени, при котором процесс был готов к работе, но ему было отказано. Таким образом время |
равномерно распределяется между всеми процессами с алгоритмом. |
|
SCHED_FIFO |
Принцип планирования - «первым пришел – первым обслужен» без использования квантов времени. Предназначен для класса процессов реального времени, обслуживаемых по алгоритму FIFO. |
SCHED_RR |
Алгоритм планирования с квантованием. Предназначен для класса процессов реального времени, обслуживаемых в порядке циклической очереди. |
SCHED_BATCH |
Алгоритм планирования на основе разделения времени с учётом значения приоритета nice. Приоритет процессов ниже, чем у процессов, планируемых на основе SHED_OTHER. |
ED_IDLE |
Процессам с этой политикой пРисунокваивается самый низкий приоритет. |
С помощью команды top можно просмотреть список текущих процессов. Интерфейс этой команды после запуска выглядит так:
£a dm initio st-1 5 ]S top top - 14:55:07 up 2:05, 2 users, load average: 0,86, 1,02. 1,47
Tasks: 163 total, 2 running, 161 sleeping, О stopped, О zombie %CPU(s): 2,7 us, 1,2 sy, 0,0 ni, 96,0 id, 0,0 wa , 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 4923,5 total, 1556,1 free, 1412,4 used. 1954,9 buff/cache
MiB Swap: 4922.0 total, 4922,0 free, 0,0 used. 3238,2 avail Mem
I PIP |
USER |
PR |
NI |
VIRT |
RES |
SHR |
S_ |
%CPU |
%MEM |
TIME^ |
COMMAND | |
401 8 |
admin |
20 |
О |
14.9g |
406352 |
131044 |
s |
3.0 |
8.1 |
4:03.17 |
I solate* |
3098 |
root |
20 |
О |
385468 |
124152 |
74040 |
s |
2 , О |
2,5 |
1:27.49 |
X |
3628 |
admin |
20 |
О |
786580 |
71204 |
56500 |
s |
1.3 |
1 . 4 |
0:07.96 |
mate-te* |
3319 |
admin |
20 |
О |
148148 |
2868 |
2420 |
s |
0,3 |
О . 1 |
0:15.44 |
VBOXC11+ |
3395 |
admin |
20 |
О |
641480 |
53560 |
40976 |
s |
о , 3 |
1 . 1 |
0:21.67 |
marco |
4492 |
admin |
20 |
О |
2510068 |
160328 |
103468 |
s |
0,3 |
3,2 |
0:27.33 |
Isolate* |
8022 |
admin |
20 |
О |
2402640 |
95324 |
77316 |
s |
0,3 |
1 .9 |
0:00.10 |
Isolate+ |
Рисунок. 4. Интерфейс команды top
Верхняя рабочая зона содержит сведения о времени работы сервера, свободных и занятых ресурсах, пользователях, а основная - это динамически обновляемая таблица, которая содержит сведения о процессах.
В верхнем левом углу отображено текущее время, время безотказной работы системы, количество активных сеансов пользователя.
В разделе Tasks отображается статистика процессов, выполняемых в системе: общее количество процессов, активные, спящие, остановленные и процессы-зомби.
Раздел использования CPU показывает показателя загруженности системы.
-
• us (user) — использование процессора пользовательскими процессами.
-
• sy (system) — использование процессора системными процессами.
-
• ni (nice) — использование процессора процессами с изменённым приоритетом с помощью команды nice.
-
• id (idle) — свободные ресурсы.
Последние 2 строки показывают информацию об использовании памяти в системе. Строки Mem и Swap отображают информацию о оперативной памяти и области подкачки. Указаны значения общего, свободного, используемого объема и кеша. Avail Mem - это объем памяти, который может быть выделен для процессов, не используя большую область диска.
В таблице используются следующие обозначения:
РЮ |
Это идентификатор процесса; уникальное положительное целое число, которое идентифицирует процесс. |
USER |
Это эффективное имя пользователя (соответствующее идентификатору пользователя) пользователя; который запустил этот процесс Linux назначает реальный идентификатор пользователя и эффективный идентификатор пользователя для процессов; последний позволяет процессу действовать от имени другого пользователя. Например, пользователь; не являющийся пользователем root, можете правами root установить пакет. |
PR |
Поле показывает приоритет выполнения процесса сточки зрения ядра. |
Nl |
Поле показывает nice-значение процесса. |
VIRT |
Общий объем памяти, потребляемый процессом.Он включает в себя код программы, данные, хранящиеся в памяти, а также любые области памяти, которые были подкачены на диск. |
RES |
Количество памяти, потребляемая процессом в оперативной памяти. |
SHR |
Объем памяти, совместно используемый другими процессами. |
S |
В этом поле отображается состояние процесса в однобуквенной фopмe(R- Runnable, D- Interruptible sleep, S -Uninterruptible sleep, T - Stopped, Z - Zombie). |
%CPU |
Параметр выражает объем в процентах от общей доступной оперативной памяти ОЗУ. |
%MEM |
Параметр выражает значение RES в процентах от общей доступной оперативной памяти. |
TIME+ |
Общее время процессора, используемое процессом с момента его начала, с точностью до сотых долей секунды. |
COMMAND |
Здесь отображено название процессов. |
Рисунок 5. Обозначения в таблице
Экспериментальная часть
Методика исследования: на ОС ALT Linux буду запускать программу cpuburn, последовательно изменяя используемый планировщик процесса и анализируя загруженность системы. Так как рассматриваемая программа является однопоточной, то исследование нужно проводить при запуске 1/4/7 потоков одновременно.
-
1) Анализ при одном включенном потоке
Включим cpuburn с помощью команды burnP6. Воспользуемся командой top, чтобы просмотреть список текущих процессов.

Рисунок. 6. Список процессов при запуске одного потока программы
Теперь, чтобы получить текущую политику планирования и приоритет для процесса, вызванным командой burnP6, используем chrt следующим образом chrt -p 6526 pid 6526's current scheduling policy: SCHED_OTHER pid 6526's current scheduling priority: О
Рисунок 7. Просмотр текущей политики
Замечаем, что по умолчанию используется алгоритм планирования SCHED_OTHER с приоритетом 0.
Теперь, чтобы изменить политику на
SCHED_FIFO
, нужно обладать правами суперпользователя (используем команду su- ). Далее пишем команду chrt -f -p
[admin@host- 1 5 -]$ su-
Pa ssword: chrt -f -p 1 6526 chrt -p 6526
pid 6526's current scheduling policy: SCHED_FIFO pid 6526's current scheduling priority: 1
Рисунок 8. Смена политики
После этого посмотрим список текущих процессов.

Рисунок 9. Список процессов
Для применения алгоритма SCHED_RR используем команду chrt -r -p
pid 6526's pid 6526’s
chrt -p 6526 current scheduling policy: SCHED_RR current scheduling priority: 1
Рисунок 10. Смена политики

Рисунок 11. Список процессов
Теперь, чтобы изменить политику на SCHED_BATCH используем следующую команду: chrt -b -p
pid 6526's current scheduling policy: SCHED_BATCH pid 6526's current scheduling priority: О
Рисунок 12. Смена политики

Рисунок 13. Список процессов
Для SCHED_IDLE пишем chrt -i -p
chrt -p 6526
pid 6526’s current scheduling policy: SCHED_IDLE pid 6526’s current scheduling priority: О
Рисунок 14. Смена политики

Рисунок 15. Список процессов
-
2) Анализ с четырьмя запущенными потоками
По аналогии с прошлым пунктом запустим четыре потока программы cpuburn и воспользуемся командой top.
top - 00:35:53 up 41 min, 2 users, load average: 4,03, 2,96, 1,43
Tasks: 153 total, 5 running, 147 sleeping, 0 stopped, 1 zombie
WU(s): 98,2 us, 1,8 sy, 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi. 0,0 si, 0,0 st
MiB Mem : 4923,5 total, 3361,8 free, 546,7 used, 1015,0 buff/cache
MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4143,0 avail Mem
PID USER |
PR |
NI |
VIRT |
RES |
SHR S |
%CPU |
%MEM |
TIME* COMMAND |
3593 admin |
20 |
0 |
168 |
4 |
0 R |
49,5 |
0,0 |
3:30.10 burnP6 |
3625 admin |
20 |
0 |
168 |
4 |
0 R |
49,5 |
0,0 |
3:03.29 burnP6 |
3605 admin |
20 |
0 |
168 |
4 |
0 R |
49,2 |
0,0 |
3:20.11 burnP6 |
3615 admin |
20 |
0 |
168 |
4 |
0 R |
49,2 |
0,0 |
3:08.18 ЬигпРб |
2693 root |
20 |
0 |
384376 |
118648 |
65172 5 |
1,0 |
2,4 |
1:40.47 X |
3185 admin |
20 |
0 |
816432 |
61648 |
50508 S |
o,3 |
1,2 |
0:03.07 mate-pa- |
Рисунок 16. Список процессов
Проверим какой планировщик установлен по умолчанию. Как и в прошлом эксперименте используется SCHED_OTHER с приоритетом 0.
chrt -p 3605
pid 3605's current scheduling policy: SCHED_OTHER pid 3605's current scheduling priority: 0
Рисунок 17. Текущая политика
Изменяем политику на
SCHED_FIFO
, используя команду chrt -f-p

Рисунок 18. Смена политики top - 00:36:26 up 41 min, 2 users, load average: 4,16, 3,11, 1,54
Tasks: 153 total, 6 running, 146 sleeping, 0 stopped, 1 zombie
%CPU(s): 97,0 us, 1,8 sy, 0,0 ni, 1,2 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st MiB Mem : 4923,5 total, 3372,8 free, 535,7 used, 1015,0 buff/cache
MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4154,0 avail Mem
PIP USER |
PR |
NI |
VIRT |
RES |
SHR S |
%CPU |
%MEM |
TIME* COMMAND |
3605 admin |
-2 |
0 |
168 |
4 |
0 R |
95,0 |
0,0 |
3:41.99 burnP6 |
3593 admin |
20 |
0 |
168 |
4 |
0 R |
34,6 |
0,0 |
3:44.54 burnP6 |
3615 admin |
20 |
0 |
168 |
4 |
0 R |
34,2 |
0,0 |
3:22.55 burnP6 |
3625 admin |
20 |
0 |
168 |
4 |
0 R |
30,9 |
0,0 |
3:17.33 burnP6 |
2693 root |
20 |
0 |
384376 |
118648 |
65172 S |
1,3 |
2,4 |
1:41.06 X |
Рисунок 19. Список процессов
Применяем политику SCHED_RR с помощью команды chrt -r -p

Рисунок 20. Смена политики top • 00:37:50 up 43 min, 2 users, load average: 4,50, 3,48, 1,81
Tasks: 153 total, 6 running, 146 sleeping, 0 stopped, 1 zombie
XCPU(s): 96,3 us, 2,5 sy, 0,0 ni, 1,2 id, 0,0 wa. 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 4923,5 total, 3372,8 free, 535,6 used, 1015,0 buff/cache
MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4154,1 avail Mem
PIP USER |
PR |
NI |
VIRT |
RES |
SHR S |
SCPU |
%MEM |
TIME* COMMAND |
3605 admin |
-2 |
0 |
168 |
4 |
0 R |
95,3 |
0,0 |
5:01.93 ЬигпРб |
3593 admin |
20 |
0 |
168 |
4 |
0 R |
32,6 |
0,0 |
4:13.61 ЬигпРб |
3615 admin |
20 |
0 |
168 |
4 |
0 R |
31,9 |
0,0 |
3:51.55 ЬигпРб |
3625 admin |
20 |
0 |
168 |
4 |
0 R |
27,9 |
0,0 |
3:44.11 ЬигпРб |
2693 root |
20 |
0 |
384376 |
118648 |
65172 S |
5,3 |
2,4 |
1:41.84 X |
Э1ОС Л О4СЛ11 С1СЛО СПЕЛО С 11 4 1 A ■ Al
Рисунок 21. Список процессов
Для применения алгоритма SCHED_BATCH используем команду chrt -b -p
chrt -p 3605
pid 3605's current scheduling policy: SCHED_BATCH pid 3605's current scheduling priority: 0
Рисунок 22. Смена политики top - 00:39:21 up 44 min, 2 users, load average: 4,34, 3,71, 2,05
Tasks: 153 total, 5 running, 147 sleeping, 0 stopped, 1 zombie %CPU(s); 98,3 us, 1,7 sy, 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem : 4923,5 total, 3381,1 free, 527,3 used, 1015,0 buff/cache
Mie Swap: 4922,0 total, 4922,0 free, 0,0 used. 4162,4 avail Mem
PID USER |
PR |
NI |
VIRT |
RES |
SHR S |
KPU |
WEM |
TIME- COMMAND |
3593 admin |
20 |
0 |
168 |
4 |
0 R |
50,2 |
0,0 |
4:52.28 burnP6 |
3625 admin |
20 |
0 |
168 |
4 |
0 R |
49,5 |
0,0 |
4:21.41 burnP6 |
3605 admin |
20 |
0 |
168 |
4 |
0 R |
48,8 |
0,0 |
6:05.25 ЬигпРб |
3615 admin |
20 |
0 |
168 |
4 |
0 R |
48,8 |
0,0 |
4:29.92 burnP6 |
2693 root |
20 |
0 |
384376 |
118648 |
65172 S |
1,0 |
2,4 |
1:42.70 X |
3185 admin |
20 |
0 |
816432 |
61648 |
50508 S |
0,7 |
1,2 |
0:03.63 mate-pa* |
Рисунок 23. Список процессов
Для SCHED_IDLE пишем chrt -i -p
chrt -p 3605
pid 3605's current scheduling policy: SCHED_IDLE pid 3605's current scheduling priority: 0
Рисунок 24. Смена политики

Рисунок 25. Список процессов
-
3) Анализ с семью запущенными потоками
Проверяем список текущих процессов и узнаем политику, установленную по умолчанию - SCHED_OTHER с приоритетом 0.
Tasks: 158 total, 8 |
running, 149 sleeping, |
0 stopped, 1 |
zombie |
||||||
%CPU(s): |
97,7 US, 2,3 |
I sy, |
, 0,0 ni, 0,0 |
id, < |
),0 |
wa, |
0,0 hi, |
0,0 si |
, 0,0 st |
MiB Mem |
: 4923,5 total, |
3357,5 free, |
550,8 |
used, |
1015,3 buff/cache |
||||
MiB Swap: 4922,0 total, |
4922,0 free, |
0,0 |
used. |
4138 |
,9 avail |
Mem |
|||
РЮ |
USER PR |
NI |
VIRT RES |
SHR |
S |
%CPU |
ИМЕН |
TIME* |
COMMAND |
3615 |
admin 20 |
0 |
168 4 |
0 |
R |
28,9 |
o,o |
6:06.55 |
burnP6 |
3625 |
admin 20 |
0 |
168 4 |
0 |
R |
28,6 |
0,0 |
5:57.36 |
burnP6 |
3690 |
admin 20 |
0 |
168 4 |
0 |
R |
28,6 |
0,0 |
0:08.80 |
burnP6 |
3700 |
admin 20 |
0 |
168 4 |
0 |
R |
28,6 |
0,0 |
0:05.00 |
ЬигпРб |
3593 |
admin 20 |
0 |
168 4 |
0 |
R |
28,2 |
0,0 |
6:28.56 |
burnP6 |
3605 |
admin 20 |
0 |
168 4 |
0 |
R |
27,6 |
0,0 |
7:41.06 |
ЬигпРб |
3678 |
admin 20 |
0 |
168 4 |
0 |
R |
27,2 |
0,0 |
0:13.17 |
burnP6 |
2693 |
root 20 |
0 |
393940 128416 |
65180 |
S |
1,3 |
2,5 |
1:47.20 |
X |
Рисунок 26. Список процессов

Рисунок 27. Текущая политика
Изменяем используемую политику на SCHED_FIFO с использованием команды из прошлого пункта при работе с этой политикой. Проверяем список запущенных процессов.
chrt -f -p 1 3605
chrt -p 3605
pid 3605's current scheduling policy: SCHED_FIFO pid 3605’s current scheduling priority: 1
Рисунок 28. Смена политики
Tasks; 158 total, 8 running, 149 sleeping, 0 stopped, 1 zombie
ICPU(s): 97,8 us, 1,8 sy, 0,0 ni, 0,3 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem ; 4923,5 total, 3357,0 free, 551,2 used, 1015,3 buff/cache
MiB swap: 4922,0 total, 4922,0 free, 0,0 used. 4138,4 avail Mem
PIP USER |
PR |
NI |
VIRT |
RES |
SHR S |
JKPU |
W |
TIME* COMMAND |
3605 admin |
•2 |
0 |
168 |
4 |
0 R |
95,0 |
0,0 |
9:00.43 ЬигпРб |
3678 admin |
20 |
0 |
168 |
4 |
0 R |
18,0 |
0,0 |
0:41.47 burnP6 |
3690 admin |
20 |
0 |
168 |
4 |
0 R |
17,7 |
0,0 |
0:36.85 ЬигпРб |
3625 admin |
20 |
0 |
168 |
4 |
0 R |
17,3 |
0,0 |
6:25.51 ЬигпРб |
3700 admin |
20 |
0 |
168 |
4 |
0 R |
17,0 |
0.0 |
0:33.23 ЬигпРб |
3593 admin |
20 |
0 |
168 |
4 |
0 R |
16,7 |
0,0 |
6:56.63 ЬигпРб |
3615 admin |
20 |
0 |
168 |
4 |
0 R |
16,7 |
0,0 |
6:34.49 ЬигпРб |
2693 root |
20 |
0 |
393940 |
128416 |
65180 S |
0,7 |
2,5 |
1:49.04 X |
Рисунок 29. Список процессов
Применяем политику алгоритма SCHED_RR, используем команду chrt -r
-p

Рисунок 30. Смена политики
top - 00:46:24 up 51 min, |
2 users |
, load average |
: 7,29, |
5,82, |
, 3,56 |
|||||
Tasks: 158 total, 8 running, 149 sleeping, |
0 stopped |
, 1 |
zombie |
|||||||
%CPU(s) |
97,7 us, 2, |
.0 sy, |
0,0 ni |
. 0,3 |
id, 0,0 |
wa, 0 |
,0 hi, |
0,0 si, |
0,0 st |
|
MiB Mem |
4923,5 total. |
3356,7 |
free, |
551 |
1,5 used, |
1015,3 buff/cache |
||||
MiB Swap: 4922,0 total. |
4922,0 |
free, |
0,0 used. |
4138,2 avail |
Mem |
|||||
PIO |
USER PR |
NI |
VIRT |
RES |
SHR |
S |
%CPU «Ell |
TIME* |
COMMAND |
|
3605 |
admin -2 |
0 |
168 |
4 |
0 |
R |
95,0 |
0,0 |
10:23.28 |
ЬигпРб |
3625 |
admin 20 |
0 |
168 |
4 |
0 |
R |
19,6 |
0,0 |
6:40.20 |
ЬигпРб |
3593 |
admin 20 |
0 |
168 |
4 |
0 |
R |
17,6 |
0,0 |
7:11.18 |
ЬигпРб |
3615 |
admin 20 |
0 |
168 |
4. |
0 |
R |
17,3 |
0,0 |
6:49.15 |
ЬигпРб |
3690 |
admin 20 |
0 |
168 |
4 |
0 |
R |
17,3 |
0,0 |
0:51.78 |
ЬигпРб |
3700 |
admin 20 |
0 |
168 |
4 |
0 |
R |
16,9 |
0,0 |
0:48.14 |
ЬигпРб |
3678 |
admin 20 |
0 |
168 |
4 |
0 |
R |
15,0 |
0,0 |
0:56.27 |
ЬигпРб |
3397 |
admin 20 |
0 |
856900 73556 |
54076 |
S |
0,7 |
1.5 |
0:05.12 |
mate-te+ |
Рисунок 31. Список процессов
Работа с политикой на SCHED_BATCH осуществляется с использованием следующей команды: chrt -b -p

Рисунок 32. Смена политики
|top - 00:47:28 up 52 min, 2 users, load average: 7,21, 6,07, 3,79
Tasks: 158 total, 8 running, 149 sleeping, 0 stopped, 1 zombie
KPU(s): MiB Mem MiВ Swap |
96,8 us, : 4923, к 4922, |
3,2 sy, 5 total, 0 total, |
0,0 ni, 3356,7 4922,0 |
0,0 id, 0,0 wa, |
0,0 hi, 1015 4138 |
0,0 si, ,3 buff/( ,2 avail |
, 0,0 St :ache Mem |
||||
free, free, |
551,4 used, 0,0 used. |
||||||||||
PID USER |
PR |
NI |
VIRT |
RES |
SHR |
S |
%CPU |
JO |
TIME* |
COMMAND | |
|
3678 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
27,9 |
0,0 |
1:09.51 |
burnP6 |
3593 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
26,9 |
0.0 |
7:24.24 |
burnP6 |
3625 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
26,9 |
0,0 |
6:53.43 |
burnP6 |
3615 |
a Anin |
20 |
0 |
168 |
4 |
0 |
R |
26,2 |
0,0 |
7:02.25 |
ЬигпРб |
3605 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
25,9 |
o.o |
11:08.47 |
ЬигпРб |
3690 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
24,9 |
0.0 |
1:04.91 |
ЬигпРб |
3700 |
admin |
20 |
0 |
168 |
4 |
0 |
R |
24,9 |
0.0 |
1:01.44 |
ЬигпРб |
2693 |
root |
20 |
0 |
393940 128416 |
65180 |
S |
10,0 |
2,5 |
1:50.89 |
X |
Рисунок 32. Список процессов
Для SCHED_IDLE пишем chrt -i -p
chrt -p 3605
pid 3605's current scheduling policy: SCHED_IDLE pid 3605's current scheduling priority: 0
Рисунок 34. Смена политики

Рисунок 35. Список процессов
Составим таблицу с различающимися данными.
Таблица 2. Сравнение загруженности системы при разном количестве потоков
Название политики |
us |
sy |
id |
Используемая память |
||||||||
Кол-во потоков |
1 |
4 |
7 |
1 |
4 |
7 |
1 |
4 |
7 |
1 |
4 |
7 |
SCHED_OTHER |
49,3 |
98,2 |
98 |
1,1 |
1, |
2 |
49,6 |
0 |
0 |
1310,1 |
546, |
550,8 |
8 |
7 |
|||||||||||
SCHED_FIFO |
54,6 |
97 |
98 |
1,7 |
1, 8 |
2 |
43,6 |
1,2 |
0, 3 |
1427 |
535, 7 |
551,2 |
SCHED_RR |
53,1 |
96,3 |
98 |
1,2 |
2, 5 |
2 |
45,7 |
1,2 |
0, 3 |
1463 |
535, 6 |
551,5 |
SCHED_BATC H |
62,4 |
98,3 |
97 |
3,5 |
1, 7 |
3 |
34 |
0 |
0 |
1444,5 |
527, 3 |
551,4 |
SCHED_IDLE |
49,5 |
97,7 |
98 |
1,4 |
2, 3 |
3 |
49,1 |
0 |
0 |
1441,5 |
527, 8 |
1015 |
Вывод
Политики SCHED_OTHER показывает относительно сбалансированное использование ресурсов: использование процессора самое низкое, остается наибольшее количество свободных ресурсов.
При использовании политики SCHED_FIFO использование процессора пользовательскими процессами значительно выше, чем у SCHED_OTHER при однопоточном исследовании. Это может указывать на то, что процессы реального времени (FIFO) захватывают значительную часть процессорного времени, оставляя мало ресурсов для других процессов. При анализе с 4/7 потоками система работает незначительно, но лучше, чем при использовании SCHED_OTHER.
SCHED_RR - циклическое квантование работает относительно эффективно, обеспечивая более равномерное распределение процессорного времени, чем SCHED_FIFO. В сравнении с другими алгоритмами загруженность процессора пользовательскими процессами меньше.
SCHED_BATCH – низкая загрузка id и высокая загрузка пользователя (us). Процессы с низким приоритетом, работают эффективно с точки зрения пользовательского времени, но получают мало времени процессора, что проявляется в низкой системной загрузке (sy).
SCHED_IDLE - низкая загрузка процессора только при однопоточном анализе.
Выбор политики планирования зависит от конкретных задач. Например, SCHED_OTHER и SCHED_RR показывают лучшую масштабируемость при увеличении количества потоков. SCHED_BATCH неэффективен при маленькой нагрузке, SCHED_IDLE – при большой.
В целом, SCHED_OTHER подходит для большинства интерактивных приложений, SCHED_FIFO и SCHED_RR — для задач реального времени, SCHED_BATCH — для фоновых задач с низким приоритетом, а SCHED_IDLE предназначен для процессов, которые выполняются только при отсутствии другой работы.
Список литературы Планировщики процессов на ОС Альт
- ALT Linux - sisyphus - cpuburn-1.4a-alt1 - CPU testing utilities - [Электронный ресурс] - URL: https://packages.altlinux.org/en/sisyphus/srpms/cpuburn/(дата обращения: 10.12.24).
- chrt command in Linux with examples - GeeksforGeeks - [Электронный ресурс] - URL: https://translated.turbopages.org/proxy_u/en-ru.ru.b9e09dfb-6758b48b-6d3b21a7-74722d776562/https/www.geeksforgeeks.org/chrt-command-in-linux-with-examples/(дата обращения: 10.12.24).
- Operating Systems: Three Easy Pieces. Part 2: Абстракция: Процесс (перевод) / Хабр - [Электронный ресурс] - URL: https://habr.com/ru/articles/446866/(дата обращения: 11.12.24).
- States of a Process in Operating Systems - GeeksforGeeks - [Электронный ресурс] - URL: https://www.geeksforgeeks.org/states-of-a-process-in-operating-systems/(дата обращения: 11.12.24).
- Как управлять процессами в Linux - [Электронный ресурс] - URL: https://1cloud.ru/help/security/prosmotr-i-upravlenie-protsessami-linux-s-pomoshhyu-top (дата обращения: 11.12.24).
- Кручинин А.Ю. К 84 Операционные системы [Электронный ресурс]: учебное пособие / А.Ю. Кручинин, Р.Р. Галимов., А.А. Рычкова - Оренбург: ОГУ, 2019. - 152 с. (дата обращения: 09.12.24).
- ОС: 5.1 Лекция- Планирование процессов. | Сайт дистанционного образования - MOODLE КНИТУ (КХТИ)- [Электронный ресурс] - URL: https://moodle.kstu.ru/mod/page/view.php?id=55 (дата обращения: 09.12.24).
- Сёмкин П.С., Сёмкин А.П. Методические материалы к лабораторным работам по дисциплине "Операционные системы" "ОС Alt Linux. Мониторинг и управление процессами" (дата обращения: 11.12.24).
- Управление процессами - [Электронный ресурс] - URL: https://dit.isuct.ru/IVT/BOOKS/OPERATING_SYSTEMS/OPER12/GLAVA_6.HTM (дата обращения: 11.12.24).
- Уймин, А. Г. Моделирование телекоммуникационной сети средствами сетевых инструментов Linux: инструменты создания цифровых двойников / А. Г. Уймин, О. Р. Никитин // I-methods. - 2023. - Т. 15, № 2. (дата обращения: 09.12.24). EDN: NFJDVH