Czy zmiana zamiany wymaga ponownego uruchomienia?

14

Jeśli skonfiguruję wartość zamiany na inną, np. 60 na 0, to zawsze muszę ponownie uruchomić komputer, aby zmiany zostały wprowadzone? Nawet podczas modyfikacji za pomocą:

sysctl -w vm.swappiness=0
evachrystyna
źródło

Odpowiedzi:

25

Wszystko zostało dobrze wyjaśnione na podanej stronie Wikipedii.

# Set the swappiness value as root
echo 10 > /proc/sys/vm/swappiness

# Alternatively, run this as a non-root user
# This does the same as the previous command
sudo sysctl -w vm.swappiness=10

# Verify the change
cat /proc/sys/vm/swappiness
10

W tym momencie system będzie zarządzał wymianą tak, jak właśnie ją skonfigurowałeś, ALE jeśli uruchomisz ponownie TERAZ, twoja zmiana zostanie zapomniana, a system będzie pracował z wartością domyślną (zakładając 60, co oznacza, że ​​zacznie zamieniać przy 40% zajęcie pamięci RAM).

Musisz dodać poniższy wiersz, /etc/sysctl.confaby trwale wprowadzić zmiany:

vm.swappiness = 10

Mam nadzieję, że teraz jest to dla ciebie bardziej jasne!

tisc0
źródło
Interesujące jest to, że -wprzełącznik ma zapisać zmianę. Można by pomyśleć, że po napisaniu tego, dodanie domyślnej linii w sysctl.conf nie byłoby konieczne.
WEBjuju
Cześć WEBjuju, Masz rację, przełącznik nadal nie działa dla mnie (fedora 25 lub centos 7). Nie jest to wtedy potrzebne, ponieważ zmiana wartości na żywo w pliku / proc odbywa się bez względu na to.
tisc0
7

musisz ponownie uruchomić komputer, aby zmiany zostały wprowadzone?

Wręcz przeciwnie - ponowne uruchomienie spowoduje zresetowanie zamiany do wartości domyślnej. Aby utrzymywał się podczas ponownego uruchamiania, musisz dołączyć dyrektywę do skryptu rozruchowego lub użyć metody zalecanej w artykule na Wikipedii, dodając:

vm.swappiness = ??

Do /etc/sysctl.conf(lub /etc/sysctl.dpliku), gdzie ??jest wartość, której chcesz użyć. Pamiętaj, że samo dodanie tego nie spowoduje żadnych zmian w tym czasie.

Złotowłosa
źródło
1

Przyjęta odpowiedź jest poprawna, ale zaleca się użycie osobnego pliku konfiguracyjnego „sysctl”, aby przypadkowo nie zastąpić innych ustawień (co może się zdarzyć, jeśli zastąpisz globalny plik „sysctl.conf”).

# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf

Ci, którzy już zmodyfikowali globalny plik konfiguracyjny „/etc/sysctl.conf”, mogą chcieć usunąć linie określające tę wartość „swapiness” z tego pliku. Możesz użyć tego polecenia, aby usunąć te wiersze z globalnego pliku konfiguracyjnego (zachowując komentarze):

# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf

Teraz, aby zastosować nową wartość, powiedz, sysctlaby jej użyć:

# sysctl -p /etc/sysctl.d/swappiness.conf

Lub zastosuj wszystkie ustawienia, w tym swapiness:

# sysctl -p /etc/sysctl.d/*

Sprawdź to:

# sysctl vm.swappiness
vm.swappiness = 10
podstawowy 6
źródło
Uzgodnione, jest to najlepsza praktyka, dzięki której wszystko staje się jaśniejsze i bezpieczniejsze. Dobry nawyk także podczas korzystania z narzędzia do zarządzania konfiguracją.
tisc0
1

Okazało się, że na komputerze CentOS , ten vm.swappinesszestaw był w /usr/lib/tuned/virtual-guest/tuned.conf.

Określić, gdzie domyślna jest ustawiona patrząc przez tunedpliki konfiguracyjne :

sudo grep -R swap /usr/lib/tuned | grep swappiness

Po zaktualizowaniu domyślnej bieżącej zamiany można nadal ustawić bez ponownego uruchamiania :

sudo sysctl vm.swappiness=10

i przetestowane przez:

cat /proc/sys/vm/swappiness
WEBjuju
źródło
1
/etc/tuned/tuned-main.conf (RHEL7) ma ustawienie, które pozwala /etc/sysctl.conf, /etc/sysctl.d itp., aby zastąpić ustawienia zastosowane przez tuning (tj. reapply_sysctl = 1). Przynajmniej przy mojej instalacji jest to ustawienie domyślne.
kbulgrien
0

Użytkownik zmienia się sysctlzgodnie z konwencją na pliki z prefiksem, 60-więc nazwa pliku powinna być /etc/sysctl.d/60-swappiness.conf. Wykonaj service procps startjako root, aby wymusić ponowne odczytanie wartości konfiguracyjnych (ponowne uruchomienie nie jest konieczne).

Doug Munch
źródło