Oto wynik free -m
:
total used free shared buffers cached
Mem: 7188 6894 294 0 249 5945
-/+ buffers/cache: 698 6489
Swap: 0 0 0
Widzę prawie 6GB
(5945 MB) wolnej pamięci 7GB
używanej do buforowania plików. Wiem, jak opróżniać skrzynki. Moje pytanie brzmi: czy można zobaczyć, które pliki (lub i-węzły) są buforowane?
linux
memory-usage
ssapkota
źródło
źródło
buffers
icached
:sysctl -w vm.drop_caches=3
. Przed użyciem możesz przeczytać więcej na ten temat. Czasami jest to po prostu potrzebne. Jest dostępny - to powinien być kolejny powód :)Odpowiedzi:
Cóż, nie jest to łatwy sposób, aby spojrzeć na widoku pamięci podręcznej jądra, jeśli zdarzy się, że ftools - „fincore” daje pewne podsumowanie informacji na temat tego, co strony Files' jest zawartość pamięci podręcznej.
Musisz podać listę nazw plików, aby sprawdzić ich obecność w pamięci podręcznej strony. Jest tak, ponieważ informacje przechowywane w tabelach pamięci podręcznej stron jądra będą zawierać tylko odwołania do bloków danych, a nie nazwy plików.
fincore
rozwiązuje bloki danych danego pliku poprzez dane i-węzłów i szuka odpowiednich wpisów w tabelach pamięci podręcznej stron.Nie ma wydajnego mechanizmu wyszukiwania umożliwiającego wykonanie operacji odwrotnej - uzyskanie nazwy pliku należącej do bloku danych wymagałoby odczytania wszystkich i-węzłów i bloków pośrednich w systemie plików. Jeśli chcesz wiedzieć o blokach każdego pliku przechowywanych w pamięci podręcznej stron, musisz podać listę wszystkich plików w systemie plików
fincore
. Ale to znowu może zepsuć pomiar, ponieważ duża ilość danych byłaby czytana przez katalogi i uzyskiwanie wszystkich i-węzłów i bloków pośrednich - umieszczanie ich w pamięci podręcznej strony i eksmisja danych z pamięci podręcznej strony, które próbujesz zbadać.źródło
fincore
rozwiązuje bloki danych danego pliku poprzez dane i-węzłów i szuka odpowiednich wpisów w tabelach pamięci podręcznej stron. Nie ma wydajnego mechanizmu wyszukiwania odwrotnego - uzyskanie nazwy pliku należącej do bloku danych wymagałoby odczytania wszystkich i-węzłów i bloków pośrednich w systemie plików. W związku z tym algorytmicznie lepiej będzie dostarczyć listę wszystkich plików w systemie plików,fincore
jeśli naprawdę potrzebujesz tego poziomu informacji.Za pomocą narzędzia vmtouch można sprawdzić, czy nazwany plik lub katalog znajduje się w pamięci podręcznej. Możesz także użyć tego narzędzia, aby wymusić elementy w pamięci podręcznej lub zablokować je w pamięci podręcznej.
Teraz mogę „dotknąć” go do pamięci podręcznej.
Teraz sprawdź, ile kosztuje pamięć podręczna ...
źródło
Piszę bardzo prosty skrypt powłoki, aby pokazać buforowane pliki za pomocą linux-fincore. Ponieważ pamięć podręczna jest jedną z części pamięci, mój kod znajduje 10 najlepszych zastosowań procesu w RSZ, a użycie lsof do znalezienia otwartych plików, w końcu użyj linux-fincore, aby dowiedzieć się, czy pliki te są buforowane, czy nie.
Popraw mnie, jeśli się mylę.
źródło
lsof
zgłasza także pliki odwzorowane na przestrzeń adresową procesu (i niekoniecznie buforowane). Prawdopodobnie również duża część plików będzie tylko częściowo / rzadko buforowana ...Możesz także użyć pcstat (stat pamięci podręcznej strony) https://github.com/tobert/pcstat
Mam nadzieję, że to komuś pomoże.
źródło
Napisałem następujący skrypt, który drukuje wszystkie pliki i ich stan pamięci podręcznej za pomocą polecenia pcstat. Jest to samodzielny skrypt dla systemów Linux x86_64. W razie potrzeby pobiera pcstat.
Pierwszy argument to lokalizacja systemu plików do analizy, a drugi argument to liczba wyników (Top N według liczby stron w pamięci podręcznej).
źródło