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
Wyświetlana jest krótka tabela wartości.
Istnieją kolumny z nagłówkami Procs, Memory, Swap, IO, System i CPU. Ostatnia kolumna (najbardziej prawa kolumna) zawiera dane dotyczące procesora.
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
Co pięć sekund vmstat będzie dodawać kolejny wiersz danych do tabeli. Aby to zatrzymać, musisz nacisnąć Ctrl + C.
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
Po czterech aktualizacjach vmstat zatrzymuje się samoczynnie.
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
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.
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
Na nieaktywne i aktywne kolumny ma wpływ opcja -S (znak-jednostki).
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
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
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ą.
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
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.
Wyświetlanie statystyk dysku
Podobną listę statystyk dysku można uzyskać za pomocą opcji -d (dysk).
vmstat -d | less
Dla każdego dysku wyświetlane są trzy kolumny, są to odczyty, zapisy i operacje we / wy.
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.
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
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.
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
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.
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.