Tutoriel Linux

Bezpłatnie pod Linuksem: zrozumienie dostępnej pamięci RAM i pamięci podręcznej

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Uruchamiasz wolne - godz na serwerze i kolumnie bezpłatny Wyświetlacz pokazuje prawie zero. Mimo to aplikacje nadal reagują poprawnie i nie pojawiają się błędy pamięci. To częsty problem: Linux wykorzystuje nieużywaną pamięć RAM jako pamięć podręczną, a następnie odzyskuje jej część, gdy proces jej potrzebuje.

Aby dowiedzieć się, czy w maszynie rzeczywiście brakuje pamięci, najpierw sprawdź dostępny, a następnie zamiana i aktywność pamięci w czasie. Pojedyncza wartość używany to za mało. Oto metoda, której używam przed zatrzymaniem usługi lub dodaniem pamięci RAM.

Tux analizuje moduły RAM i pamięć podręczną wielokrotnego użytku w systemie Linux
W systemie Linux część pamięci podręcznej może stać się ponownie dostępna dla aplikacji.

Zacznij od `free -h` i kolumny `available`

Podstawowe polecenie nie wymaga uprawnień administratora:

Opcja -H pamZacznij od tych trzech kolumn:

  • całkowity : znana użyteczna pamięć jądra;
  • dostępny :szacunek pamięci, jaką nowy proces może uzyskać bez powodowania wymiany;
  • bezpłatny :strony, które w tej chwili nie są w ogóle używane.

dostępny jest ogólnie bardziej użyteczny niż bezpłatny ale 4 GiB w dostępny nie kończy się pamięć RAM.

Odczytuj używane, współdzielone i buforowane bez dodawania ich do siebie.

Kolumny bezpłatny Nie odpowiadają niezależnym szufladom, które należałoby dodać. W najnowszych wersjach procps-ng, używany oblicza się z całkowity I dostępnyDlatego nie jest to dokładna suma pamięci RSS wszystkich procesów.

  • wspólny wykorzystuje głównie pamięć tmpfs ;
  • bufory obejmuje bufory rdzeniowe;
  • ukryty obejmuje w szczególności pamięć podręczną plików i struktury odzyskiwalne;
  • buff/cache grupuje bufory i pamięć podręczną do standardowego wyświetlania.

Rozdzielić bufory I ukrytyUżyj wyświetlacza szerokoekranowego:

wolne -w -h

Ten pogląd pomaga zrozumieć alokację, ale nie zmienia diagnozy: pozostaje pytanie, ile pamięci można odzyskać bez wymiany, a także, czy ten margines zmniejszy się na stałe.

Dlaczego Linux wypełnia pamięć RAM pamięcią podręczną

Ponowne odczytanie pliku z pamięci RAM jest tańsze niż odczytanie go z dysku SSD lub twardego. Dlatego Linux przechowuje ostatnio używane dane w pamięci podręcznej stron. Dopóki żadna aplikacja nie żąda tej przestrzeni, pozostawienie jej pustej nie przynosi żadnych korzyści.

Nie czyść pamięci podręcznej za pomocą drop_cache sztucznie podnieść kręgosłup bezpłatnyUsuwasz użyteczną pamięć podręczną i zmuszasz system do ponownego odczytu danych. Ta operacja jest wykorzystywana głównie do kontrolowanych testów, a nie do rutynowej konserwacji serwera.

Możesz potwierdzić źródło wartości w /proc/meminfo :

grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SReclaimable|SwapTotal|SwapFree):' /proc/meminfo

Dostępna pamięć to szacunek generowany przez jądro. Uwzględnia on wolną pamięć i część odzyskiwalnych pamięci podręcznych, nie zakładając, że cała pamięć podręczna może zostać natychmiast odzyskana.

Wybierz jednostki i obserwuj kilka próbek

Aby porównać kilka maszyn lub wypełnić odczyt, należy stosować stałą jednostkę. Wyświetla mebibajty. W przypadku jednostek dziesiętnych należy dodać --Jeśli :

wolny -m
free -h --si

Unikaj także wyciągania wniosków na podstawie pojedynczego, odizolowanego przechwycenia. bezpłatny można powtarzać odczyt co dwie sekundy i zatrzymać po pięciu pomiarach:

wolny -h -s 2 -c 5

Zobacz, czy dostępny Ciągły spadek występuje, gdy wymiana danych postępuje i sytuacja wraca do normy po zakończeniu procesu. Krótki spadek podczas tworzenia kopii zapasowej lub kompilacji nie jest tym samym, co ciągły spadek trwający kilka godzin.

Krzyżowe odwoływanie się do pamięci RAM za pomocą swap i vmstat

Linia Zamieniać z bezpłatny Jeśli Więc z vmstat :

zamiana – pokaż
vmstat 1 5

W vmstatZignoruj ​​pierwszy wiersz w przypadku aktywności chwilowej: reprezentuje on średnie od początku. Kolejne wiersze pokazują próbki. Powtarzające się wartości w Jeśli Lub Więczwiązany z A dostępny Niskie zużycie pamięci i spowolnienia wskazują na rzeczywiste obciążenie pamięci.

Przewodnik po swap pod Linuksem wyjaśnia, kiedy jego użycie jest normalne i dlaczego wyczyszczenie go bez pamięci RAM może spowodować zawieszenie się komputera.

Znajdź procesy, które faktycznie zużywają pamięć

Jeżeli wskaźniki potwierdzają napięcie, przed podjęciem działań zidentyfikuj procesy:

ps -eo pid,użytkownik,comm,%mem,rss --sort=-rss | head
góra

RSS Mierzy on fizyczną pamięć rezydentną procesu, ale niektóre strony mogą być współdzielone przez wiele procesów. Dlatego sumowanie wszystkich wartości RSS może zawyżać rzeczywiste zużycie. Użyj tej listy, aby zidentyfikować potencjalnego klienta, a następnie sprawdź usługę, jej konfigurację i logi.

W góraSortuj według pamięci, pobierz PID i nazwę usługi, a następnie sprawdź jej status:

systemctl status service-concerned --no-pager

Kiedy można stwierdzić, że rzeczywiście brakuje pamięci RAM

Brak pamięci staje się wiarygodny, gdy kilka sygnałów się pokrywa: dostępny pozostaje bardzo niski, vmstat pokazuje powtarzające się wymiany, czasy reakcji ulegają pogorszeniu, a jądro w końcu wysyła sygnał do zabójcy OOM.

journalctl -k -b | grep -Ei 'out of memory|oom-killer|zabity proces'
dmesg -T | grep -Ei 'out of memory|oom-killer|zabity proces'

W takim przypadku należy usunąć przyczynę: nieprawidłowo ustawiony limit pamięci, wyciek usług, nadmierne obciążenie lub niewystarczający rozmiar. Dodaj przestrzeń wymiany tylko jako zabezpieczenie, a nie jako zamiennik trwale przeciążonej pamięci RAM. dokumentuje obliczenia swoich kolumn, podczas gdy proc_meminfo(5) Opisuje liczniki udostępniane przez jądro.

sudo apt update && sudo apt upgrade