УДК 004.451.26
Бондарева С. А. студент
РГУ нефти и газа (НИУ) имени И.М. Губкина
Денисюк М.В. студент
РГУ нефти и газа (НИУ) имени И.М. Губкина ПЛАНИРОВЩИКИ ПРОЦЕССОВ НА ОС АЛЬТ
Аннотация: в работе проанализирована работа планировщиков процессов операционной системы Альт при различном количестве одновременно запущенных потоков программы cpuburn. На основе сравнения таблицы проанализирована нагрузка на процессор и сделаны выводы о каждом алгоритме планирования процессов.
Ключевые слова: планировщик процессов, загруженность системы.
Bondareva S.A. student
Gubkin Russian State University (NRU) of Oil and Gas
Russia, Moscow Denisyuk M. V. student
Gubkin Russian State University (NRU) of Oil and Gas PROCESS SCHEDULERS ON THE ALT OS
Abstract: the paper analyzes the operation of the process schedulers of the Alt operating system with a different number of simultaneously running cpuburn program threads. Based on a comparison of the table, the processor load is analyzed and conclusions are drawn about each process planning algorithm.
Keywords: process scheduler, system workload.
Планировщики процессов являются важной частью работы операционных систем. Они обеспечивают эффективное использование вычислительных ресурсов и повышают производительность системы, распределяя процессорное время между несколькими задачами. С помощью них современные операционные системы способны обрабатывать большое количество параллельных задач. Без них работа на компьютере не была бы такой эффективной.
В зависимости от задач и требований к ним необходимо использовать различные планировщики процессов. Один универсальный планировщик не сможет эффективно справиться со всеми ситуациями.
Объект исследования - процесс и их планирование в операционных
системах.
Предмет исследования - сравнительный анализ эффективности алгоритмов планирования процессов операционной системы ALT Linux.
Цель - сравнить работу планировщиков процессов на отечественной операционной системе ALT Linux. Литературный обзор
На эту тему было уже написано много статей. В пример возьму статью А.Г. Уймина «Моделирование телекоммуникационной сети средствами сетевых инструментов Linux: инструменты создания цифровых двойников» [10]
Если обобщить статьи, то основную информацию можно изложить следующим образом.
В операционных системах процесс - это программа, которая выполняется, используя ресурсы компьютера: память, центральный процессор. Иначе говоря, это активное состояние программы.
Например, пользователь запускает какое-либо приложение, компьютер получает инструкции от программы и выполняет их. Активно работающая версия программы - процесс.
В большинстве случаев пользователи хотят запускать более одной программы одновременно: различные браузеры, игры, текстовые редакторы. Современные операционные системы могут запускать сотни процессов одновременно. Но они только создают такое представление для пользователя. Процессор переключается между программами, предоставляя каждой определенное время (от десятков до сотен миллисекунд). В каждый момент он работает только с одной программой. Реальная параллельная работа программ может осуществляться в многопроцессорных и многоядерных системах. Так четырехъядерная система позволяет одновременно выполнять 4 процесса.
При запуске программа загружается в основную память компьютера, после чего делится на четыре части:
1. Стек. В нем хранится временная информация: вызовы функций, локальные переменные.
2. Куча. В ней хранится память, которая используется во время работы. Например, используется в случаях, когда программе требуется большее количество памяти для хранения дополнительных данных.
3. Раздел данных. Здесь хранятся глобальные и статические переменные, которые программа использует в процессе выполнения.
4. Раздел с текстом. В этой части хранятся фактические инструкции программы для компьютера.
Stack
Heap Data
Tfext
Рисунок 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:
Для того, чтобы узнать, какие планировщики процессов существуют в операционной системе, а также допустимые для них приоритеты можно использовать команду ehrt -m
]t chrt -m
SCHED_OTHER min/max priority : O/O
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : O/O
SCHED_IDLE min/max priority : O/O
Рисунок. 3. Планировщики процессов в ОС Альт
Таблица 1. Описание планировщиков процессов
Название планировщика Описание
SCHED_OTHER Алгоритм планирования на основе разделения времени. Для выполнения выбирается процесс из списка со статическим приоритетом 0. Динамический приоритет основан на значении уступчивости и увеличивается с каждым квантом времени, при котором процесс был готов к работе, но ему было отказано. Таким образом время равномерно распределяется между всеми процессами с алгоритмом.
SCHED_FIFO Принцип планирования - «первым пришел -первым обслужен» без использования квантов времени. Предназначен для класса процессов реального времени, обслуживаемых по алгоритму FIFO.
SCHED_RR Алгоритм планирования с квантованием. Предназначен для класса процессов реального времени, обслуживаемых в порядке циклической очереди.
SCHED_BATCH Алгоритм планирования на основе разделения времени с учётом значения приоритета nice. Приоритет процессов ниже, чем у процессов, планируемых на основе SHED_OTHER.
ED_IDLE Процессам с этой политикой пРисунокваивается самый низкий приоритет.
С помощью команды top можно просмотреть список текущих процессов. Интерфейс этой команды после запуска выглядит так:
top - 14:55:07 up 2:05, 2 users. load average: O.86. 1,02, 1.47 Tasks: 163 total, 2 running, 161 sleeping, O stopped, O zombie %CPU(s): 2,7 us. 1,2 sy. 0,0 ni, 96,O id. O.O wa. O.O hi, O.O si. O.O st MiB Mem : 4923,5 total, 1556,1 free, 1412,4 used, 1954,9 buff/cache MiB Swap: 4922,0 total. 4922,O free. O.O used. 3238.2 avail Mem
4018 admin 20 О 14. 9g 406352 131 О44 S 3, ,о 8, , 1 4 оз. . 1 7 Isolate*
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 О 07 . . 96 mate-te*
3319 admin 20 О 148148 2868 2420 S о, ,3 о, , 1 О 15. . 44 VBoxCli*
3395 admin 20 О 641480 53560 40976 S о, ,3 1, ,1 О 21 . . 67 ma г со
4492 admin 20 0 25Ю068 160328 103468 S о, ,3 3, ,2 0 27. . 33 Isolate*
8022 admin 20 О 2402640 95324 77316 S о, ,3 1, ,9 о оо. . 1 О Isolate*
Рисунок. 4. Интерфейс команды top
Верхняя рабочая зона содержит сведения о времени работы сервера, свободных и занятых ресурсах, пользователях, а основная - это динамически обновляемая таблица, которая содержит сведения о процессах.
В верхнем левом углу отображено текущее время, время безотказной работы системы, количество активных сеансов пользователя.
В разделе Tasks отображается статистика процессов, выполняемых в системе: общее количество процессов, активные, спящие, остановленные и процессы-зомби.
Раздел использования CPU показывает показателя загруженности системы.
• us (user) — использование процессора пользовательскими процессами.
• sy (system) — использование процессора системными процессами.
• ni (nice) — использование процессора процессами с изменённым приоритетом с помощью команды nice.
• id (idle) — свободные ресурсы.
Последние 2 строки показывают информацию об использовании памяти в системе. Строки Mem и Swap отображают информацию о оперативной памяти и области подкачки. Указаны значения общего, свободного, используемого объема и кеша. Avail Mem - это объем памяти, который может быть выделен для процессов, не используя большую область диска.
В таблице используются следующие обозначения:
PID Эта идентификатор процесса, уникальное положительное целое число, которое идентифицирует процесс
USER Эта эффективное имя пользователя (соответствующее идентификатору пользователя) пользователя, который запустил этотпроцесс. Linux назначает реальный идентификатор пользователя и эффективный идентификатор пользователя для процессов; последний позволяет процессу действовать от имени другого пользователя. Например, пользователь, не являющийся пользователем root, может с правами root установить пакет.
PR Поле показывает приоритет выполнения процесса с точки зрения ядра.
NI Поле показывает шее-значение процесса.
VIRT Общий объем памяти, потребляемый процессом.Он включаетв себя код программы, данные, хранящиеся в памяти, а также любые области памяти, которые были подкачены на диск.
RES Количество памяти, потребляемая процессом в оперативной памяти.
SHR Объем памяти, совместно используемый другими процессами.
S В этом поле отображается состояние процесса в однобуквенной формс(И - Runnable, D - Interrupt!Ые sleep, S -Uninterruptible sleep, T - Stopped, Z- Zombie).
%CPU Параметр выражает объем в процентах от общей доступной оперативной памяти ОЗУ.
%MEM Параметр выражает значение RES в процентах от общей доступной оперативной памяти.
TIME+ Общее время процессора, используемое процессом с момента его начала, с точностью до сотых долей секунды.
COMMAND Здесь отображено название процессов.
Рисунок 5. Обозначения в таблице Экспериментальная часть Методика исследования: на ОС ALT Linux буду запускать программу cpuburn, последовательно изменяя используемый планировщик процесса и анализируя загруженность системы. Так как рассматриваемая программа является однопоточной, то исследование нужно проводить при запуске 1/4/7 потоков одновременно.
1) Анализ при одном включенном потоке Включим cpuburn с помощью команды burnP6. Воспользуемся командой top, чтобы просмотреть список текущих процессов.
top - 13:48:06 up 58 min, 1 user, load average: 1,OO, O.39, 0,19 Tasks: 160 total, 2 running, 158 sleeping. O stopped, O zombie XCPU(s): 49,3 us. 1,1 sy, O.O ni, 49,6 id, O.O wa, O.O hi. 0,0 si, O.O st MiB Mem : 4923.5 total. 1677,2 free. 1310.1 used. 1936,2 buff/cache MiB Swap: 4922,O total. 4922,0 free. O.O used. 3338.7 avail Mem
PID USER
6526 admin
3098 root 3404 admin 4018 admin 3395 admin
SHR S XCPU XMEM
168 4 OR
385468 123900 73788 S 883860 70252 56564 S 14,8g 36Ю44 125204 S 641480 53560 40976 S
TIME" COMMAND
1:11.71 ЬигпРб
О:57.77 X 0:06.14 mate-pa* 1 : 34.54 Isolate* О:14.39 marco
Рисунок. 6. Список процессов при запуске одного потока программы
Теперь, чтобы получить текущую политику планирования и приоритет для процесса, вызванным командой ЬигпРб, используем ehrt следующим образом
chrt -p 6526
pid 6526 * s current scheduling policy: SCHED_OTHER pid 6526"s current scheduling priority: O
Рисунок 7. Просмотр текущей политики
Замечаем, что по умолчанию используется алгоритм планирования
SCHED_OTHER с приоритетом 0.
Теперь, чтобы изменить политику на SCHED_FIFO, нужно обладать правами суперпользователя (используем команду su- ). Далее пишем команду chrt ^ -р <PID> и проверяем, какая политика планирования станет использоваться для процесса.
Password:
chrt -f -p 1 6526 chrt -p 6526
pid 6526"s current scheduling policy: SCHED_FIFO pid 6526's current scheduling priority: 1
Рисунок 8. Смена политики
После этого посмотрим список текущих процессов.
admlnOhost-15: /home/admln
Райл Прлвм Вид Поиск Терминал Помощь
Dp - 14:13:34 up 1 : 23. 2 users . load 4 . 24 , , 3.70. 2 , 27
asks: 165 total. S running, 160 sleeping. О ' stopped, О zombie
CPU(s): 34,6 us. 1 , 7 sy О.О п 1. 43.6 id. О.О wa, О,О hi. О.О si О.О St
IB Mem 4923, S total. 1544. 6 free. 1427,7 used, 1951 ,2 buff/cache
IB Swap: 4922. О total. 4922. О free. О.О used. 3221 ,7 avail Mem
PID USER PR N1 VIRT RES SHR S %CPU хм tu TIME- COMMAND |
6526 admin -2 О 168 4 О R 92.4 о,о 24 : 40.96 Ьиг'пРб
4018 admin 20 О 14.8g 383464 126476 S 6.6 7.6 2 : 31.68 Isolate*
3763 admin 20 О 3565220 535320 187716 S 3.7 10.6 1 : 37.64 firefox
3098 root 20 о 385468 124Ю8 73996 S 2.7 2,S 1 : 08.Ol X
3404 admin 20 О 883860 70252 56564 S О.7 1 .4 О : OB.64 mate-pa*
ЗЭ80 admin 20 0 1 .'О 1 ООО Ol 1 04 50068 S 0 . 3 1 .2 о : 01.27 ma te-se*
Рисунок 9. Список процессов
Для применения алгоритма SCHED_RR используем команду сИГ; -г -р
<PID>
chrt -r -p 1 6526 chrt -p 6526
pid 6526's current scheduling policy: SCHED_RR
pid 6526"s current scheduling priority: 1
Рисунок 10. Смена политики
admln*»ho»t15: /homc/admln
I Флйл Прлам Вид Поиси Терминал Помощь
top - 14:10:30 up 1 : 20 2 user S , load avot age* . 4 , 24 Л . 04 . 2 . ni
Tasks : 164 total. 9 running, 159 sleeping, 0 »topped. О zombie
%CPU(s): 53,1 us. 1 .2 sy . О . О ni, 45.7 id, O.O wa, О.О hi, О.О si O.O st
Mill Mom : 4023. 3 total 1508 ,7 free, 1463.О used 1951 , и buf f/cache
M1B Swap: 4922. 0 total 4922 .0 free. 0.0 used 31S0 . Э avail Mem
PID USER PR N Г VIRT RES •.HR XCPU Ш1 M T I MF * COMMAND
6526 admin -2 с 168 4 О R 92, О О.О 10 : OB.75 ЬигпРб
401П admin 20 С . "M 3961no 1264 76 5 5.3 7,9 2 4Н.6Я Isolate*
3763 admin 20 (. 3566244 54 7344 18 7660 S 3 . 3 1 0, 9 1 : 49.43 firefox
зооа root 20 1 385468 124152 74040 S 0,7 2.5 1 : 1 О . 70 X
Рисунок 11. Список процессов
Теперь, чтобы изменить политику на SCHED_BATCH используем следующую команду: скТ; -Ь -р <РГО>
chrt -b -p O 6526 chrt -p 6526
pid 6526's current scheduling policy: SCHED_BATCH
pid 6526"s current scheduling priority: O
Рисунок 12. Смена политики
AdmlnOho>t-15: /homr/iidmin
Файл Правкд Вид Поиск Терминал Помощи
top - 14 : 29 : 11 up 1 : 39 . 2 uxors. load •ivorago : 2.Ol . 3. oa. 3. 30
Tasks: 166 total. 2 running, 164 sleeping. О i i topped, О zombie
XCPU(i): 62.4 us. 3, 3 sy , О,О ni . 34.0 id. o.o wa. o.o hi. o.o si, O.O St
MlB Mem : 4923, 3 total. 1323. ■ free. 1 444 . 3 used, 1933 .2 buff/cache
MIB Swap: 4922, О total. 4922, 0 free, O.O used. 3204 .3 avail Mem
PID USER PR NI VIRT RES 5HH S %CPU %MEM TIME • COMMAND I
6326 admin 20 О 168 A О к 91 ,4 O.O 39:04.79 burnN
4018 admin 20 0 14.8g 418440 126476 S 13.0 8.3 3:21.13 Isolate*
3763 admin 20 0 3396424 493296 187308 S 9.3 9.8 2:16.72 f irefox
Э098 root 20 о 383980 124132 74040 S 3,7 2.3 1 : 17.70 X
7640 admin 20 0 4ИМ6 140B0 24120 S 2.3 0.7 О :OO.07 mate-no*
Рисунок 13. Список процессов
Для SCHED_IDLE пишем chrt -i -p <PID>
chrt -i -p O 6526 chrt -p 6526
pid 6526"s current scheduling policy: SCHED_IDLE
pid 6526's current scheduling priority: O
Рисунок 14. Смена политики
edmln0host-15: /home/Admin
14:33:28 up 1:43, 2 user
Tasks: 164 total, XCPU(s): 4»,5 US, MiB Mom : 4923, M1B Swap: 4922,
load average: 1,03. 2.15. 2,81
otal. 4 running, 160 sleeping, O stopped, O zombie
5 us, 1,4 sy, O.O ni, 49,1 Id, 0,0 wa , O.O hi, 0,0 Si. 0,0 St
4923,9 total, 1328,8 free. 1441.3 used, 1933,2 buff/cache
4922,O total, 4922,O free. O.O used. 3207,9 avail Mem
6326 admin 20
3098 root 20
3763 admin 20
401B admin 20
3628 admin 20
1 root 20
2 root 20
VIR SHR ЕЯ ХМЕМ : v, •
168 4 О H 92. О О 0 43 01 98 burnPft
383468 124132 74040 S 1 . 3 2 3 1 20 58 X
3393940 494944 187332 S 1 .3 9 8 2 24 40 f irefox
14 , 8g 416300 126476 s 0.7 a 3 3 31 27 Isolate*
786420 7 1 ООН 36300 s 0,3 1 4 О оз 93 mate-te*
99720 12092 8148 s O.O 0 2 0 Ol 54 systemd
0 О 0 s O.O 0 0 0 OO OO kthreadd
Рисунок 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
%CPU(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 ЬигпРб
3625 admin 20 0 168 4 0 R 49,5 0,0 3:03.29 ЬигпРб
3605 admin 20 0 168 4 0 R 49,2 0,0 3:20.11 ЬигпРб
3615 admin 20 0 168 4 0 R 49,2 0,0 3:08.18 ЬигпРб
2693 root 20 0 384376 118648 65172 S 1,0 2,4 1:40.47 X
3185 admin 20 0 816432 61648 50508 S 0,3 1.2 0:03.07 mate-pa+
Рисунок 16. Список процессов
Проверим какой планировщик установлен по умолчанию. Как и в прошлом эксперименте используется 8(П1Л)ОТП1К с приоритетом 0._
chrt -p 3605
pid 3605's current scheduling policy: SCHED_0THER pid 3605's current scheduling priority: 0
Рисунок 17. Текущая политика
Изменяем политику на SCHED_FIFO, используя команду chrt ^ -p <РШ> и смотрим список текущих процессов._
chrt -f -p 1 3605 chrt -p 3605
pid 3605's current scheduling policy: SCHED_FIFO pid 3605's current scheduling priority: 1
Рисунок 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
PID 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 ЬигпРб
3615 admin 20 0 168 4 0 R 34,2 0,0 3:22.55 ЬигпРб
3625 admin 20 0 168 4 0 R 30,9 0,0 3:17.33 ЬигпРб
2693 root 20 0 384376 118648 65172 S 1.3 2,4 1:41.06 X
Рисунок 19. Список процессов
Применяем политику SCHED_RR с помощью команды chrt -r -p <PID>.
chrt -r -p 1 3605 chrt -p 3605 pid 3605's current scheduling policy: SCHED_RR pid 3605's current scheduling priority: 1
Рисунок 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 %CPU(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
PID USER PR NI VIRT RES SHR S C-'L V E TIME* COMMAND
3605 admin •2 0 168 4 0 R 95,3 0,0 S 01.93 ЬигпРб
3593 a dun 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 11 о с 20 ПА 0 л 384376 OICJII 118648 С Л С AO 65172 спсло S С 5,3 1 ^ 2.4 1 л, :41.84 X . Л*) АС мчл
Рисунок 21. Список процессов
Для применения алгоритма SCHED_BATCH используем команду Л -Ь ^ ^ГО>
chrt -b -p 0 3605 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 MiB Mem : 4923,5 total, 3381,1 free, 527,3 used, 1015,0 buff/cache [MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4162,4 avail Mem
Рисунок 23. Список процессов Для SCHED IDLE пишем chrt -i -p <PID>
chrt -i -p 0 3605 chrt -p 3605
pid 3605's current scheduling policy: SCHED_IDLE pid 3605's current scheduling priority: 0
Рисунок 24. Смена политики
top - 00:40:18 up 45 min, 2 users, load average: 4,13, 3,77, 2,17 Tasks: 152 total, 5 running, 146 sleeping, 0 stopped, 1 zombie XCPU(s): 97,7 us, 2,3 sy, 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st MiB Mem : 4923,5 total, 3380,7 free, 527,8 used, 1015,0 buff/cache MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4161,9 avail Mem
PID USER PR NI VIRT RES
3593 admin 20 0 168 4
3615 admin 20 0 168 4
3625 admin 20 0 168 4
3605 admin 20 0 168 4
2693 root 20 0 384376 118648
SHR S %CPU
0 R 49,8
0 R 49,8
0 R 48,8
0 R 48,2
TIME+ COMMAND
5:20.49 burnP6 4:58.18 ЬигпРб 4:49.53 ЬигпРб 6:33.46 ЬигпРб
1:43.37 X
Рисунок 25. Список процессов
3) Анализ с семью запущенными потоками Проверяем список текущих процессов и узнаем политику, установленную по умолчанию - 8СНЕБ_ОТНЕК с приоритетом 0.
Tasks: 158 total, 8 running, 149 sleeping, 0 stopped, 1 zombie
%CPU(s): 97,7 us, 2, 3 sy 0,0 ni, 0,0 id, 0,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
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3615 admin 20 0 168 4 OR 28,9 0,0 6:06.55 ЬигпРб
3625 admin 20 0 168 4 OR 28,6 0,0 5:57.36 ЬигпРб
3690 admin 20 0 168 4 OR 28,6 0,0 0:08.80 ЬигпРб
3700 admin 20 0 168 4 OR 28,6 0,0 0:05.00 ЬигпРб
3593 admin 20 0 168 4 OR 28,2 0,0 6:28.56 ЬигпРб
3605 admin 20 0 168 4 OR 27,6 0,0 7:41.06 ЬигпРб
3678 admin 20 0 168 4 OR 27,2 0,0 0:13.17 ЬигпРб
2693 root 20 0 393940 128416 65180 S 1.3 2,5 1:47.20 X
Рисунок 26. Список процессов
chrt -p 3605
pid 3605"s current scheduling policy: SCHED_OTHER pid 3605's current scheduling priority: 0
Рисунок 27. Текущая политика
Изменяем используемую политику на SCHED_FIFO с использованием команды из прошлого пункта при работе с этой политикой. Проверяем список запущенных процессов.
chrt -f -p 1 3605 chrt -p 3605
)id 3605's current scheduling policy: SCHED_FIF0 )id 3605's current scheduling priority: 1
Рисунок 28. Смена политики
Tasks: 1S8 total, 8 running, 149 sleeping, 0 stopped, 1 zombie %CPU(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 UiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4138,4 avail Men
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME* COMMAND
3605 adnin -2 0 168 0 R 95,0 0,0 9:00.43 ЬигпРб
3678 adnin 20 0 168 0 R 18,0 0,0 0:41.47 ЬигпРб
3690 adain 20 0 168 0 R 17,7 0,0 0:36.85 ЬигпРб
3625 admin 20 0 168 0 R 17,3 0,0 6:25.51 ЬигпРб
3700 adnin 20 0 168 0 R 17,0 0,0 0:33.23 ЬигпРб
3593 adnin 20 0 168 0 R 16,7 0,0 6:56.63 ЬигпРб
3615 adnin 20 0 168 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 -г -p <PID>
ehrt -г -р 1 3605 chrt -р 3605 pid 3605's current scheduling policy: SCHED_RR pid 3605's current scheduling priority: 1
Рисунок 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
XCPU(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,5 used, 1015,3 buff/cache
MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4138,2 avail Mem
PID USER PR NI VIRT RES SHR S »CPU %MEM TIME* COMMAND
3605 adnin -2 0 168 4 0 R 95,0 0,0 10:23.28 ЬигпРб
3625 adain 20 0 168 4 0 R 19,6 0,0 6:40.20 ЬигпРб
3593 adnin 20 0 168 4 0 R 17,6 0,0 7:11.18 ЬигпРб
3615 adnin 20 0 168 4 0 R 17,3 0,0 6:49.15 ЬигпРб
3690 adnin 20 0 168 4 0 R 17,3 0,0 0:51.78 ЬигпРб
3700 adnin 20 0 168 4 0 R 16,9 0,0 0:48.14 ЬигпРб
3678 actain 20 0 168 4 0 R 15,0 0,0 0:56.27 ЬигпРб
3397 adnin 20 0 856900 73556 54076 S 0,7 1,5 0:05.12 mate-te*
Рисунок 31. Список процессов
Работа с политикой на SCHED_BATCH осуществляется с использованием следующей команды: ehrt -b -р <PID>_
chrt -b -p 0 3605 chrt -p 3605
pid 3605's current scheduling policy: SCHED_BATCH pid 3605's current scheduling priority: 0
Рисунок 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 %CPU(s): 96,8 us, 3,2 sy, 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st MiB Mem : 4923,5 total, 3356,7 free, 551,4 used, 1015,3 buff/cache MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4138,2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME* COMMAND
3678 admin 20 0 168 0 R 27,9 0,0 1:09.51 burnP6
3593 admin 20 0 168 0 R 26,9 0,0 7:24.24 ЬигпРб
3625 admin 20 0 168 0 R 26,9 0,0 6:53.43 ЬигпРб
3615 admin 20 0 168 0 R 26,2 0,0 7:02.25 ЬигпРб
3605 admin 20 0 168 0 R 25,9 0,0 11:08.47 ЬигпРб
3690 admin 20 0 168 0 R 24,9 0,0 1:04.91 ЬигпРб
3700 admin 20 0 168 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 <PID>
chrt -i -p 0 3605 chrt -p 3605
pid 3605's current scheduling policy: SCHED_IDLE pid 3605's current scheduling priority: 0
Рисунок 34. Смена политики
Tasks: 158 total, 8 running, 149 sleeping, 0 stopped, 1 zombie
XCPU(s): 97,5 us, 2,5 sy. 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi. 0,0 si, 0,0 st
MiB Mem : 4923,5 total, 3356,5 free, 551,7 used, 1015,3 buff/cache
MiB Swap: 4922,0 total, 4922,0 free, 0,0 used. 4137,9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME* COMMAND
3605 admin 20 0 168 4 OR 30,3 0,0 11:24.35 ЬигпРб
3690 admin 20 0 168 4 OR 28,0 0,0 1:21.04 ЬигпРб
3593 admin 20 0 168 4 OR 27,7 0,0 7:40.38 ЬигпРб
3625 admin 20 0 168 4 OR 27,7 0,0 7:09.54 ЬигпРб
3615 admin 20 0 168 4 OR 26,7 0,0 7:18.33 ЬигпРб
3678 admin 20 0 168 4 OR 26,7 0,0 1:25.57 ЬигпРб
3700 admin 20 0 168 4 OR 26,7 0,0 1:17.61 ЬигпРб
2693 root 20 0 393940 128416 65180 S 3,7 2,5 1:51.77 X
Рисунок 35. Список процессов
Составим таблицу с различающимися данными.
Название политики 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,8 2 49,6 0 0 1310,1 546,7 550,8
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_BATCH 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 предназначен для процессов, которые выполняются только при отсутствии другой работы.
Использованные источники:
1. ALT Linux - sisyphus - cpuburn-1.4a-alt1 - CPU testing utilities - [Электронный ресурс] - URL: https://packages.altlinux.org/en/sisyphus/srpms/cpuburn/ (дата обращения: 10.12.24).
2. 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).
3. Operating Systems: Three Easy Pieces. Part 2: Абстракция: Процесс (перевод) / Хабр - [Электронный ресурс] - URL: https://habr.com/ru/articles/446866/ (дата обращения: 11.12.24).
4. States of a Process in Operating Systems - GeeksforGeeks - [Электронный ресурс] - URL: https://www.geeksforgeeks.org/states-of-a-process-in-operating-systems/ (дата обращения: 11.12.24).
5. Как управлять процессами в Linux - [Электронный ресурс] - URL: https://1cloud.ru/help/security/prosmotr-i-upravlenie-protsessami-linux-s-pomoshhyu-top (дата обращения: 11.12.24).
6. Кручинин А.Ю. К 84 Операционные системы [Электронный ресурс] : учебное пособие / А.Ю. Кручинин, Р.Р. Галимов., А.А. Рычкова - Оренбург: ОГУ, 2019. - 152 с. (дата обращения: 09.12.24).
7. ОС: 5.1 Лекция- Планирование процессов. | Сайт дистанционного образования - MOODLE КНИТУ (КХТИ)- [Электронный ресурс] - URL: https://moodle.kstu.ru/mod/page/view.php?id=55 (дата обращения: 09.12.24).
8. Сёмкин П.С., Сёмкин А.П. Методические материалы к лабораторным работам по дисциплине «Операционные системы» «ОС Alt Linux. Мониторинг и управление процессами» (дата обращения: 11.12.24).
9. Управление процессами - [Электронный ресурс] - URL: https://dit.isuct.ru/IVT/BOOKS/OPERATING SYSTEMS/OPER12/GLAVA 6.H TM (дата обращения: 11.12.24).
10. _Уймин, А. Г. Моделирование телекоммуникационной сети средствами сетевых инструментов Linux: инструменты создания цифровых двойников / А. Г. Уймин, О. Р. Никитин // I-methods. - 2023. - Т. 15, № 2. - EDN NFJDVH. (дата обращения: 09.12.24).