Jak skonfigurować swapiness w Linux Memory Management?

11

Parametr swappiness kontroluje tendencję jądra do przenoszenia procesów z pamięci fizycznej na dysk wymiany. Jakie jest ustawienie domyślne i jak je skonfigurować, aby poprawić ogólną wydajność ?

GAD3R
źródło
3
Po zmianie zamiany uznałem za użyteczne opróżnienie zamiany i swapoff -arozpoczęcie od nowa. serverfault.com/a/354384/203035
Nemo

Odpowiedzi:

10

Jądro Linux zapewnia modyfikowalne ustawienie kontrolujące zamianę

$ cat /proc/sys/vm/swappiness
60  

otwórz /etc/sysctl.confjako root. Następnie zmień lub dodaj ten wiersz do pliku:

vm.swappiness = 10

w celu zmiany wartości zamiany tymczasowo wypróbuj to polecenie:

$ echo 50 > /proc/sys/vm/swappiness
Kundel
źródło
1
Jak odpowiada „jak to skonfigurować, aby poprawić ogólną wydajność?”
techraf
Zamiana jest konieczna, gdy wydajność twojego systemu jest powolna, ponieważ dzieje się tak, gdy kończy się użyteczna pamięć RAM, co spowolniłoby twój system (być może nawet awarię aplikacji), nawet gdybyś nie miał zamiany. Tak więc, aby uprościć rzeczy, zamiana ma miejsce, ponieważ system jest zapchany, a nie na odwrót - w niektórych przypadkach może to uratować dzień.
Kundel
2
Czy nie musisz też sudo sysctl -p /etc/sysctl.confwprowadzać zmian?
pkaramol
11

Z Swappiness, Wikipedia

Możesz ustawić tę wartość w pliku wirtualnym/proc/sys/vm/swappiness Wspomniana wartość decyduje o sposobie wykorzystania przestrzeni wymiany, poniżej znajdują się wartości z ich przeznaczeniem.

vm.swappiness = 0   # Swap is disabled. In earlier versions, this meant that the kernel would swap only to avoid an out of memory condition, but in later versions this is achieved by setting to 1.
vm.swappiness = 1   # Kernel version 3.5 and over, as well as kernel version 2.6.32-303 and over: Minimum amount of swapping without disabling it entirely.
vm.swappiness = 10  # This value is sometimes recommended to improve performance when sufficient memory exists in a system, this value *10* could be considered for the performance being expected. 
vm.swappiness = 60  # The default value.
vm.swappiness = 100 # The kernel will swap aggressively.

Chociaż w rzeczywistości zależy to również od potrzeby, jeśli dostępna pamięć fizyczna jest wystarczająca, może nie być wielkiej potrzeby wymiany przestrzeni, w rozumieniu Laika nie będzie potrzeby zmiany domyślnej wartości 60.

Keyshov Borate
źródło
@techraf zaktualizował odpowiedź.
Keyshov Borate
1
W maszynach wirtualnych radzę jednak na wszelki wypadek zmienić go na 10.
Rui F Ribeiro
2

W RedHat / CentOS wartością domyślną jest 60.
„W celu poprawy wydajności” jest bardzo szerokim pojęciem. Jaką wydajność próbujesz poprawić?

Czy masz problemy z brakiem pamięci?
Czy Twój system zamienia się, gdy wciąż jest wolna pamięć / pamięć podręczna?

W Linuksie wolna pamięć RAM = zmarnowana pamięć RAM, więc prawie cała wolna pamięć jest używana do buforowania dysków.
Zdarzają się przypadki z zamianą = 60, w których strony w pamięci są przenoszone do SWAP, jeśli nie były dostępne przez dłuższy czas, bez względu na to, że masz nieprzydzieloną pamięć RAM.
Przeniesienie niektórych stron pamięci do SWAP nie jest konieczną złą rzeczą.

Rzuć nieco więcej światła na swój problem, aby uzyskać bardziej szczegółową odpowiedź.

fireto
źródło