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?


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?


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.