NFsec Logo

Uwalnianie pamięci RAM z niepotrzebnych danych

10/10/2010 w Administracja Brak komentarzy.  (artykuł nr 285, ilość słów: 553)

K

iedy zapisujemy dane na dysku – nie koniecznie są one tam zapisywane. Jądro przechowuje pamięć podręczną wielu rzeczy, a ciągłe zapisywanie danych na dysku wymaga wiele pracy przy wykonywaniu, której należy wszystkie inne procesy również wykonywać szybko i sprawnie. Dlatego przechowywanie wielu procesów i danych w pamięci z pewnością jest z korzyścią dla wydajności systemu, ale czasami po prostu chcemy mieć wolną pamięć RAM od niepotrzebnych informacji, a dane zapisane na dysku.

Z pomocą przychodzi wirtualny system plików /proc, który jest interfejsem do pewnych struktur danych działającego systemu (jądra). Znajduje się w nim podkatalog sys zawierający więcej pseudo plików reprezentujących zmienne jądra, a dokładniej mówiąc – są w nim głównie podkatalogi z podziałem tych zmiennych na grupy. Jednym z głównych podkatalogów jest vm, czyli pamięć wirtualna (ang. virtual memory). Pliki w tym katalogu mogą zostać użyte do dostrajania pracy pamięci wirtualnej podsystemu jądra Linuksa oraz zapisywania “brudnych” (czyt. mogących zostać zapisanych, a trzymanych jeszcze w pamięci) danych na dysku.

Od wersji jądra 2.6.16 odpowiedni wpis dokonany do /proc/sys/vm/drop_caches spowoduje zwolnienie przez jądro czystych buforów, dentries (ang. directory entry) i i-węzłów (system plików w pamięci reprezentowany jest za pomocą dentries oraz i-węzłów) z pamięci. Na przykład, aby zwolnić bufor stronicowania, należy użyć polecenia:

echo 1 > /proc/sys/vm/drop_caches

W celu zwolnienia dentries i i-węzłów, należy użyć:

echo 2 > /proc/sys/vm/drop_caches

Aby zwolnić bufor stronicowania, dentries i i-węzły, należy użyć:

echo 3 > /proc/sys/vm/drop_caches

Ponieważ operacja ta nie jest destrukcyjna i “brudne” obiekty nie są zwalniane, użytkownik powinien wcześniej uruchomić polecenie: sync w celu upewnienia się, że wszystkie zbuforowane obiekty zostaną zwolnione. Przykład zastosowania:

darkstar:~# free -m
             total       used       free     shared    buffers     cached
Mem:          8000       3848       4151          0        257       2207
-/+ buffers/cache:       1384       6615
Swap:         7632          1       7630
darkstar:~# sync; echo 3 > /proc/sys/vm/drop_caches
darkstar:~# free -m
             total       used       free     shared    buffers     cached
Mem:          8000       2020       5979          0          0        670
-/+ buffers/cache:       1350       6649
Swap:         7632          1       7630

Więcej informacji: Virtual Memory, Drop Caches

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , , , , ,

Komentowanie tego wpisu jest zablokowane.