Linux: pamięć jest wolna, ale używana jest wymiana. Dlaczego?

11

Oto diagramy Munina.

Wykorzystanie pamięci: http://koryagin.com/w/q/memory-day.png

Zamień in / out: http://koryagin.com/w/q/swap-day.png

Dlaczego Linux decyduje się na zwiększenie pamięci podręcznej i użycie funkcji wymiany, gdy rozmiar pamięci RAM jest znacznie większy niż pamięć wykorzystywana przez programy?

Pavel Koryagin
źródło
2
Podsystem VM linux w ciągu ostatnich kilku lat został bardzo dostrojony, aby sprzyjać przestrzeni buforowej i pamięci podręcznej; aplikacje zajmujące pamięć, ale nie robiące niczego, zostaną przetasowane na dysk. Zwiększa to szybkość reakcji i wydajność. Jeśli nie widzisz problemów z wydajnością, naprawdę nie powinieneś się tym martwić.
Bart Silverstrim,

Odpowiedzi:

17

Twój serwer prawdopodobnie ma trochę zajętych pamięci i / lub nieaktywnych procesów mających wiele nieaktywnych stron. Jądro Linuksa woli wymieniać nieaktywne części programów, ponieważ najprawdopodobniej pamięć jest lepiej wykorzystywana jako pamięć podręczna.

Jeśli chcesz zmienić to zachowanie, graj z vm.swappinessdostrajaniem sysctl, ale bądź ostrzeżony, przechytrzenie programistów jądra / opiekunów dystrybucji nie jest takie łatwe. :-)

Czy masz problemy z wydajnością na serwerze podczas tego skoku wymiany lub pytałeś z ciekawości?

Janne Pikkarainen
źródło
Nie mam problemów z wydajnością na tym konkretnym serwerze. Ale w innym, gdzie sytuacja nie jest tak jasna, myślę o tym, co robić. Czyż jakaś logika zarządzania pamięcią systemu Linux nie może być przyczyną błędów segregujących PHP-FPM, jeśli nie pasują one do żadnego ze znanych problemów PHP? Ogólnie rzecz biorąc, na korzyść ciekawości.
Pavel Koryagin
BTW, serwer ten intensywnie obsługuje bardzo niewielką ilość danych za pomocą stałego zestawu skryptów, więc nie powinien mieć intensywnych operacji we / wy. Dlaczego więc Linux chce mieć tak dużą pamięć podręczną?
Pavel Koryagin
Linux mocno buforuje pliki, metadane plików, wpisy katalogu i tak dalej. Wypróbuj polecenie slabtop.
Janne Pikkarainen
Wielkie dzięki. Zajmie trochę czasu, aby zrozumieć, co zrobić z slabtopinformacjami.
Pavel Koryagin
Niech biegnie to na pełnym ekranie, gdy twój szef przechodzi obok kabiny i staje się guru w jego oczach. :-) Kolejnym fajnym poleceniem „och, z pewnością trudnym do zrozumienia” jest systat -vmstatFreeBSD (prawdopodobnie także inne BSD).
Janne Pikkarainen
1

Powinieneś spróbować grać z parametrem swapiness . Jak widać, system zaczął wymieniać się, gdy próbował zwiększyć rozmiar pamięci podręcznej plików, jest to normalne, jeśli swappines nie ma wartości 0.

Alex
źródło