Jak skonfigurować swapiness?

345

Potrzebuję krok po kroku, prostego i łatwego sposobu konfiguracji swapiness.

One Zero
źródło
17
Jeden liniowiecsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar
8
@redanimalwar musisz również uruchomić, sudo sysctl -paby załadować nową wartość swapiness z pliku sysctl.conf, w przeciwnym razie zmiana zostanie zastosowana przy następnym ponownym uruchomieniu.
waldyrious

Odpowiedzi:

509

Jądro Linux zapewnia modyfikowalne ustawienie kontrolujące częstotliwość używania pliku wymiany, zwane swappiness.

Ustawienie swapowania na zero oznacza, że ​​dysk zostanie uniknięty, chyba że będzie to absolutnie konieczne (zabraknie pamięci), a ustawienie swapowania na 100 oznacza, że ​​programy zostaną zamienione na dysk niemal natychmiast.

System Ubuntu ma domyślnie 60, co oznacza, że ​​plik wymiany będzie używany dość często, jeśli zajmie to około połowy mojej pamięci RAM. Możesz sprawdzić wartość swapiness własnego systemu, uruchamiając:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

Ponieważ mam 4 GB pamięci RAM, chciałbym zmniejszyć tę liczbę do 10 lub 15. Plik wymiany będzie wtedy używany tylko wtedy, gdy użycie pamięci RAM będzie wynosić około 80 lub 90 procent. Aby zmienić wartość swapiness systemu, otwórz /etc/sysctl.confjako root . Następnie zmień lub dodaj ten wiersz do pliku:

vm.swappiness = 10

Uruchom ponownie, aby zmiana zaczęła obowiązywać.

Możesz także zmienić wartość, gdy system nadal działa z:

sysctl vm.swappiness=10

Możesz również wyczyścić swap, uruchamiając go, swapoff -aa następnie swapon -ajako root zamiast restartu, aby osiągnąć ten sam efekt.

Aby obliczyć formułę wymiany:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

więc suma wynosi 3950/100 = 39,5 * 10 = 395

Oznacza to, że kiedy pozostanie 10% (395 MB) pamięci RAM, zacznie używać swap.


                                          Wsparcie . Ubuntu. Zamiana

                                           Czym jest zamiana

Parametr swappiness kontroluje tendencję jądra do przenoszenia procesów z pamięci fizycznej na dysk wymiany. Ponieważ dyski są znacznie wolniejsze niż pamięć RAM, może to prowadzić do dłuższych czasów reakcji systemu i aplikacji, jeśli procesy zostaną zbyt agresywnie usunięte z pamięci.

  • swappiness może mieć wartość od 0 do 100.
  • swappiness=0:
    • Jądro wersja 3.5 i nowsze: wyłącza zamianę.
    • Wersja jądra starsza niż 3.5: unika zamiany procesów poza pamięć fizyczną tak długo, jak to możliwe.
  • swappiness=1:
    • Jądro w wersji 3.5 i nowszej: minimalna zamiana bez całkowitego wyłączenia.
  • swappiness=100:
    • Informuje jądro, aby agresywnie zmieniało procesy poza pamięć fizyczną i przenosi je do zamiany pamięci podręcznej.

Zobacz http://en.wikipedia.org/wiki/Swappiness .

Domyślne ustawienie w Ubuntu to swappiness=60. Zmniejszenie domyślnej wartości swapiness prawdopodobnie poprawi ogólną wydajność typowej instalacji pulpitu Ubuntu. Wartość swappiness=10jest zalecana, ale możesz eksperymentować.


Przykład

Zaczął używać swap na 91% :

wprowadź opis zdjęcia tutaj Ponieważ skonfigurowałem mój system i VM do korzystania z pamięci RAM w 90% , przy 90% nie było wymiany.

Potem otworzyłem niektóre aplikacje, takie jak Firefox i Shutter, i zaczęło się zamieniać, ponieważ użycie pamięci RAM przekracza 90% .

One Zero
źródło
118
Zamiana 100 nie powoduje natychmiastowej zamiany programów, a wartość 60 lub 90 oznacza, że ​​zamiana nie jest wykorzystywana, gdy RAM jest zapełniony w 60 lub 90%. Jest to stosunek preferencji do kradzieży stron z pamięci podręcznej w porównaniu do zamiany rzeczy w celu zwolnienia pamięci, gdy jest jej za mało. Niska wartość zdecydowanie preferuje kradzież stron z pamięci podręcznej, a wysoka wartość zdecydowanie woli próbować zamienić strony. Ustawienie ma jakikolwiek efekt, gdy pamięć zostanie (prawie) całkowicie wykorzystana, a jądro musi wybrać sposób zwolnienia części.
psusi
67
Należy zauważyć, że pamięć RAM, która NIE jest zajęta przez uruchomione programy, jest używana jako pamięć podręczna dysku ... więc zmniejszając swapiness, zwiększasz szansę, że program nie zostanie zamieniony, ale jednocześnie zmniejszysz rozmiar pamięci podręcznej dysku, co może spowolnić dostęp do dysku. Więc wpływ tego ustawienia na rzeczywistą wydajność nie jest tak prosty ... oczywiście możesz eksperymentować, ale podejrzewam, że wartości domyślne są ustawiane przez ludzi, którzy rozumieją wystarczająco dużo w temacie :)
Sergey
14
@Sergey i ironia polega na tym, że osoby z małą pamięcią RAM najprawdopodobniej spróbują każdej sztuczki, na jaką mogą się natknąć, aby zwiększyć wydajność i częściej są to osoby, dla których 60 lub więcej byłoby najlepszą liczbą. Ci z nas, którzy ustawią go na 10, ponieważ mamy tony pamięci RAM, nie zdobędą tyle, ile stracą, jeśli to zrobią.
Jon Hanna,
6
@Freedom_Ben: Patrz linuxatemyram.com :)
Sergey
5
Pozostawiam tutaj podobną dyskusję - unix.stackexchange.com/questions/88693/...
Elijah Lynn