Zużywanie swapu przy wolnym ramie

Zombie
zarządzanie, optymalizacja
NNorbertPL
NNorbertPL

Witam, nie wiem czy dobrze robię pisząc o tym na forum LVLUP ale mam mały problem, zaczęło mi dzisiaj zjadać SWAP zamiast ramu.. SS z komendy htop

667x500

Wie ktoś może dlaczego? Po wzięciu całego swapu zaczęło dopiero brać ram. Nw może to jednorazowa sytuacja. Przez cały poprzedni miesiąc było wszystko ok.

Timo
Timo Moderator forum.lvlup.pro

Jaki masz poziom tzw. swapiness twojego swapu? Bo to jakoś tak działa im niższy poziom dasz (domyślny chyba 10, jest 0-100) tym w 'drastyczniejszych' sytuacjach będzie używany.

NNorbertPL
NNorbertPL

Wartość ta jest ustawiona na 60, lecz przy 25gb nie powinno brać do swapu. Tak jak mowie byly przypadki gdy bralo 29gb a swap byl pusty. Na ile ustawić tą wartość?

Timo
Timo Moderator forum.lvlup.pro

Jeśli masz dysk SSD, to wartość 10 będzie odpowiednia - założenie swapu jest takie, by był jako awaryjny ram, a nie jako normalny ram ;) W przypadku swapu na HDD ustaw z 5.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Nie wygląda to jakoś bardzo nienormalnie, po prostu pewnie już wcześniej było mało ramu to szło w swap ;)

NNorbertPL
NNorbertPL

Jest to SSD. Ustawiłem na 20 i będę obserwował sytuację. Dziękuję za pomoc :slight_smile:

SystemZ
SystemZ Admin lvlup.pro

Najwidocznie kernel wyliczył że spora część tego co masz w RAMie nie jest za bardzo używana i wolny RAM bardziej przyda się na inne rzeczy, cache czy bufor. Jeśli wydajność jest okej to nie musisz nic zmieniać.

Jeśli wydajność się obniża to możesz zmniejszać parametr swappiness dla kernela nawet do wartości 1. Najlepiej robić to stopniowo np. co dzień czy dwa obserwując zachowanie i wydajność serwera i zmieniać tą wartość o 1-5 punktów.

Jak zmienić ten parametr?

Tu damy przykładowo wartość 10

Chwilowo

Czyli do czasu restartu, po restarcie wróci do domyślnego ustawienia (zapewne 60)

echo 10 > /proc/sys/vm/swappiness

Na stałe

Gdy już wymierzymy co nam odpowiada ustawiamy na stałe w pliku /etc/sysctl.conf, dodając tą linię na dole.

vm.swappiness = 10
NNorbertPL
NNorbertPL

Wydajność była na akceptowalnym poziomie. Wartość zmieniłem na 20 i jest bez problemu. Jeszcze raz dziękuję za pomoc. 😉