Как да използвате командата vmstat в Linux

Вашият компютър с Linux или macOS използва виртуална памет. Открийте как се отразява на използването на физическата памет, процесора и ресурсите на твърдия диск от вашата система.

Какво е виртуална памет?

Вашият компютър е снабден с ограничено количество физическа памет, наречена оперативна памет (RAM). Тази RAM памет трябва да се управлява от ядрото и да се споделя между операционната система и всички приложения, които се изпълняват. Ако тези комбинирани изисквания изискват повече памет, отколкото е физически инсталирана във вашия компютър, какво може да направи ядрото?

Операционни системи, подобни на Linux и Unix, като macOS, могат да използват място на вашия твърд диск, за да им помогнат да управляват нуждите от памет. Запазена област от пространство на твърдия диск, наречена „swap space“, може да се използва, сякаш е разширение на RAM. Това е виртуална памет.

Ядрото на Linux може да запише съдържанието на блок памет в пространство за размяна и да освободи този регион на RAM за използване от друг процес. Разменената – наричана още „извън страница“ – памет може да бъде извлечена от пространството за размяна и възстановена в RAM, когато е необходимо.

Разбира се, скоростта на достъп до паметта за извеждане на страници е по-бавна от тази на паметта, съхранявана в RAM. И това не е единственият компромис. Докато виртуалната памет предоставя начин за Linux да управлява своите нужди от памет, използването на виртуална памет натоварва допълнително другаде на компютъра.

Вашият твърд диск трябва да извършва повече четене и запис. Ядрото — и следователно процесорът — трябва да върши повече работа, тъй като разменя паметта, заменя паметта и поддържа всички плочи да се въртят, за да задоволят нуждите от памет на различните процеси.

Linux ви предоставя начин да наблюдавате цялата тази дейност под формата на командата vmstat, която отчита статистика за виртуална памет.

Командата vmstat

Ако въведете vmstat като команда без параметри, тя ще ви покаже набор от стойности. Тези стойности са средните стойности за всяка от статистическите данни от последното рестартиране на компютъра. Тези цифри не са моментна снимка на стойностите „в момента“.

vmstat

Показва се кратка таблица със стойности.

Има колони, озаглавени Procs, Memory, Swap, IO, System и CPU. Последната колона (най-дясната колона) съдържа данните, свързани с процесора.

Ето списък на елементите от данни във всяка колона.

Proc

r: Броят на изпълняваните процеси. Това са процеси, които са стартирани и или се изпълняват, или чакат следващия си разрязан във времето изблик от цикли на процесора.
b: Броят на процесите в непрекъсваем сън. Процесът не е в спящ режим, той извършва блокиращо системно извикване и не може да бъде прекъснат, докато не завърши текущото си действие. Обикновено процесът е драйвер на устройство, който чака някакъв ресурс да се освободи. Всички прекъсвания на опашката за този процес се обработват, когато процесът възобнови обичайната си дейност.

  Как да инсталирате Ardor Audio Editor на Linux

Памет

swpd: количеството използвана виртуална памет. С други думи, колко памет е разменена.,
безплатно: количеството свободна (в момента неизползвана) памет.
buff: количеството памет, използвана като буфери.
кеш: количеството памет, използвана като кеш.

Размяна

si: Количество виртуална памет, разменена от пространството за размяна.
така че: Количеството виртуална памет, разменена за размяна на пространство.

IO

bi: Блокове, получени от блоково устройство. Броят на блоковете данни, използвани за размяна на виртуална памет обратно в RAM.
bo: Блокове, изпратени до блоково устройство. Броят на блоковете данни, използвани за размяна на виртуална памет от RAM и в пространство за размяна.

Система

in: Броят на прекъсванията в секунда, включително часовника.
cs: Броят превключвания на контекста в секунда. Превключване на контекста е, когато ядрото превключва от обработка в системен режим към обработка в потребителски режим.

процесор

Всички тези стойности са проценти от общото време на процесора.

us: Време, прекарано в изпълнение на код, различен от ядрото. Тоест колко време е изразходвано за обработка на потребителско време и за обработка на приятно време.
sy: Време, прекарано в изпълнение на кода на ядрото.
id: Време, прекарано на празен ход.
wa: Време, прекарано в чакане на вход или изход.
st: Време, откраднато от виртуална машина. Това е времето, в което една виртуална машина трябва да изчака хипервизорът да приключи с обслужването на други виртуални машини, преди да може да се върне и да обслужва тази виртуална машина.

Използване на времеви интервал

Можем да накараме vmstat да предоставя редовни актуализации на тези цифри, като използваме стойност за забавяне. Стойността на закъснението се предоставя в секунди. За да актуализираме статистиката на всеки пет секунди, ще използваме следната команда:

vmstat 5

На всеки пет секунди vmstat ще добавя още един ред данни към таблицата. Ще трябва да натиснете Ctrl+C, за да спрете това.

Използване на стойност на броене

Използването на твърде ниска стойност за забавяне ще доведе до допълнително натоварване на вашата система. Ако трябва да имате бързи актуализации, за да се опитате да диагностицирате проблем, се препоръчва да използвате стойност на броене, както и стойност на забавяне.

Стойността на броене казва на vmstat колко актуализации да изпълни, преди да излезе и ви връща към командния ред. Ако не предоставите стойност за броене, vmstat ще работи, докато не бъде спрян от Ctrl+C.

За да накарате vmstat да предоставя актуализация на всеки пет секунди, но само за четири актуализации, използвайте следната команда:

vmstat 5 4

След четири актуализации vmstat спира по собствено желание.

  4 приложения за редактиране на видео на Windows, които работят на Linux

Смяна на единиците

Можете да изберете паметта и статистиката за размяната да се показват в килобайти или мегабайти, като използвате опцията -S (единичен знак). Това трябва да бъде последвано от едно от k , K , m или M. Те представляват:

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

За да актуализирате статистиката на всеки 10 секунди, като статистиката за паметта и размяната се показва в мегабайти, използвайте следната команда:

vmstat 10 -S M

Статистиката за паметта и смяната вече се показва в мегабайти. Имайте предвид, че опцията -S не засяга статистиката на IO блока. Те винаги се показват на блокове.

Активна и неактивна памет

Ако използвате опцията -a (активна), колоните buff и cache памет се заменят с колоните „inact“ и „active“. Както биха предположили, те показват количеството неактивна и активна памет.

За да видите тези две колони вместо колоните buff и cache, включете опцията -a, както е показано:

vmstat 5 -a -S M

Неактивните и активните колони се влияят от опцията -S (единичен знак).

Вилици

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

С други думи, това показва броя на задачите, които са стартирани (и за по-голямата част от тях са затворени отново), след като системата е стартирана. Всеки процес, стартиран от командния ред, би увеличил тази цифра. Всеки път, когато дадена задача или процес създава или клонира нова задача, тази цифра ще се увеличава.

vmstat -f

Дисплеят на вилиците не се актуализира.

Показване на Slabinfo

Ядрото има свое собствено управление на паметта, за което да се грижи, както и управлението на паметта за операционната система и всички приложения.

Както можете да си представите, ядрото разпределя и освобождава памет отново и отново за многото различни типове обекти с данни, които трябва да обработва. За да направи това възможно най-ефективно, той използва система, наречена плочи. Това е форма на кеширане.

Паметта, разпределена, използвана и вече не е необходима за конкретен тип обект с данни на ядрото, може да се използва повторно за друг обект с данни от същия тип, без паметта да бъде освободена и преразпределена. Мислете за плочите като предварително разпределени, направени по мярка, сегменти от RAM за собствените нужди на ядрото.

За да видите статистиката за плочите, използвайте опцията -m (плочи). Ще трябва да използвате sudo и ще бъдете подканени да въведете паролата си. Тъй като изходът може да бъде доста дълъг, ние го предаваме по-малко.

sudo vmstat -m | less

Изходът има пет колони. Това са:

Кеш: Име на кеша.
num: Броят на активните в момента обекти в този кеш.
общо: Общият брой налични обекти в този кеш.
размер: Размерът на всеки обект в кеша.
страници: Общият брой страници от паметта, които имат (поне) един обект, който в момента е свързан с този кеш.

Натиснете q, за да оставите по-малко.

Показване на броячи на събития и статистика на паметта

За да покажете страница с броячи на събития и статистика на паметта, използвайте опцията -s (статистика). Имайте предвид, че „s“ е с малка буква.

vmstat -s

Въпреки че отчитаните статистически данни са до голяма степен същите като информацията, която съставя изхода на vmstat по подразбиране, някои от тях са разделени по-подробно.

  6 Linux USB инструменти за поправка на вашия компютър

Например, изходът по подразбиране комбинира както хубавото, така и неподходящото потребителско време на процесора в колоната „us“. Дисплеят -s (статистика) изброява тези статистики отделно.

Показване на дискова статистика

Можете да получите подобен списък със статистически данни за диска, като използвате опцията -d (диск).

vmstat -d | less

За всеки диск се показват три колони, това са Reads, Writes и IO.

IO е най-дясната колона. Имайте предвид, че сек колоната в IO се измерва в секунди, но базираната на времето статистика в колоните за четене и запис се измерва в милисекунди.

Ето какво означават колоните:

Чете

общо: Общият брой четения на диска.
обединени: Общият брой групирани четения.
сектори: Общият брой на секторите, в които са били прочетени.
ms: Общият брой на времето в милисекунди, които са били използвани за четене на данни от диска.

пише

общо: Общият брой записи на диск.
обединени: Общият брой групирани записи.
сектори: Общият брой на записаните сектори.
ms = Общият брой на времето в милисекунди, които са били използвани за запис на данни на диска.

IO

cur: Брой текущи четения или записи на диск.
sec: Времето, прекарано в секунди за всяко текущо четене или запис.

Показване на обобщена дискова статистика

За да видите бърз преглед на обобщена статистика за вашата дискова активност, използвайте опцията -D (сума на диска). Обърнете внимание на главните букви „D“.

vmstat -D

Броят на дисковете може да изглежда необичайно висок. Компютърът, използван за изследване на тази статия, работи с Ubuntu. С Ubuntu всеки път, когато инсталирате приложение от Snap, се създава псевдо-файлова система squashfs, която е прикачена към /dev/loop устройство.

Досадно е, че тези записи на устройства се отчитат като устройства с твърд диск от много от командите и помощните програми на Linux.

Показване на статистически данни за дяловете

За да видите статистически данни, свързани с конкретен дял, използвайте опцията -p (раздел) и предоставете идентификатора на дяла като параметър на командния ред.

Тук ще разгледаме дяла sda1. Цифрата 1 показва, че това е първият дял на устройството sda, което е основният твърд диск за този компютър.

vmstat -p sda1

Върнатата информация показва общия брой четения и записвания на диск към и от този дял, както и броя на секторите, включени в действията за четене и запис на диск.

Поглед под капака

Винаги е добре да знаете как да вдигнете капака и да видите какво се случва отдолу. Понякога ще се опитвате да решите проблема, понякога това ще бъде от интерес, защото искате да знаете как работи компютърът ви.

vmstat може да ви предостави много полезна информация. Сега знаете как да получите достъп до него и какво означава това. И предупреденото си е въоръжено — когато трябва да запретнете ръкави и да направите някаква диагностика, ще знаете, че имате vmstat на ваша страна.