Ponieważ jądro 2.6.28, Linux używa Splitu najdawniej używany (LRU) Strona strategia wymiana. Strony ze źródłem systemu plików, takim jak tekst programu lub biblioteki współdzielone, należą do pamięci podręcznej plików. Strony bez kopii zapasowej systemu plików są nazywane stronami anonimowymi i składają się z danych wykonawczych, takich jak przestrzeń stosu zarezerwowana dla aplikacji itp. Zazwyczaj strony należące do pamięci podręcznej plików są tańsze do eksmisji z pamięci (ponieważ można je w razie potrzeby łatwo odczytać z dysku) . Ponieważ anonimowe strony nie mają kopii zapasowej systemu plików, muszą pozostać w pamięci tak długo, jak są potrzebne programowi, chyba że jest tam miejsce do ich wymiany.
Jest powszechnym błędnym przekonaniem, że partycja wymiany w jakiś sposób spowolniłaby twój system. Brak partycji wymiany nie oznacza, że jądro nie będzie eksmitować stron z pamięci, to po prostu oznacza, że jądro ma mniej możliwości wyboru stron do eksmisji. Ilość dostępnych zamian nie wpłynie na to, ile zostanie wykorzystana.
Linux może poradzić sobie z brakiem przestrzeni wymiany, ponieważ domyślnie zasady rozliczania pamięci jądra mogą przeciążać pamięć . Minusem jest to, że gdy pamięć fizyczna jest wyczerpany, a jądro nie może zamienić anonimowych stron na dysku, out-of-memory-zabójcy (OOM-zabójcy) mechanizm zacznie zabijając pamięci wyginanie procesów „zbójeckie”, aby zwolnić pamięć inne procesy.
vm.swappiness
Opcja jest modyfikator, który zmienia równowagę między wymieniając stron cache plik na rzecz anonimowych stron. Pamięć podręczna plików ma dowolną wartość priorytetu 200, od której vm.swappiness
odejmuje się modyfikator ( file_prio=200-vm.swappiness
). Strony anonimowe domyślnie zaczynają się od 60 ( anon_prio=vm.swappiness
). Oznacza to, że domyślnie wagi priorytetowe są umiarkowanie korzystne dla anonimowych stron ( anon_prio=60
, file_prio=200-60=140
). Zachowanie jest zdefiniowane w mm/vmscan.c
drzewie źródeł jądra.
Biorąc pod uwagę vm.swappiness
z 100
priorytety byłyby równe ( file_prio=200-100=100
, anon_prio=100
). Byłoby to sensowne dla systemu z dużymi wejściami / wyjściami, gdyby nie było konieczne, aby strony z pamięci podręcznej plików były eksmitowane na rzecz anonimowych stron.
Odwrotnie ustawienie vm.swappiness
do 0
uniemożliwi jądro od eksmisji anonimowych stron na korzyść stron z pamięci podręcznej plików. Może to być przydatne, jeśli programy same wykonują większość buforowania, co może mieć miejsce w przypadku niektórych baz danych. W systemach stacjonarnych może to poprawić interaktywność, ale wadą jest to, że wydajność we / wy prawdopodobnie odniesie sukces.
Wartość domyślna została najprawdopodobniej wybrana jako przybliżone pole środkowe między tymi dwoma skrajnościami. Jak w przypadku każdego parametru wydajności, dostosowanie vm.swappiness
powinno opierać się na danych porównawczych porównywalnych z rzeczywistymi obciążeniami, a nie tylko na przeczuciu.