Будь-який сервер, хоч би яким потужним він був, має обмежений обсяг ресурсів. Кожна програма, яка працює в активному або фоновому режимі, використовує певну кількість віртуальної та фізичної пам’яті, процесорного часу тощо. Іншими словами, створює певне навантаження на сервер. Щоб переглянути, наскільки система завантажена в даний момент часу, використовують консольну команду top.
Команда top в Linux системах дозволяє вивести у вигляді таблиці перелік запущених процесів та оцінити, який обсяг ресурсів вони споживають, тобто яке навантаження створюють на сервер і дискову підсистему. Така інформація допомагає надалі оптимізувати роботу системи.
Запуск команди top та розшифровка таблиці
Підключіться до сервера SSH і введіть в консолі top — Enter і ви побачите таблицю, в якій виведено список запущених процесів. Спочатку перелік складено в порядку зменшення навантаження на процесор.
Про те, як сортувати дані за критерієм, який вам потрібен, поговоримо далі. А зараз давайте розглянемо, як розшифрувати стовпці у таблиці та про що свідчать значення у кожному з них.
Перші два стовпчики — номер процесу (PID) та ім’я користувача, що його запустив (USER).
Наступні два стовпці показують, який пріоритет має процес в даний момент (PR) і пріоритет, присвоєний йому командою NICE (NI).
Інформація, що міститься в інших колонках, безпосередньо характеризує рівень споживання ресурсів. Розшифровуються вони так:
**VIRT — віртуальна пам’ять, яку використовує процес.
**RES — фізична пам’ять, зайнята цим процесом.
**SHR — загальний обсяг пам’яті, яку цей процес ділить з іншими.
**S — поточний статус процесу: R — running; S — sleeping, Z — zombie.
**%CPU — відсоток використовуваного часу центрального процесора.
**%MEM — відсоток ОЗП, що використовується процесом.
**TIME+ — тривалість роботи процесу з моменту запуску.
**COMMAND — назва команди (програми), яка ініціювала процес.
Розшифрування даних перед таблицею
Корисна інформація про використання ресурсів міститься не лише в самій таблиці, а й у п’яти рядках, які передують їй. Вони є свого роду резюме по всіх процесах.
Перший рядок (top) дає нам загальне уявлення про завантаження системи. Тут вказано:
** — поточний час;
**up — тривалість роботи системи з моменту запуску;
**user — поточна кількість користувачів системи;
**load average — середня завантаженість системи 1, 5 та 15 хвилин тому.
Вважається, що в нормі цей показник не повинен перевищувати один для одноядерних процесорів. Відповідно, значення load average, що дорівнює кількості ядер, є граничним.
Другий рядок даних дає інформацію про загальну кількість процесів у системі, а також про їх статус: виконувані (running), в очікуванні (sleeping), зупинені (stopped), zombie.
Далі йде інформація про стан процесора (%Cpu), ОЗП (Mem), SWAP.
Додавання стовпців та сортування таблиці top
Тепер ви знаєте, яка інформація зашифрована у кожному стовпці таблиці top. Як було зазначено на початку статті, базове сортування даних здійснюється за рівнем використання часу процесора, воно ж %CPU. Щоб виконати у top сортування по пам’яті (%MEM), достатньо ввести Shift+M у режимі роботи команди top. Якщо цікавить, який з процесів найдовше працює, натисніть Shift+T, і побачите цікаву інформацію в колонці TIME+. Можна відсортувати процеси за номером (PID), набравши на клавіатурі Shift+N.
Щоб повернути режим сортування за рівнем споживання ресурсів процесора, скористайтесь комбінацією Shift+P.
Не всі способи сортування можна задати за допомогою комбінацій клавіш. Наприклад, для визначення процесів, які найбільше споживають SWAP, використовуйте меню вибору полів, яке викликається комбінацією Shift+F.
За допомогою клавіш навігації знаходимо SWAP (або будь-який інший потрібний параметр), клавішею d закріплюємо його додавання до загальної таблиці команди top (як підтвердження вашого вибору поруч з’явиться символ *). Щоб задати сортування SWAP, тут же натискаємо s і виходимо з меню (ESC). Готово!
Переконатись, що сортування працює за заданою ознакою, можна натиснувши клавішу x. Колонка з відповідною ознакою буде підсвічена (виділена жирним шрифтом).
Тепер ви не тільки знаєте, як розшифрувати інформацію, що міститься в таблиці, але і вмієте додавати в неї необхідні параметри, працювати з фільтрами. Завдяки команді top ви легко знайдете процеси, які споживають найбільшу кількість ресурсів та/або працюють без потреби.
Тепер оптимізувати роботу сервера набагато простіше!