Wymuszenie zwolnienia pamięci buforów dyskowych na Linux’ie

Linux bardzo agresywnie wykorzystuje wolną pamięć RAM do buforowania danych odczytywanych z dysków (inode’ów, plików, itd…). Ma to niebagatelny wpływ na zwiększenie szybkości uruchamiania programów które już raz zostały uruchomione. Jednak nie zawsze jest to pożądane zachowanie, np. testując szybkość uruchomienia/wykonywania tworzonej przez nas aplikacji – buforowanie zmienia czas ładowania aplikacji przy kolejnych uruchomieniach. Dobrze byłoby móc wymusić zwolnienie buforów by każdy start programu miał porównywalne “warunki startowe”.

Na szczęście można to zrobić w prosty sposób:

sync && echo 3 > /proc/sys/vm/drop_caches

Polecenie to zwolni niewykorzystywany cache pliku stronicowania, katalogów i inodów. Wcześniejsze uruchomienie sync pozwala zwolnić większą ilość buforów przez wymuszenie zapisania otwartych plików.

Inne możliwe warianty to:

  • zwolnienie cache pliku stronicowania:
sync && echo 1 > /proc/sys/vm/drop_caches
  • zwolnienie cache cache katalogów i inodów:
sync && echo 2 > /proc/sys/vm/drop_caches

Opcja ta dostępna jest w jajkach od wersji 2.6.16.

One thought on “Wymuszenie zwolnienia pamięci buforów dyskowych na Linux’ie”

Leave a Reply

Your email address will not be published. Required fields are marked *