Як використовувати команду vmstat в Linux

| | 0 Comments| 8:51 AM
Categories:

Ваш комп’ютер Linux або macOS використовує віртуальну пам’ять. Дізнайтеся, як це впливає на використання фізичної пам’яті, процесора та ресурсів жорсткого диска вашою системою.

Що таке віртуальна пам’ять?

Ваш комп’ютер оснащений обмеженою кількістю фізичної пам’яті, що називається оперативна пам’ять (ОЗП). Цією оперативною пам’яттю потрібно керувати ядром і використовувати її спільно між операційною системою та будь-якими запущеними програмами. Якщо ці об’єднані вимоги вимагають більше пам’яті, ніж фізично встановлено на вашому комп’ютері, що може зробити ядро?

Операційні системи Linux і Unix, такі як macOS, можуть використовувати місце на вашому жорсткому диску, щоб допомогти їм керувати потребами в пам’яті. Зарезервована область жорсткого диска, яка називається «простір підкачки», може використовуватися так, ніби вона є розширенням оперативної пам’яті. Це віртуальна пам’ять.

Ядро Linux може записати вміст блоку пам’яті в простір підкачки і звільнити цю область RAM для використання іншим процесом. Обмінювану пам’ять, яку також називають «вивантаженою» пам’яттю, можна отримати з простору підкачки та відновити в RAM, коли це потрібно.

Звичайно, швидкість доступу до вигружаної пам’яті нижча, ніж швидкість доступу до пам’яті, що зберігається в ОЗП. І це не єдиний компроміс. У той час як віртуальна пам’ять дає можливість Linux керувати своїми вимогами до пам’яті, використання віртуальної пам’яті створює підвищені навантаження на інші частини комп’ютера.

Ваш жорсткий диск повинен виконувати більше читання та запису. Ядро — а, отже, і центральний процесор — повинні виконувати більше роботи, оскільки воно замінює пам’ять, замінює пам’ять і підтримує обертання всіх пластин, щоб задовольнити потреби в пам’яті різних процесів.

Linux надає вам спосіб відстежувати всю цю активність у формі команди vmstat, яка повідомляє про це статистика віртуальної пам’яті.

Команда vmstat

Якщо ви введете vmstat як команду без параметрів, вона покаже вам набір значень. Ці значення є середніми для кожної зі статистичних даних з моменту останнього перезавантаження комп’ютера. Ці цифри не є знімком значень «прямо зараз».

vmstat

Відобразиться коротка таблиця значень.

Існують стовпці із заголовками Procs, Memory, Swap, IO, System і CPU. Останній стовпець (самий правий стовпець) містить дані, що стосуються ЦП.

Ось список елементів даних у кожному стовпці.

Proc

r: кількість процесів, які можна виконувати. Це процеси, які були запущені і або запущені, або чекають на наступний розрізаний у часі сплеск циклів ЦП.
b: кількість процесів у безперервному сні. Процес не сплячий, він виконує блокуючий системний виклик, і його не можна перервати, доки він не завершить свою поточну дію. Зазвичай процес – це драйвер пристрою, який чекає, поки деякий ресурс звільниться. Будь-які переривання в черзі для цього процесу обробляються, коли процес відновлює свою звичайну діяльність.

  Як встановити та використовувати Gnome-Pie на Linux

Пам’ять

swpd: обсяг використовуваної віртуальної пам’яті. Іншими словами, скільки пам’яті було замінено.,
free: обсяг неактивної (на даний момент невикористаної) пам’яті.
buff: обсяг пам’яті, що використовується як буфери.
кеш: обсяг пам’яті, який використовується як кеш.

Поміняти місцями

si: Обсяг віртуальної пам’яті, переміщеної з місця підкачки.
так: Обсяг віртуальної пам’яті, що замінюється на місце підкачки.

IO

bi: Блоки, отримані від блочного пристрою. Кількість блоків даних, які використовуються для заміни віртуальної пам’яті назад в оперативну пам’ять.
bo: блоки, надіслані на блоковий пристрій. Кількість блоків даних, що використовуються для заміни віртуальної пам’яті з ОЗП на простір підкачки.

система

in: кількість переривань за секунду, включаючи годинник.
cs: кількість перемикань контексту за секунду. Перемикання контексту – це коли ядро ​​перемикається з обробки системного режиму на обробку в режимі користувача.

ЦП

Усі ці значення є у відсотках від загального часу процесора.

us: час, витрачений на виконання коду без ядра. Тобто скільки часу витрачається на обробку часу користувача та на обробку приємного часу.
sy: час, витрачений на виконання коду ядра.
id: час простою.
wa: час очікування введення або виведення.
st: Час, вкрадений з віртуальної машини. Це час, коли віртуальна машина повинна чекати, поки гіпервізор завершить обслуговування інших віртуальних машин, перш ніж вона зможе повернутися і відвідати цю віртуальну машину.

Використання інтервалу часу

Ми можемо змусити vmstat регулярно оновлювати ці показники, використовуючи значення затримки. Значення затримки вказується в секундах. Щоб статистика оновлювалася кожні п’ять секунд, ми використовували б таку команду:

vmstat 5

Кожні п’ять секунд vmstat додаватиме до таблиці ще один рядок даних. Вам потрібно буде натиснути Ctrl+C, щоб зупинити це.

Використання значення підрахунку

Використання занадто низького значення затримки створить додаткове навантаження на вашу систему. Якщо вам потрібно мати швидкі оновлення, щоб спробувати діагностувати проблему, рекомендується використовувати значення підрахунку, а також значення затримки.

Значення count повідомляє vmstat, скільки оновлень потрібно виконати, перш ніж він завершить роботу, і повертає вас до командного рядка. Якщо ви не вкажете значення count, vmstat працюватиме, доки його не зупинить Ctrl+C.

Щоб vmstat надавав оновлення кожні п’ять секунд, але лише для чотирьох оновлень, скористайтеся такою командою:

vmstat 5 4

Після чотирьох оновлень vmstat зупиняється за власним бажанням.

Зміна одиниць вимірювання

Ви можете вибрати, щоб статистика пам’яті та підкачки відображалася в кілобайтах або мегабайтах за допомогою параметра -S (символ одиниці). Після цього має бути один із k , K , m або M. Вони представляють:

  Як увімкнути підтримку Nvidia Optimus в Linux

k: 1000 байт
K: 1024 байта
m: 1000000 байт
M: 1048576 байт

Щоб статистика оновлювалася кожні 10 секунд зі статистикою пам’яті та підкачки, що відображалася в мегабайтах, скористайтеся такою командою:

vmstat 10 -S M

Статистика пам’яті та підкачки тепер відображається в мегабайтах. Зауважте, що параметр -S не впливає на статистику блоку IO. Вони завжди відображаються блоками.

Активна і неактивна пам’ять

Якщо ви використовуєте параметр -a (активний), стовпці buff і кеш-пам’яті замінюються стовпцями «inact» і «active». Як вони припускають, вони показують обсяг неактивної та активної пам’яті.

Щоб побачити ці два стовпці замість стовпців buff і кешу, включіть параметр -a, як показано:

vmstat 5 -a -S M

На неактивні та активні стовпці впливає параметр -S (одиниця-символ).

Вилки

Перемикач -f відображає кількість розвилок, які відбулися після завантаження комп’ютера.

Іншими словами, це показує кількість завдань, які були запущені (і, для більшості з них, знову закриті) після завантаження системи. Кожен процес, запущений з командного рядка, збільшує цю цифру. Щоразу, коли завдання чи процес породжує чи клонує нове завдання, ця цифра збільшується.

vmstat -f

Дисплей вилок не оновлюється.

Відображення Slabinfo

Ядро має власне управління пам’яттю, про яке потрібно турбуватися, а також управління пам’яттю для операційної системи та всіх програм.

Як ви можете собі уявити, ядро ​​знову і знову виділяє та звільняє пам’ять для багатьох різних типів об’єктів даних, які воно має обробляти. Щоб зробити це максимально ефективним, він використовує систему, яка називається плитами. Це форма кешування.

Пам’ять, виділена, використана та більше не потрібна для певного типу об’єкта даних ядра, може бути повторно використана для іншого об’єкта даних того ж типу без вивільнення та перерозподілу пам’яті. Подумайте про плити як про попередньо виділені сегменти оперативної пам’яті, виготовлені на замовлення, для власних потреб ядра.

Щоб переглянути статистику для плит, використовуйте параметр -m (плитки). Вам потрібно буде використовувати sudo, і вам буде запропоновано ввести пароль. Оскільки результат може бути досить тривалим, ми проводимо його менше.

sudo vmstat -m | less

Вихід має п’ять стовпців. Це:

Кеш: назва кешу.
num: кількість поточних активних об’єктів у цьому кеші.
total: загальна кількість доступних об’єктів у цьому кеші.
size: розмір кожного об’єкта в кеші.
сторінки: загальна кількість сторінок пам’яті, які мають (принаймні) один об’єкт, пов’язаний з цим кешем.

Натисніть q, щоб залишити менше.

Відображення лічильників подій і статистики пам’яті

Щоб відобразити сторінку лічильників подій і статистики пам’яті, використовуйте параметр -s (статистика). Зауважте, що «s» у нижньому регістрі.

vmstat -s

Незважаючи на те, що надані статистичні дані в основному збігаються з інформацією, яка складає вихідний вихід vmstat за замовчуванням, деякі з них розбиті більш детально.

  Як використовувати SUID, SGID і Sticky Bits в Linux

Наприклад, вихідні дані за замовчуванням об’єднують як приємний, так і не приємний час ЦП користувача в стовпці «us». Дисплей -s (статистика) перераховує ці статистичні дані окремо.

Відображення статистики диска

Ви можете отримати подібний список статистики диска, використовуючи параметр -d (диск).

vmstat -d | less

Для кожного диска відображаються три стовпці, це Reads, Writes і IO.

IO – крайній правий стовпець. Зауважте, що секундний стовпець в IO вимірюється в секундах, але статистичні дані на основі часу в стовпцях читання та запису вимірюються в мілісекундах.

Ось що означають стовпці:

Читає

total: загальна кількість читань диска.
об’єднані: загальна кількість згрупованих читань.
сектори: загальна кількість секторів, у яких було прочитано.
ms: загальна кількість часу в мілісекундах, які були використані для читання даних з диска.

пише

total: загальна кількість записів на диск.
об’єднані: загальна кількість згрупованих записів.
сектори: загальна кількість секторів, до яких записано.
ms = Загальна кількість часу в мілісекундах, що було використано для запису даних на диск.

IO

cur: кількість поточних читань або записів на диск.
сек: час, витрачений у секундах на будь-яке читання або запис, що виконується.

Відображення підсумкової статистики диска

Щоб побачити швидкий відображення підсумкової статистики активності вашого диска, використовуйте параметр -D (сума диска). Зверніть увагу на велику букву «D».

vmstat -D

Кількість дисків може виглядати аномально великою. Комп’ютер, який використовується для дослідження цієї статті, працює під керуванням Ubuntu. У Ubuntu щоразу, коли ви встановлюєте програму з Snap, створюється псевдо-файлова система squashfs, яка приєднується до пристрою /dev/loop.

На жаль, ці записи пристроїв враховуються як жорсткі диски багатьма командами та утилітами Linux.

Відображення статистики розділу

Щоб переглянути статистику, пов’язану з певним розділом, скористайтеся параметром -p (розділ) та введіть ідентифікатор розділу як параметр командного рядка.

Тут ми розглянемо розділ sda1. Цифра один вказує, що це перший розділ на пристрої sda, який є основним жорстким диском для цього комп’ютера.

vmstat -p sda1

Повернена інформація показує загальну кількість читань і записів на диск і з цього розділу, а також кількість секторів, включених у дії читання та запису на диск.

Заглянути під капот

Завжди добре знати, як підняти капот і подивитися, що відбувається під ним. Іноді ви будете намагатися вирішити проблему, іноді це не цікавить вас, тому що ви хочете знати, як працює ваш комп’ютер.

vmstat може надати вам масу корисної інформації. Тепер ви знаєте, як отримати до нього доступ і що це означає. І попереджений є озброєний — коли вам потрібно буде засукати рукави та провести діагностику, ви дізнаєтеся, що маєте vmstat на вашому боці.