Jak wyczyścić pamięci podręczne używane przez jądro Linuksa

Chcę zmusić jądro Linuksa do przydzielenia większej ilości pamięci do aplikacji po tym, jak pamięć podręczna zacznie zajmować zbyt dużo pamięci (co widać po wyjściu 'free').

I ' ve run

sudo sync; sudo sysctl -w vm.drop_caches=3; free

(aby uwolnić zarówno dysk dentry/iode cache jak i page cache) i widzę, że tylko około połowa używanego cache została uwolniona-reszta pozostaje. Jak mogę stwierdzić, co zajmuje resztę pamięci podręcznej i wymusić jej uwolnienie?

Author: Guss, 2009-03-01

3 answers

Będziesz chciał zwiększyć vfs_cache_pressure, jak również ustawić swapiness na 0. To sprawi, że jądro odzyska pamięć podręczną szybciej, dając procesom równą lub większą przychylność przy podejmowaniu decyzji o tym, co zostanie wycofane. Chcesz to zrobić, jeśli procesy, na których Ci zależy, robią bardzo mało We/Wy dysków. jeśli proces związany z We/Wy sieci musi się zamienić, aby obsłużyć żądania, jest to problem, a prawdziwym rozwiązaniem jest umieszczenie go na mniej konkurencyjnym serwerze.

Z domyślnym ustawieniem swapiness, jądro prawie zawsze będzie sprzyjać przechowywaniu pamięci podręcznej związanej z FS w prawdziwej pamięci. Więc jeśli zwiększysz ciśnienie pamięci podręcznej, pamiętaj, aby również dostosować swapiness.

 17
Author: Tim Post,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-25 16:13:36

Zawartość /proc/meminfo informuje do czego jądro używa pamięci RAM.

Możesz użyć /proc/sys/vm/vfs_cache_pressure , aby zmusić jądro do odzyskania pamięci używanej w pamięci podręcznej związanej z systemem plików bardziej leniwie lub chętnie.

Zauważ, że Twoja aplikacja może skorzystać z dostrajania tego parametru tylko wtedy, gdy nie wykonuje lub nie wykonuje operacji wejścia/Wyjścia dysku.

 16
Author: hillu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-01 21:24:44

Możesz znaleźć odpowiedź Johna Nilssona na moje pytanie przydatna do czyszczenia pamięci podręcznej w celu sprawdzenia, czy jest to związane z Twoim problemem:

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

Chociaż domyślam się, że jedyna prawdziwa różnica to 1 vs 3

 15
Author: Stephen Denne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:32:59