З якою метою необхідний пріоритет процесу?
Що вона робить? Пріоритет чого вона зняла з 0 до 10? Ман читав, але подружжя не зрозумів. UPD: Я правильно розумію, що чим вищий пріоритет, тим менше пам'яті споживає процес?
2 відповіді 2
Значення поступливості або люб'язності (nice, niceness) - це концепція пріоритету процесу в UNIX-подібних ОС. Воно визначає, наскільки цей конкретний процес люб'язний по відношенню до інших і готовий поступитися їм процесорний час тобто. воно протилежне поняттю пріоритет.
Чим більше пріоритет процесу, тим більше шансів, що цей процес отримає квант часу (а статистично говорячи швидше виконається повністю), коли одночасно кілька процесів конкурують за процесор, тобто. працюють одночасно. Це далеко не єдиний параметр, що впливає на роботу планувальника (наприклад, процеси root 'а мають більший пріоритет апріорі), але основний доступний користувачу безпосередньо.
Діапазон значень у сучасному Linux становить від -20 (найменша поступливість та найбільший пріоритет) до 19 (відповідно навпаки, найбільша поступливість та найменший пріоритет); причому зміни на 1 пункт приблизно відповідає зменшенню шансу зайняти ЦП в 1.25 разів (див. man 7 sched , розділ The nice value).
Зрозуміло, звичайний користувач може змінювати значення пріоритетів тільки своїх процесів, а для встановлення поступливості нижче певного рівня (значення $(( 40 - $(ulimit -e) )) , за умовчанням 0; задається в /etc/security/limits.conf ) процес повинен мати мандат CAP_SYS_NICE або права root.
З розподілом пам'яті все це не пов'язано.
приклад
Для прикладу, є два процеси, які виконують складні математичні розрахунки в однопроцесорній системі: foo і bar за умовчанням їх поступливість дорівнює нулю (ps -l):
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 R 1000 19431 24534 0 80 0 - 5066 - pts/5 00:10:13 ./foo 0 R 1000 19433 285 00:11:14 ./bar
Як можна бачити вони виконуються досить довго (значення споживання процесорного часу в TIME ). У цей момент ми вирішуємо, що результати bar там важливіший набагато сильніше, ніж foo і робимо:
І приблизно через 10 хвилин ситуація буде такою:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 R 1000 19431 24534 0 80 10 - 5066 - pts/5 00:10:55 ./foo 0 R 1000 19433 25 pts/5 00:20:03 ./bar
тобто. bar отримав у кілька разів більше часу ЦП; і відповідно має завершити розрахунки набагато швидше.
Управління процесами Linux: повний посібник
Поліпшіть продуктивність та безпеку системи, дізнавшись про керування процесами в Linux.
В операційних системах на основі Linux та Unix запущений екземпляр команди називається процесом. Ви можете ідентифікувати кожен процес за унікальним ідентифікатором процесу. Linux надає інструменти командного рядка для ефективного перерахування, управління та моніторингу цих процесів.
Ці інструменти можна використовувати для визначення пріоритетів кожного процесу або перевести їх у фоновий або передній план для ефективного управління системними ресурсами.
Цей посібник з управління процесами в Linux включає такі інструменти, як ps, kill, renice та інші команди, які допомагають системним адміністраторам управляти процесами і перераховувати їх.
Список процесів за допомогою команди ps
Найстаріша і найчастіше використовувана утиліта командного рядка для перегляду поточних запущених процесів у Linux ps. Незважаючи на те, що команда top - це ще один інтерактивний і орієнтований на екран спосіб управління системними процесами та складання списку, ps також відображає додаткову інформацію, таку як ресурси, що споживаються кожним процесом.
Через розраховане на багато користувачів середовище кожен процес в Linux пов'язаний з окремим обліковим записом користувача і групи. Отже, інформація про обліковий запис з подробицями процесу допомагає отримати доступ до системних ресурсів, які може використовувати процес.
Наприклад, процеси, що працюють з привілеями суперкористувача, можуть отримати доступ до більшої кількості системних ресурсів, ніж звичайний користувач, і в цьому ps допомагає системним адміністраторам.
Наступний висновок є прикладом списку процесів з іменами користувачів, що пройшли часом та відповідним споживанням пам'яті та ЦП:
Ви також можете звернути увагу до стовпець STAT, який показує стан запущеного процесу. R означає, що процес виконується в даний момент, а S - Це сплячий процес зі знаком плюс, що вказує на активні операції.
Ви можете перерахувати всі процеси поточного користувача таким чином:
Щоб переглянути процеси для всіх користувачів:
Управління процесами за допомогою системного монітора
Системний монітор забезпечує графічний спосіб відображення процесів та управління ними. Щоб запустити монітор, виберіть Програми > Системний монітор. Перейдіть на вкладку Процеси, щоб переглянути всі запущені процеси.
За промовчанням він відображає процеси в алфавітному порядку для поточного користувача.Ви можете повторно відсортувати список процесів, натиснувши заголовок будь-якого стовпця. Крім того, ви можете клацнути заголовки %CPU і Пам'ять, щоб переглянути процеси, що споживають більше обчислювальної потужності та пам'яті.
Системний монітор дозволяє вам керувати процесами різними способами, що означає, що ви можете зупиняти, знищувати, продовжувати, завершувати та змінювати пріоритет процесу просто клацнувши правою кнопкою миші ім'я процесу.
Це найкращий інструмент для користувачів Linux, які не знають, як працювати з утилітами командного рядка.
Робота з фоновими/передніми процесами
Приходить час, коли вам потрібно отримати доступ до системи Linux через мережу, використовуючи тільки командний рядок. Це обмежує ефективне керування кількома активними програмами. Але оболонка дозволяє вам керувати програмами, переключаючи їх у фоновий та передній план.
Як запустити фоновий процес
Щоб запустити програму, поки ви продовжуєте працювати в оболонці, запустіть команду, зупиніть її та помістіть у фоновий режим за допомогою Ctrl+Z. Щоб запустити програму безпосередньо у фоновому режимі, додайте амперсанд (&) в кінці команди, як показано нижче:
find /usr > /tmp/allusrfiles &
Запишіть номер завдання та ідентифікатор процесу. Майте на увазі, що ви не можете запускати команди, які вимагають введення терміналу у фоновому режимі.
Ви можете використати команду jobs для відображення всіх програм/команд, що працюють у фоновому режимі або тих, що ви зупинили (використовуючи Ctrl+Z).
Як відновити активні та фонові процеси
Щоб продовжити завдання, яке ви перевели у фоновий режим, використовуйте команду fgі вона виведе команду на передній план.
Так само, якщо ви зупинили виконання команди у фоновому режимі, ви можете знову запустити її у фоновому режимі за допомогою команди bg наступним чином:
Знищення процесів у Linux
Подібно до того, як графічний інструмент, такий як системний монітор, дозволяє вам завершувати, зупиняти і продовжувати процес, ви також можете використовувати інструменти командного рядка, такі як kill і killallдля надсилання сигналу до працюючого процесу.
Крім простого знищення процесу, команда kill також допомагає надсилати різні сигнали для керування поведінкою процесу.
Ви можете використовувати імена або номери для використання сигналу.
kill -signalnumber id>
kill - ідентифікатор назви сигналу>
Наприклад, наступні команди надсилають сигнал SIGKILL процесу з PID 1987:
kill
-9
1987
kill -SIGKILL 1987
Найчастіше використовувані сигнали процесу:
Option
Description
Kills the process immediately