Pamięć RAM, Random Access Memory, jest krytycznym elementem systemu Linux, który musi być ściśle monitorowany.
W niektórych przypadkach, może zabraknąć ci pamięci, pozostawiając twój serwer z bardzo wolnymi czasami odpowiedzi lub całkowicie bez odpowiedzi.
W konsekwencji, wiedza jak sprawdzić pamięć RAM w Linuksie jest kluczowa, ponieważ możesz być w stanie podjąć działania zapobiegawcze zamiast naprawczych.
Możesz również zwiększyć ilość pamięci swap, znanej również jako pamięć wirtualna, w celu zwiększenia wydajności twojego serwera.
W tym poradniku, zamierzamy wymienić wszystkie sposoby sprawdzania pamięci RAM w Linuksie.
Spis treści
Sprawdzenie pamięci RAM w Linuksie za pomocą free
Najpopularniejszym poleceniem w celu sprawdzenia pamięci RAM w Linuksie jest użycie polecenia „free”.
$ free total used free shared buff/cache availableMem: 4039588 3475216 137584 39596 426788 287580Swap: 0 0 0
Jak widzisz, dane wyjściowe są podzielone na dwie kategorie: pamięć (rzeczywista pamięć RAM) i swap (zwana również pamięcią wirtualną).
Używając free, otrzymujesz następujące informacje :
- całkowita : całkowita ilość pamięci, która jest obecnie zainstalowana w twoim systemie w kilobajtach;
- używana : ilość pamięci RAM obecnie używanej w twoim systemie w kilobajtach;
- wolna : ilość wolnej pamięci dostępnej w systemie w kilobajtach;
- shared : reprezentuje pamięć używaną przez tmpfs, który jest wirtualnym systemem plików, który wydaje się być zamontowany, ale należy do pamięci lotnej;
- buffers : pamięć używana przez bufory jądra;
- cache : ilość pamięci używanej przez page cache, gdzie dane mogą być przechowywane przed zapisaniem na dysk;
- available : pamięć dostępna w systemie w kilobajtach
Zauważ, że nawet jeśli dużo pamięci może być używane przez cache lub bufory, jądro może zwolnić to miejsce, jeśli system wymaga więcej pamięci dla procesów.
Tak jak polecenie lsblk, które odkryliśmy w naszym tutorialu dyskowym, polecenie „free” może być wyświetlane w przyjaznym dla człowieka formacie.
Aby sprawdzić aktualną ilość dostępnej pamięci RAM w przyjaznym dla człowieka formacie, użyj „free” z opcją „-h”.
total used free shared buff/cache availableMem: 3.9G 3.3G 127M 38M 400M 256MSwap: 0B 0B 0B
Jak widzisz, wyjście jest łatwiejsze do odczytania, ale jest zaokrąglone.
Podobnie, za pomocą polecenia free możesz mieć wyświetlone całkowite kolumny, aby sprawdzić całkowitą ilość pamięci RAM i swap dostępną w systemie.
Aby wyświetlić całkowite kolumny, użyj „free” z opcją „-t”.
$ free -t total used free shared buff/cache availableMem: 4039588 3499392 128828 39596 411368 263292Swap: 0 0 0Total: 4039588 3499392 128828
Zauważ, że te polecenia mogą być łączone w celu uzyskania przyjaznego wyjścia i wyświetlenia całkowitych kolumn.
$ free -th total used free shared buff/cache availableMem: 3.9G 3.3G 125M 38M 402M 257MSwap: 0B 0B 0BTotal: 3.9G 3.3G 125M
Sprawdź pamięć RAM używając vmstat
Innym świetnym sposobem na sprawdzenie aktualnego wykorzystania pamięci wirtualnej jest użycie polecenia „vmstat”.
Wyjście może być trochę trudne do odczytania, ale oto szczegóły wyświetlanych kolumn :
- r : liczba uruchomionych procesów w systemie;
- b : liczba procesów w nieprzerwanym uśpieniu;
- swpd : ilość pamięci RAM aktualnie używanej przez system;
- free : dostępna pamięć
- buff, cache : pamięć RAM używana przez bufory jądra i przez cache stron;
- inactive, active : ilość nieaktywnej i aktywnej pamięci
- si : swap używany z dysku
- so : pamięć swap wymieniana na dysk
Pozostałe kolumny są związane z I/O dysku i użyciem CPU, co może nie być istotne w naszym przypadku.
$ vmstat -s 4039588 K total memory 3460532 K used memory 3398428 K active memory 198356 K inactive memory 162648 K free memory 48904 K buffer memory 367504 K swap cache 0 K total swap 0 K used swap 0 K free swap
Jak widzisz, masz do dyspozycji dużą liczbę wierszy wyjściowych, ale tylko kilka z nich jest istotnych dla tego, co próbujemy osiągnąć.
Na górze wyjścia vmstat, możesz zobaczyć całkowitą pamięć, używaną pamięć, aktywną pamięć (która jest równoważna używanej pamięci), nieaktywną i wolną pamięć.
Te kolumny są bardzo podobne do kolumn wyświetlanych przy użyciu polecenia free.
Dostajesz również pamięć buforową, swap cache (który jest odpowiednikiem page cache), jak również całkowitą wymianę, jeśli istnieje.
Sprawdzanie /proc/meminfo w celu sprawdzenia pamięci RAM
Jak już wiesz, jądro jest tym, które wirtualizuje system plików i dostarcza punkty wejścia do niektórych urządzeń w systemie.
Na przykład, katalog /proc może przechowywać referencje do procesów w systemie (deskryptory plików); podobnie /dev będzie przechowywać referencje do wirtualnych urządzeń, które w końcu wskazują na prawdziwe dyski.
Jeden z plików katalogu /proc może być jednak ważniejszy od innych, jeśli chodzi o sprawdzanie pamięci RAM: meminfo.
Jak widać, jądro dostarcza nam statystyki zbliżone do tych wyświetlanych przez komendę „free” lub „vmstat”.
Nie jest to duża niespodzianka, ponieważ te polecenia czerpią informacje z pliku meminfo.
Używając pliku /proc/meminfo, masz dostęp do całkowitej ilości pamięci twojego systemu, wolnej pamięci, dostępnej pamięci, jak również buforów i pamięci podręcznej stron, które mogą być używane.
Wreszcie, masz dostęp do pamięci podręcznej swap, jak również aktywnej i nieaktywnej swap używanej.
Listowanie sprzętu RAM przy użyciu dmidecode
Wszystkie komendy użyte wcześniej są bardzo pomocne, ale mogą być używane tylko w celu sprawdzenia pamięci RAM używanej w danym momencie.
W niektórych przypadkach, możesz być zainteresowany, aby dowiedzieć się więcej o swoim sprzęcie RAM.
Aby to zrobić, musisz użyć komendy dmidecode.
Ostrzeżenie : możesz potrzebować sudo, aby uruchomić dmidecode w swoim systemie.
$ sudo dmidecode# dmidecode 3.1Getting SMBIOS data from sysfs.SMBIOS 2.4 present.13 structures occupying 405 bytes.Table at 0x000F10D0.Handle 0x0000, DMI type 0, 24 bytesBIOS Information Vendor: Private Version: 20171212 Release Date: 12/12/2017 Address: 0xE8000 Runtime Size: 96 kB ROM Size: 64 kB Characteristics: BIOS characteristics not supported Targeted content distribution is supported BIOS Revision: 1.0
Domyślnie dmidecode jest używany w celu wykonania zrzutu całego sprzętu używanego w systemie.
Aby uzyskać sprzęt dedykowany do pamięci, należy określić typ używanego sprzętu.
$ sudo dmidecode --type memory# dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x1000, DMI type 16, 15 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 21 bytes Memory Device Array Handle: 0x1000 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: None
Jak widzisz, wyjście dmidecode jest całkiem użyteczne: dzięki niemu możesz dowiedzieć się więcej o maksymalnej pojemności twojego systemu i jak jest ona dystrybuowana.
W tym przykładzie, mój system jest wyposażony w 4 GB całkowitej pamięci dostarczanej przez pojedynczą pamięć RAM umieszczoną w przestrzeni pamięci DIMM 0.
Używając przedstawionego tu zdjęcia, pamięć RAM zostałaby umieszczona w pierwszym dostępnym slocie (DIMM 0)
Sprawdź wykorzystanie pamięci RAM za pomocą Prometheusa
Metody opisane powyżej działają bardzo dobrze, ale są nieco przestarzałe w porównaniu do nowoczesnych rozwiązań monitorujących.
Jednym ze świetnych sposobów na śledzenie wykorzystania pamięci RAM jest użycie nowoczesnego stosu monitorującego, takiego jak Prometheus & Grafana.
Prometheus eksponuje Node Exporter, który może być użyty w celu zebrania metryk hosta, w szczególności metryk pamięci.
Sprawdzając na stronie Github Node Exporter, będziesz musiał aktywować kolektor „meminfo”, który jest wyspecjalizowany w zbieraniu metryk pamięci z pliku /proc/meminfo.
Stamtąd możesz łatwo zaimportować istniejący dashboard do Grafany, aby mieć statystyki pamięci w czasie rzeczywistym o swoim systemie.
Sprawdzenie samouczka Node Exporter, do którego linkowaliśmy wcześniej, powinno doprowadzić cię do tych samych danych wyjściowych, możesz wybrać dashboard Grafany.
Śledzenie wykorzystania pamięci RAM za pomocą poleceń top/htop
Na koniec, możesz użyć interaktywnych poleceń top i htop, aby śledzić wykorzystanie pamięci.
Top jest natywnie zainstalowany w twoim systemie, po prostu uruchom „top” aby uzyskać statystyki na temat twojego systemu.
Jak możesz zobaczyć tutaj, otrzymujesz statystyki CPU, ale także całkowitą ilość pamięci RAM i swap używaną przez twój system.
Dostajesz także dostępne ilości, jak również używane bufory i page cache.
Statystyki są podawane dla całego systemu, ale są one również podawane dla każdego pojedynczego procesu na twojej instancji posortowanego od góry do dołu.
Komenda htop może być również efektywnie wykorzystana w celu zapewnienia przyjaznego dla człowieka śledzenia pamięci na twoim serwerze.
Komenda htop może nie być natywnie zainstalowana w twoim systemie, więc być może będziesz musiał ją zainstalować.
$ sudo apt-get install htop$ sudo yum install htop
Gdy htop jest zainstalowany, możesz go uruchomić wykonując „htop”
Jak widzisz, wyniki są całkiem podobne: są tylko łatwiejsze do odczytania.
Podsumowanie
W tym poradniku dowiedziałeś się o wielu różnych sposobach sprawdzania pamięci RAM w Linuksie, używając albo wiersza poleceń albo nowoczesnych rozwiązań monitorujących takich jak Prometheus i Grafana.
Jeśli potrzebujesz poprawić zarządzanie pamięcią w swoim systemie, powinieneś zdecydowanie sprawdzić poradniki związane ze swapem, ponieważ rozwijają one więcej o znaczeniu pamięci wirtualnej w twoim systemie.
Jeśli jesteś zainteresowany administracją systemem Linux, upewnij się, że przejrzysz inne tutoriale, które mamy na ten temat.