Ustawienie swapiness jest drobną modyfikacją sposobu, w jaki Linux oblicza korzyści / wady wymiany w określonym scenariuszu. Wysoka zamiana nie spowoduje zamiany systemu, gdy nie jest to konieczne, a niska zamiana, pod warunkiem, że nie wyłączysz całkowicie zamiany, nie zapobiegnie zamianie systemu, gdy jest to absolutnie konieczne.
Domyślna zamiana na około 60 to bardzo dobry kompromis zapewniający dobrą wydajność systemu, zapewniając, że przydzielenie pamięci podręcznej nie jest zbyt trudne, gdy nie jest używana pamięć przydzielonego programu.
Pamiętaj, że jeśli masz dużo pamięci RAM dla wszystkich procesów plus pamięć podręczną, co zwykle powinno mieć miejsce, jeśli masz dużo fizycznej pamięci RAM, zamiana nie powinna być dla ciebie problemem. Preferowanym sposobem rozwiązania problemów związanych z zbyt dużą zamianą jest zmniejszenie wykorzystania pamięci RAM przez procesy i / lub zwiększenie fizycznej pamięci RAM. Zmniejszenie swapiness będzie miało negatywny wpływ, jeśli tak naprawdę potrzebujesz więcej pamięci RAM.
Dlaczego większość ludzi zaleca zmniejszenie swapowania do 10-20?
Ponieważ większość uważa, że zamiana = zła i że jeśli nie zmniejszysz swapingu, system podmieni się, kiedy tak naprawdę nie będzie musiał. Żadna z tych rzeczy nie jest prawdziwa. Ludzie kojarzą zamianę z czasami, w których ich system grzęźnie - jednak najczęściej jest to zamiana, ponieważ system grzęźnie, a nie na odwrót. Prawdą jest, że w pewnych momentach zamiana może mieć zauważalną utratę wydajności, ale system już uwzględnił to w swojej decyzji o zamianie i zdecydował, że nie zrobienie tego oznaczałoby większą ogólną karę w wydajności lub stabilności systemu, co może później stają się zauważalne. Ogólnie ustawienia domyślne powinny zapewniać najlepszą ogólną wydajność i niezawodność. Polecam pozostawienie go jako domyślnego.
...
Po zużyciu wystarczającej ilości pamięci, aby zabrakło wystarczającej ilości na płynnie działającą pamięć podręczną, Linux może ponownie przydzielić część nieużywanej pamięci aplikacji z pamięci RAM na wymianę.
Nie robi tego jednak według określonego punktu odcięcia. To nie tak, że osiągniesz pewien procent alokacji, wtedy Linux zacznie się zamieniać. Ma raczej „niewyraźny” algorytm. Bierze pod uwagę wiele rzeczy, które najlepiej można opisać przez „jak duży jest nacisk na przydzielanie pamięci”. Jeśli istnieje duża „presja” na przydzielenie nowej pamięci, zwiększy to szanse, że niektóre zostaną zamienione, aby zrobić więcej miejsca. Jeśli będzie mniej „presji”, zmniejszy to te szanse.
Twój system ma ustawienie „swapiness”, które pomaga ci dostosować sposób obliczania tego „ciśnienia”. Zwykle w ogóle nie jest to zalecane, a ja z pewnością nigdy nie zaleciłbym, aby to zmienić. Zamiana jest ogólnie bardzo dobrą rzeczą - wszelkie okazjonalne kary wydajności powinny być kompensowane przez wzrost ogólnej reakcji systemu i stabilności w szerokim zakresie zadań. Jeśli zmniejszysz swapiness, pozwolisz, aby ilość pamięci podręcznej zmniejszyła się nieco bardziej niż w innym przypadku, nawet jeśli może być naprawdę przydatna. W związku z tym ryzykujesz spowolnienie komputera, ponieważ jest mniej pamięci podręcznej, a aplikacje zajmują pamięć, która nawet go nie używa. To, czy jest to wystarczająco dobry kompromis dla konkretnego problemu, jaki masz przy wymianie, zależy od Ciebie.
Co się dzieje, gdy system jest zapchany i mocno zamienia się?
Wiele razy ludzie patrzą na swój system, który mocno uderza w dysk i używa dużo miejsca do wymiany i obwiniania za niego. To niewłaściwe podejście. Jeśli zamiana kiedykolwiek osiągnie ten poziom ekstremalny, oznacza to, że twój system ma bardzo mało pamięci, a zamiana jest jedyną rzeczą, która powstrzymuje go przed przypadkowym awarią lub zabijaniem procesów. Bez zamiany w tej sytuacji procesy ulegną awarii i umrą. Zamiana jest objawem głębszego problemu. W systemie z wystarczającą ilością pamięci do wszystkich swoich zadań zamiana zapewnia tylko, że pamięć jest wykorzystywana w efektywny sposób, przekazując pamięć do pamięci podręcznej w uśpionych procesach, w których według niej będzie tego warta. W systemie, w którym zamiana nieustannie pcha dysk, nie jest to wina wymiany.
Wybierając, co ma zostać zamienione na dysk, system próbuje wybrać pamięć, która nie jest faktycznie używana - odczytywana lub zapisywana z. Ma dość prosty algorytm do obliczania tego, który wybiera dobrze przez większość czasu.
...
Ale w jaki sposób swap może przyspieszyć mój system? Czy zamiana nie spowalnia rzeczy?
Przenoszenie danych z pamięci RAM do wymiany jest powolną operacją, ale jest podejmowane tylko wtedy, gdy jądro jest całkiem pewne, że ogólna korzyść przeważy to. Na przykład, jeśli pamięć aplikacji wzrosła do tego stopnia, że prawie nie ma już pamięci podręcznej, a Twoje operacje we / wy są bardzo nieefektywne z tego powodu, możesz faktycznie uzyskać znacznie większą prędkość z systemu, zwalniając część pamięci, nawet po początkowym koszcie wymiany danych w celu ich uwolnienia.