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.