Jak wyczyścić pamięć podręczną w Linux

Jak wyczyścić pamięć podręczną w Linux
Pamięć podręczna systemu plików Linux (pamięć podręczna strony) służy do szybszego zwiększania operacji IO. W pewnych okolicznościach administrator lub programista może chcieć ręcznie wyczyścić pamięć podręczną. W tym artykule wyjaśnimy, jak działa pamięć podręczna systemu plików Linux. Następnie pokażemy, jak monitorować użycie pamięci podręcznej i jak wyczyścić pamięć podręczną. Przeprowadzimy kilka prostych eksperymentów wydajności, aby sprawdzić, czy pamięć podręczna działa zgodnie z oczekiwaniami i że pamięć podręczna i jasna procedura działają również zgodnie z oczekiwaniami.

Jak działa pamięć podręczna systemu plików Linux

Jądro zastrzega pewną ilość pamięci systemowej do buforowania dostępu do dysku systemowego, aby zwiększyć ogólną wydajność. Pamięć podręczna w Linux nazywa się Pamięć podręczna strony. Rozmiar pamięci podręcznej strony można skonfigurować z dużymi wartościami domyślnymi, aby buforować duże ilości bloków dysku. Maksymalny rozmiar pamięci podręcznej i zasady, kiedy eksmisować dane z pamięci podręcznej, można regulować za pomocą parametrów jądra. Podejście pamięci podręcznej Linux nazywa się pamięcią podręczną typu zapisu. Oznacza to, że jeśli dane są zapisywane na dysku, są zapisane do pamięci w pamięci podręcznej i oznaczone jako brudne w pamięci podręcznej, dopóki nie zostaną zsynchronizowane na dysku. Jądro utrzymuje wewnętrzne struktury danych, aby zoptymalizować dane, które można eksmitować z pamięci podręcznej, gdy potrzebna jest więcej miejsca w pamięci podręcznej.

Podczas połączeń systemowych odczytu Linuxa jądro sprawdzi, czy żądane dane są przechowywane w blokach danych w pamięci podręcznej, to byłoby udane uderzenie pamięci podręcznej, a dane zostaną zwrócone z pamięci podręcznej bez wykonywania IO do systemu dysku. W przypadku pamięci podręcznej pominięcia danych zostanie pobrane z systemu IO, a pamięć podręczna zaktualizowana na podstawie zasad buforowania, ponieważ te same dane prawdopodobnie zostaną ponownie żądane.

Kiedy pewne progi użycia pamięci zostaną osiągnięte zadania w tle, zaczną pisać brudne dane na dysku, aby upewnić się, że wyczyszcza pamięć podręczną pamięci. Mogą one mieć wpływ na wydajność aplikacji pamięci i procesora i wymagają dostrojenia przez administratorów i / lub programistów.

Korzystanie z bezpłatnego polecenia do wyświetlania użycia pamięci podręcznej

Możemy użyć komendy swobodnego z wiersza poleceń w celu analizy pamięci systemowej i ilości pamięci przydzielonej na buforowanie. Zobacz polecenie poniżej:

# darmowe -m

Co widzimy z bezpłatny Powyższe polecenie polega na tym, że jest 7.5 GB pamięci RAM w tym systemie. Z tego tylko 209 MB jest używane i 6.5 MB jest bezpłatny. 667 MB jest używany w pamięci podręcznej bufora. Teraz spróbujmy zwiększyć tę liczbę, uruchamiając polecenie w celu wygenerowania pliku 1 gigabajtu i czytanie pliku. Poniższe polecenie wygeneruje około 100 MB losowych danych, a następnie dołączy 10 kopii pliku do jednego Large_file.

# dd if =/dev/land of =/root/data_file Count = 1400000
# dla i w „seq 1 10”; echo $ i; Cat Data_file >> Large_file; zrobione

Teraz upewnimy się, że przeczytamy ten 1 plik koncertowy, a następnie ponownie sprawdź bezpłatne polecenie:

# Cat Large_file> /dev /null
# darmowe -m

Widzimy, że użycie pamięci podręcznej bufora wzrosło z 667 do 1735 megabajtów około 1 wzrost gigabajtu w użyciu pamięci podręcznej bufora.

Proc Sys VM Drop Bustomes Command

Jądro Linux zapewnia interfejs do upuszczenia pamięci podręcznej Wypróbujmy te polecenia i zobacz wpływ na ustawienie wolnego.

# echo 1>/proc/sys/vm/drop_caches
# darmowe -m

Widzimy powyżej, że większość alokacji pamięci podręcznej bufora została uwolniona z tym poleceniem.

Eksperymentalna weryfikacja, która działa na buforie z kroplami

Czy możemy wykonać sprawdzanie poprawności wydajności korzystania z pamięci podręcznej do odczytania pliku? Przeczytajmy plik i napisz go z powrotem do /dev /null, aby przetestować, ile czasu zajmuje odczytanie pliku z dysku. Zrobimy to z czas Komenda. Robimy to polecenie natychmiast po wyczyszczeniu pamięci podręcznej z powyższymi poleceniami.

Zajęło to 8.4 sekundy do odczytania pliku. Przeczytajmy to ponownie teraz, gdy plik powinien znajdować się w pamięci podręcznej systemu plików i zobacz, jak długo to trwa.

Bum! To zajęło tylko .2 sekundy w porównaniu do 8.4 sekundy do odczytania, gdy plik nie został buforowany. Aby zweryfikować, powtórzmy to ponownie, najpierw usuwając pamięć podręczną, a następnie odczytując plik 2 razy.

Działało idealnie zgodnie z oczekiwaniami. 8.5 sekund dla nie pobudzonego odczytu i .2 sekundy dla buforowanego odczytu.

Wniosek

Pamięć podręczna strony jest automatycznie włączona w systemach Linux i będzie przejrzysta szybciej, przechowując niedawno używane dane w pamięci podręcznej. Jeśli chcesz ręcznie wyczyścić pamięć podręczną, którą można łatwo zrobić, wysyłając polecenie echo do systemu plików /proc wskazującego do jądra, aby upuścić pamięć podręczną i uwolnić pamięć używaną do pamięci podręcznej. Instrukcje dotyczące uruchomienia polecenia pokazano powyżej w tym artykule i pokazano również eksperymentalną walidację zachowania pamięci podręcznej przed i po spłukaniu.