Jak wyczyścić pamięć podręczną pamięci RAM, bufor i przestrzeń wymiany w systemie Linux


Jak każdy inny system operacyjny, GNU/Linux zaimplementował zarządzanie pamięcią wydajnie, a nawet więcej. Ale jeśli jakikolwiek proces zjada twoją pamięć i chcesz ją wyczyścić, Linux zapewnia sposób na opróżnienie lub wyczyszczenie pamięci podręcznej RAM.

Każdy system Linux ma trzy opcje czyszczenia pamięci podręcznej bez przerywania jakichkolwiek procesów lub usług.

1. Wyczyść tylko PageCache.

# sync; echo 1 > /proc/sys/vm/drop_caches

2. Wyczyść zęby i i-węzły.

# sync; echo 2 > /proc/sys/vm/drop_caches

3. Wyczyść PageCache, dentries i i-węzły.

# sync; echo 3 > /proc/sys/vm/drop_caches 

Wyjaśnienie powyższego polecenia.

sync opróżni bufor systemu plików. Polecenie rozdzielone „;” jest uruchamiane sekwencyjnie. Powłoka czeka na zakończenie każdego polecenia przed wykonaniem następnego polecenia w sekwencji. Jak wspomniano w dokumentacji jądra, zapis do drop_cache wyczyści pamięć podręczną bez zabijania żadnej aplikacji/usługi, echo polecenia wykonuje zadanie zapisu do pliku.

Jeśli musisz wyczyścić pamięć podręczną dysku, pierwsze polecenie jest najbezpieczniejsze w przedsiębiorstwie i na produkcji, ponieważ „... echo 1>…”. wyczyści tylko pamięć podręczną PageCache. Nie zaleca się używania trzeciej opcji powyżej „... echo 3>” w środowisku produkcyjnym, dopóki nie wiesz, co robisz, ponieważ wyczyści ona PageCache, dentries i i-węzły.

Kiedy stosujesz różne ustawienia i chcesz sprawdzić, czy faktycznie jest on zaimplementowany specjalnie w teście porównawczym rozbudowanym we/wy, może być konieczne wyczyszczenie pamięci podręcznej bufora. Możesz upuścić pamięć podręczną, jak wyjaśniono powyżej, bez ponownego uruchamiania systemu, tj. Bez przestojów.

Linux jest zaprojektowany w taki sposób, że zagląda do pamięci podręcznej dysku przed zajrzeniem do dysku. Jeśli znajdzie zasób w pamięci podręcznej, żądanie nie dotrze do dysku. Jeśli wyczyścimy pamięć podręczną, pamięć podręczna dysku będzie mniej przydatna, ponieważ system operacyjny będzie szukał zasobu na dysku.

Ponadto spowolni system na kilka sekund, podczas gdy pamięć podręczna zostanie wyczyszczona, a każdy zasób wymagany przez system operacyjny zostanie ponownie załadowany do pamięci podręcznej dysku.

Teraz będziemy tworzyć skrypt powłoki, który będzie automatycznie czyścił pamięć podręczną pamięci RAM codziennie o 2 nad ranem za pośrednictwem zadania harmonogramu cron. Utwórz skrypt powłoki clearcache.sh i dodaj następujące wiersze.

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

Ustaw uprawnienia do wykonywania w pliku clearcache.sh.

# chmod 755 clearcache.sh

Teraz możesz wywołać skrypt, gdy będziesz chciał wyczyścić pamięć podręczną RAM.

Teraz ustaw crona, aby czyścił pamięć podręczną RAM codziennie o 2 w nocy. Otwórz crontab do edycji.

# crontab -e

Dołącz poniższy wiersz, zapisz i wyjdź, aby uruchamiać go codziennie o 2 nad ranem.

0  2  *  *  *  /path/to/clearcache.sh

Aby uzyskać więcej informacji o tym, jak cronować zadanie, możesz zapoznać się z naszym artykułem na temat 11 zadań planowania Cron.

Nie! nie jest. Pomyśl o sytuacji, w której zaplanowałeś skrypt, aby wyczyścił pamięć podręczną pamięci RAM codziennie o 2 w nocy. Codziennie o 2 w nocy skrypt jest wykonywany i opróżnia pamięć podręczną pamięci RAM. Pewnego dnia z jakiegokolwiek powodu może być więcej niż oczekiwano, że użytkownicy będą online w Twojej witrynie i szukają zasobów na Twoim serwerze.

W tym samym czasie zaplanowane uruchomienie skryptu i wyczyszczenie wszystkiego w pamięci podręcznej. Teraz wszyscy użytkownicy pobierają dane z dysku. Spowoduje to awarię serwera i uszkodzenie bazy danych. Tak więc wyczyść pamięć podręczną RAM tylko wtedy, gdy jest to wymagane i znasz swoje kroki, w przeciwnym razie jesteś administratorem systemu Cargo Cult.

Jeśli chcesz wyczyścić przestrzeń wymiany, możesz uruchomić poniższe polecenie.

# swapoff -a && swapon -a

Możesz także dodać powyższe polecenie do powyższego skryptu cron, po zrozumieniu całego związanego z tym ryzyka.

Teraz połączymy oba powyższe polecenia w jedno polecenie, aby utworzyć odpowiedni skrypt do wyczyszczenia pamięci podręcznej RAM i przestrzeni wymiany.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

OR

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Po przetestowaniu obu powyższych poleceń uruchomimy polecenie „free -h” przed i po uruchomieniu skryptu oraz sprawdzimy pamięć podręczną.

Na razie to wszystko. Jeśli podobał Ci się ten artykuł, nie zapomnij przekazać nam swoich cennych opinii w komentarzach, aby dać nam znać, co Twoim zdaniem jest dobrym pomysłem, aby wyczyścić pamięć podręczną pamięci RAM i bufor w środowisku produkcyjnym i korporacyjnym?