jak każdy inny system operacyjny, GNU/Linux zaimplementował wydajne zarządzanie pamięcią, a nawet więcej. Ale jeśli jakiś proces pożera twoją pamięć i chcesz ją wyczyścić, Linux zapewnia sposób na opróżnienie lub wyczyszczenie pamięci podręcznej ram.
Jak wyczyścić pamięć podręczną w Linuksie?
każdy system Linux ma trzy opcje czyszczenia pamięci podręcznej bez przerywania procesów lub usług.
1. Wyczyść tylko PageCache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Wyczyść protezy zębowe i i-węzły.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Wyczyść PageCache, protezy zębowe 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 oddzielone ";”
uruchamia się sekwencyjnie. Powłoka czeka na zakończenie każdego polecenia przed wykonaniem następnego polecenia w sekwencji. Jak wspomniano w dokumentacji jądra, pisanie do drop_cache wyczyści pamięć podręczną bez zabijania żadnej aplikacji/usługi, Komenda echo wykonuje zadanie zapisu do pliku.
Jeśli musisz wyczyścić pamięć podręczną dysku, pierwsze polecenie jest najbezpieczniejsze w firmach i produkcji, ponieważ "...echo 1 > ….”
wyczyści tylko pamięć podręczną strony. Nie zaleca się używania trzeciej opcji powyżej "...echo 3 >”
w produkcji, dopóki nie będziesz wiedzieć, co robisz, ponieważ spowoduje to wyczyszczenie PageCache, dentries i i-węzłów.
czy dobrym pomysłem jest uwolnienie bufora i pamięci podręcznej w Linuksie, które mogą być używane przez jądro Linuksa?
gdy stosujesz różne ustawienia i chcesz sprawdzić, czy jest to rzeczywiście zaimplementowane specjalnie na I/O-extensive benchmark, być może będziesz musiał wyczyścić bufor cache. Możesz upuścić pamięć podręczną, jak wyjaśniono powyżej, bez ponownego uruchamiania systemu, tj.
Linux jest zaprojektowany w taki sposób, że zagląda do pamięci podręcznej dysku przed zajrzeniem na dysk. 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 jest czyszczona i każdy zasób wymagany przez system operacyjny jest ponownie ładowany do pamięci podręcznej dysku.
teraz będziemy tworzyć skrypt powłoki, aby automatycznie czyścić pamięć podręczną RAM codziennie o 2 w nocy za pomocą zadania harmonogramu cron. Tworzenie skryptu powłoki clearcache.sh i dodaj następujące linie.
#!/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 na clearcache.sh plik.
# chmod 755 clearcache.sh
teraz możesz wywołać skrypt zawsze, gdy potrzebujesz wyczyścić pamięć podręczną ram.
Teraz ustaw cron, aby codziennie czyścić pamięć podręczną RAM o 2 w nocy. Otwórz crontab do edycji.
# crontab -e
Dołącz poniższą linię, Zapisz i Zakończ, aby uruchomić ją o 2 w nocy dziennie.
0 2 * * * /path/to/clearcache.sh
aby uzyskać więcej informacji o tym, jak cronować zadanie, możesz zajrzeć do naszego artykułu na temat 11 Zadań Cron.
czy to dobry pomysł, aby automatycznie wyczyścić pamięć podręczną RAM na serwerze produkcyjnym?
nie! nie jest. Pomyśl o sytuacji, gdy zaplanowałeś, aby skrypt czyścił pamięć podręczną ram codziennie o 2 w nocy. Codziennie o 2 w nocy skrypt jest wykonywany i opróżnia pamięć podręczną RAM. Pewnego dnia z jakiegokolwiek powodu, może być więcej niż oczekiwano użytkownicy są online na swojej stronie internetowej i poszukują zasobów z serwera.
w tym samym czasie zaplanowany uruchom skrypt i wyczyści wszystko w pamięci podręcznej. Teraz wszyscy użytkownicy pobierają dane z dysku. Spowoduje to awarię serwera i uszkodzenie bazy danych. Więc Wyczyść ram-cache tylko wtedy, gdy jest to wymagane i znane kroki stopy, w przeciwnym razie jesteś administratorem systemu Cargo Cult.
Jak wyczyścić miejsce wymiany w Linuksie?
Jeśli chcesz wyczyścić miejsce wymiany, możesz uruchomić poniższe polecenie.
# swapoff -a && swapon -a
Możesz również dodać powyższe polecenie do skryptu cron powyżej, po zrozumieniu całego związanego z tym ryzyka.
teraz połączymy oba powyższe polecenia w jedno polecenie, aby stworzyć odpowiedni skrypt do wyczyszczenia pamięci podręcznej RAM i wymiany przestrzeni.
# 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 i sprawdzimy pamięć podręczną.