Dlaczego domyślna zamiana wynosi 60? Jaki byłby efekt, jeśli obniżę wartość swapiness na moim komputerze stacjonarnym?


16

Czytałem o swapiness na różnych forach i widziałem kilka filmów. Wiele osób stwierdziło, że dobrym rozwiązaniem dla użytkowników komputerów stacjonarnych jest obniżenie wartości swapiness poniżej 60 (co jest wartością domyślną). Niektórzy twierdzą, że 60 jest dobre dla serwerów. Dokładnie dlaczego lepiej byłoby mi go obniżyć i dlaczego 60 jest dobre dla serwerów? Próbowałem znaleźć odpowiedź (szukałem tutaj na przykład), ale nie mogłem zrozumieć. ... Proszę używać prostych terminów: D


zredagował pytanie. Czy teraz jest dobrze?
Mina Michael

Odpowiedzi:


22

Twoje założenie jest złe. Nie ma wartości wymiany dla serwerów.

Zamienność to ilość dokonywanych zamian, zwłaszcza jak agresywnie zamieniasz. W przypadku moich serwerów zamiana jest bliska zeru, ponieważ cholernie upewniam się, że mają wystarczającą ilość pamięci na wszystko. Nie ma wartości „najlepsza dla serwerów”. jest 60, co jest wartością domyślną, a następnie jest „twoja wartość”, która zależy od użycia i dostępnej pamięci.

Jeśli masz serwery, które czasami używają LOADS pamięci, możesz mieć ich wyższe niż domyślne, ale powiedziałbym, że niektóre serwery (serwery baz danych?) Mogą chcieć utrzymać je znacznie niżej niż komputer domowy.


dobrze dobrze: D W wyniku tej unix.stackexchange.com/questions/88693/... . druga odpowiedź (ta z obecnie 2 głosami pozytywnymi) mówi, że 60 może być najbardziej odpowiednich dla serwerów. ... I pozwól mi to wyjaśnić. Czy powinienem ustawić wysoką swapiness, jeśli wykonuję procesy wymagające dużej pamięci, a niskie, jeśli wykonuję wiele małych procesów?
Mina Michael,

(w zależności od specyfikacji mojego komputera oczywiście) Mam Core 2 Duo 2.9 GHz, z około zintegrowana grafika Intela przez drogi
Mina Michael

1
Nie można powiedzieć. Zależy od wielu rzeczy, jak stwierdzono również w tej odpowiedzi -> niektóre bazy danych mogą buforować, ale niektóre nie. To zależy od programów i sprzętu. Jest to ustawienie domyślne, a najlepszą rzeczą, jaką możesz zrobić, to przetestować działanie systemu w jakiej sytuacji. Jak już wspomniano, dodałem wystarczającą liczbę memów do moich systemów i wiem, czego one wymagają, więc mogę mieć zamianę na poziomie zbliżonym do 0. Ale w zdrowych systemach niektóre zamiany mogą być dobre. nie ma tutaj łatwej porady na temat konfiguracji „boga dla wszystkich”, przeczytaj najlepiej ocenioną odpowiedź. Ponadto: w drugiej odpowiedzi napisano „może być”, a nie „jest”
Nanne

(i według twoich specyfikacji: najważniejszą rzeczą, jeśli mówisz o pamięci, którą masz i o tobie, ale nie ma potrzeby dodawania jej tutaj: moglibyśmy rozmawiać przez wiele dni o wszelkiego rodzaju szczegółach, najlepiej jest przeczytać najwyższa odpowiedź na podany przez ciebie link uniksowy i kontynuuj testowanie tego, jak działa w twoim środowisku.) ”
Nanne

cóż, wtedy powiedziałem, że nie rozumiem, co przeczytałem. Mam dość słabą znajomość (a nawet języka, jeśli mam być szczery XD) ... więc muszę tylko próbować! ok dzięki: D
Mina Michael,

8

Wartość swapiness jest skalowana w sposób, który dezorientuje ludzi. Widzą, że ma zakres od 0 do 100, więc myślą o procentach, kiedy tak naprawdę efektywne minimum wynosi około 50.

60 oznacza w przybliżeniu nie zamieniaj, dopóki nie osiągniemy około 80% użycia pamięci, pozostawiając 20% na pamięć podręczną i tym podobne. 50 oznacza czekanie, aż zabraknie pamięci. Niższe wartości oznaczają to samo, ale wraz ze wzrostem agresywności w próbach uwolnienia pamięci innymi sposobami.

Opisz to całkiem dobrze na http://lwn.net/Articles/83588/


Co oznaczają wyższe wartości, np. 80 lub 100?
jocull

5

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.

Zobacz odpowiedź, którą napisałem na bardzo podobne pytanie:

/ubuntu//a/184221/54256

Fragment:

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.

Przeczytaj cały post na /ubuntu//a/184221/54256


0

Swappiness jest całkowicie sprzeczny z tymi wszystkimi odpowiedziami.

Prawdziwe działanie swapiness opisano w artykule: https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/

Niejasność potwierdza oświadczenie Andrew Mortona: https://lwn.net/Articles/83593/

Włożę palce do uszu i zaśpiewam „la la la”, dopóki ludzie nie powiedzą mi: „Ustawiłem zamianę na zero i nie zrobiłem tego, co chciałem”.

Mam nadzieję, że się przyda


1
Witamy w AU. Czy mógłbyś streścić kluczowe punkty wskazanego artykułu i wyjaśnić, w jaki sposób odpowiada on na pytanie, które nie ma na celu wyjaśnienia, czym jest zamiana, czy nie.
Marc Vanhoomissen
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.