Jak korzystać z polecenia vmstat w systemie Linux

Twój komputer z systemem Linux lub macOS korzysta z pamięci wirtualnej. Dowiedz się, jak wpływa to na wykorzystanie przez system pamięci fizycznej, procesora i zasobów dysku twardego.

Co to jest pamięć wirtualna?

Komputer jest wyposażony w ograniczoną ilość pamięci fizycznej o nazwie pamięć o dostępie swobodnym (BARAN). Ta pamięć RAM musi być zarządzana przez jądro i współdzielona między systemem operacyjnym i wszelkimi uruchomionymi aplikacjami. Co może zrobić jądro, jeśli te połączone wymagania wymagają większej ilości pamięci niż fizycznie zainstalowana w komputerze?

Systemy operacyjne Linux i podobne do systemów Unix, takie jak macOS, mogą wykorzystywać miejsce na dysku twardym, aby pomóc im zarządzać zapotrzebowaniem na pamięć. Zarezerwowany obszar dysku twardego, zwany „przestrzenią wymiany”, może być używany tak, jakby był rozszerzeniem pamięci RAM. To jest pamięć wirtualna.

Jądro Linuksa może zapisać zawartość bloku pamięci w przestrzeni wymiany i zwolnić ten region pamięci RAM do wykorzystania przez inny proces. Wymieniona pamięć – nazywana również „stronicowaną” – pamięć może zostać odzyskana z przestrzeni wymiany i przywrócona do pamięci RAM, gdy jest to wymagane.

Oczywiście szybkość dostępu do pamięci stronicowanej jest mniejsza niż w przypadku pamięci przechowywanej w pamięci RAM. I to nie jedyny kompromis. Podczas gdy pamięć wirtualna zapewnia Linuksowi sposób na zarządzanie zapotrzebowaniem na pamięć, użycie pamięci wirtualnej powoduje zwiększone obciążenie w innych częściach komputera.

Twój dysk twardy musi wykonywać więcej odczytów i zapisów. Jądro – a tym samym procesor – musi wykonać więcej pracy, gdy wymienia pamięć, zamienia pamięć i utrzymuje wszystkie płyty w ruchu, aby zaspokoić potrzeby pamięci różnych procesów.

Linux umożliwia monitorowanie całej tej aktywności w postaci polecenia vmstat, którego dotyczy raport statystyki pamięci wirtualnej.

Polecenie vmstat

Jeśli wpiszesz vmstat jako polecenie bez parametrów, wyświetli się zestaw wartości. Te wartości są średnimi dla każdej statystyki od ostatniego ponownego uruchomienia komputera. Te liczby nie są migawką wartości „w tej chwili”.

vmstat

vmstat w oknie terminala

Wyświetlana jest krótka tabela wartości.

vmstat wyjście w oknie terminala

Istnieją kolumny z nagłówkami Procs, Memory, Swap, IO, System i CPU. Ostatnia kolumna (najbardziej prawa kolumna) zawiera dane dotyczące procesora.

vmstat wyświetla kolumny po prawej stronie w oknie terminala

Oto lista elementów danych w każdej kolumnie.

Proc

r: liczba uruchomionych procesów. Są to procesy, które zostały uruchomione i albo są uruchomione, albo czekają na kolejny, podzielony w czasie, seria cykli procesora.
b: liczba procesów w nieprzerywanym śnie. Proces nie śpi, wykonuje blokujące wywołanie systemowe i nie można go przerwać, dopóki nie zakończy bieżącej akcji. Zwykle procesem jest sterownik urządzenia czekający na zwolnienie niektórych zasobów. Wszelkie przerwania w kolejce dla tego procesu są obsługiwane, gdy proces wznawia swoją zwykłą aktywność.

Pamięć

swpd: ilość używanej pamięci wirtualnej. Innymi słowy, ile pamięci zostało wymienione.,
wolna: ilość bezczynnej (obecnie nieużywanej) pamięci.
buff: ilość pamięci używanej jako bufory.
cache: ilość pamięci używanej jako pamięć podręczna.

Zamiana

si: ilość pamięci wirtualnej zamienionej z przestrzeni wymiany.
tak: Ilość pamięci wirtualnej zamienionej w celu wymiany miejsca.

IO

bi: bloki odebrane z urządzenia blokowego. Liczba bloków danych używanych do zamiany pamięci wirtualnej z powrotem do pamięci RAM.
bo: Bloki wysłane do urządzenia blokowego. Liczba bloków danych używanych do wymiany pamięci wirtualnej z pamięci RAM i do przestrzeni wymiany.

System

in: liczba przerwań na sekundę, łącznie z zegarem.
cs: liczba przełączników kontekstu na sekundę. Przełącznik kontekstu występuje, gdy jądro przełącza się z przetwarzania w trybie systemowym na przetwarzanie w trybie użytkownika.

procesor

Te wartości są procentami całkowitego czasu procesora.

us: Czas spędzony na wykonywaniu kodu innego niż jądro. To znaczy, ile czasu spędza użytkownik na przetwarzaniu czasu i na przyjemnym przetwarzaniu czasu.
sy: czas spędzony na uruchamianiu kodu jądra.
id: czas bezczynności.
wa: Czas spędzony na oczekiwaniu na wejście lub wyjście.
st: Czas skradziony z maszyny wirtualnej. Jest to czas, w którym maszyna wirtualna musi czekać, aż hiperwizor zakończy obsługę innych maszyn wirtualnych, zanim będzie mógł wrócić i zająć się tą maszyną wirtualną.

Korzystanie z przedziału czasu

Możemy poprosić vmstat o regularne aktualizacje tych danych przy użyciu wartości opóźnienia. Wartość opóźnienia podawana jest w sekundach. Aby statystyki były aktualizowane co pięć sekund, użylibyśmy następującego polecenia:

vmstat 5

vmstat 5 w oknie terminala

Co pięć sekund vmstat będzie dodawać kolejny wiersz danych do tabeli. Aby to zatrzymać, musisz nacisnąć Ctrl + C.

wyjście z vmstat 5 w oknie terminala

Korzystanie z wartości licznika

Użycie zbyt niskiej wartości opóźnienia spowoduje dodatkowe obciążenie systemu. Jeśli potrzebujesz szybkich aktualizacji, aby spróbować zdiagnozować problem, zaleca się użycie wartości licznika, a także wartości opóźnienia.

Wartość zliczania informuje program vmstat, ile aktualizacji należy wykonać przed zamknięciem i powoduje powrót do wiersza polecenia. Jeśli nie podasz wartości licznika, vmstat będzie działał, dopóki nie zostanie zatrzymany przez Ctrl + C.

Aby narzędzie vmstat zapewniało aktualizację co pięć sekund – ale tylko w przypadku czterech aktualizacji – użyj następującego polecenia:

vmstat 5 4

vmstat 5 4 w oknie terminala

Po czterech aktualizacjach vmstat zatrzymuje się samoczynnie.

wyjście z vmstat 5 4 w oknie terminala

Zmiana jednostek

Możesz wybrać wyświetlanie statystyk pamięci i wymiany w kilobajtach lub megabajtach za pomocą opcji -S (znak-jednostka). Po tym musi nastąpić jedno z k, K, m lub M. Te reprezentują:

k: 1000 bajtów
K: 1024 bajty
m: 1000000 bajtów
M: 1048576 bajtów

Aby statystyki były aktualizowane co 10 sekund, a statystyki pamięci i wymiany były wyświetlane w megabajtach, użyj następującego polecenia:

vmstat 10 -S M

vmstat 10 -SM w oknie terminala

Statystyki pamięci i wymiany są teraz wyświetlane w megabajtach. Należy zauważyć, że opcja -S nie wpływa na statystyki bloków we / wy. Są one zawsze wyświetlane w blokach.

wyjście z vmstat 10 -SM w oknie terminala

Pamięć aktywna i nieaktywna

Jeśli użyjesz opcji -a (active), kolumny buff i cache memory zostaną zastąpione kolumnami „inact” i „active”. Jak by sugerowali, pokazują one ilość nieaktywnej i aktywnej pamięci.

Aby zobaczyć te dwie kolumny zamiast kolumn buff i cache, włącz opcję -a, jak pokazano:

vmstat 5 -a -S M

vmstat 5 -a -SM w oknie terminala

Na nieaktywne i aktywne kolumny ma wpływ opcja -S (znak-jednostki).

wyjście z vmstat 5 -a -SM w oknie terminala

Widły

Przełącznik -f wyświetla liczbę rozwidleń, które wydarzyły się od czasu uruchomienia komputera.

Innymi słowy, pokazuje liczbę zadań, które zostały uruchomione (i dla większości z nich ponownie zamknięte) od momentu uruchomienia systemu. Każdy proces uruchamiany z wiersza poleceń zwiększyłby tę liczbę. Za każdym razem, gdy zadanie lub proces odradza się lub klonuje nowe zadanie, liczba ta będzie wzrastać.

vmstat -f

vmstat -f w oknie terminala

Wyświetlacz wideł nie jest aktualizowany.

Wyświetlanie Slabinfo

Jądro ma własne zarządzanie pamięcią, o które należy się martwić, jak również zarządzanie pamięcią dla systemu operacyjnego i wszystkich aplikacji.

Jak można sobie wyobrazić, jądro nieustannie alokuje i zwalnia pamięć dla wielu różnych typów obiektów danych, które musi obsługiwać. Aby było to jak najbardziej wydajne, wykorzystuje system zwany płytami. To jest forma buforowania.

Pamięć przydzielona, ​​używana i nie jest już wymagana dla określonego typu obiektu danych jądra może być ponownie wykorzystana dla innego obiektu danych tego samego typu bez zwalniania i ponownego przydzielania pamięci. Pomyśl o płytach jako wstępnie przydzielonych, wykonanych na miarę segmentach pamięci RAM na własne potrzeby jądra.

Aby zobaczyć statystyki dla płyt, użyj opcji -m (płyty). Będziesz musiał użyć sudo i zostaniesz poproszony o podanie hasła. Ponieważ dane wyjściowe mogą być dość długie, przepuszczamy je przez mniej.

sudo vmstat -m | less

sudo vmstat -m |  mniej w oknie terminala

Dane wyjściowe mają pięć kolumn. To są:

Pamięć podręczna: nazwa pamięci podręcznej.
num: liczba aktualnie aktywnych obiektów w tej pamięci podręcznej.
total: całkowita liczba dostępnych obiektów w tej pamięci podręcznej.
rozmiar: rozmiar każdego obiektu w pamięci podręcznej.
strony: całkowita liczba stron pamięci, które mają (co najmniej) jeden obiekt aktualnie powiązany z tą pamięcią podręczną.

wyjście z sudo vmstat -m |  mniej w oknie terminala

Naciśnij q, aby zostawić mniej.

Wyświetlanie liczników zdarzeń i statystyk pamięci

Aby wyświetlić stronę liczników zdarzeń i statystyk pamięci, użyj opcji -s (stats). Zauważ, że to małe litery „s”.

vmstat -s

vmstat -s w oknie terminala

Chociaż raportowane statystyki są w dużej mierze takie same, jak informacje, które składają się na domyślne dane wyjściowe narzędzia vmstat, niektóre z nich zostały bardziej szczegółowo podzielone.

Na przykład, domyślne dane wyjściowe łączą w kolumnie „us” zarówno ładny, jak i niegrzeczny czas procesora użytkownika. Opcja -s (statystyki) wyświetla te statystyki oddzielnie.

wyjście z vmstat -s w oknie terminala

Wyświetlanie statystyk dysku

Podobną listę statystyk dysku można uzyskać za pomocą opcji -d (dysk).

vmstat -d | less

vmstat -d |  mniej w oknie terminala

Dla każdego dysku wyświetlane są trzy kolumny, są to odczyty, zapisy i operacje we / wy.

wyjście z vmstat -d |  mniej w oknie terminala

IO to skrajna prawa kolumna. Zauważ, że kolumna sec w IO jest mierzona w sekundach, ale statystyki oparte na czasie w kolumnach odczytu i zapisu są mierzone w milisekundach.

wyjście vmstat -d |  mniej w oknie terminala

Oto, co oznaczają kolumny:

Czyta

total: całkowita liczba odczytów dysku.
scalone: ​​łączna liczba zgrupowanych odczytów.
sektory: całkowita liczba sektorów, które zostały wczytane.
ms: Całkowita liczba czasu w milisekundach, które były używane do odczytu danych z dysku.

pisze

total: całkowita liczba zapisów na dysku.
scalone: ​​całkowita liczba zgrupowanych zapisów.
sektory: całkowita liczba zapisanych sektorów.
ms = Całkowita liczba czasu w milisekundach, które były używane podczas zapisywania danych na dysku.

IO

cur: Liczba bieżących odczytów lub zapisów na dysku.
s: czas w sekundach poświęcony na odczyty lub zapisy w toku.

Wyświetlanie podsumowujących statystyk dysku

Aby wyświetlić szybkie podsumowanie statystyk dotyczących aktywności dysku, użyj opcji -D (suma dysku). Zwróć uwagę na wielkie litery „D.”

vmstat -D

vmstat -D w oknie terminala

Liczba dysków może wyglądać na nienormalnie wysoką. Komputer użyty do zbadania tego artykułu działa pod kontrolą Ubuntu. W Ubuntu, za każdym razem, gdy instalujesz aplikację ze Snap, tworzony jest pseudosystem plików squashfs, który jest dołączany do urządzenia / dev / loop.

Irytujące jest to, że te wpisy urządzeń są liczone jako urządzenia dysku twardego przez wiele poleceń i narzędzi systemu Linux.

wyjście z vmstat -D w oknie terminala

Wyświetlanie statystyk partycji

Aby wyświetlić statystyki związane z określoną partycją, użyj opcji -p (partycja) i podaj identyfikator partycji jako parametr wiersza polecenia.

Tutaj przyjrzymy się partycji sda1. Cyfra jeden wskazuje, że jest to pierwsza partycja na urządzeniu sda, który jest głównym dyskiem twardym tego komputera.

vmstat -p sda1

vmstat -p w oknie terminala

Zwrócone informacje przedstawiają całkowitą liczbę odczytów i zapisów na dysku do iz tej partycji oraz liczbę sektorów uwzględnionych w operacjach odczytu i zapisu na dysku.

wyjście z vmstat -p sda1 w oknie terminala

Rzut oka pod maskę

Zawsze dobrze jest wiedzieć, jak podnieść maskę i zobaczyć, co się pod nią dzieje. Czasami będziesz próbował rozwiązać problem, a czasami będzie to poza zainteresowaniem, ponieważ chcesz wiedzieć, jak działa Twój komputer.

vmstat może dostarczyć mnóstwo przydatnych informacji. Teraz wiesz, jak uzyskać do niego dostęp i co to oznacza. Ostrzeżony jest uzbrojony – kiedy musisz zakasać rękawy i przeprowadzić diagnostykę, będziesz wiedział, że masz vmstat po swojej stronie.