Jak mogę na stałe wyłączyć swap?


64

Zamiana powoduje, że mój system jest powolny, a wyłączenie go sprawia, że ​​wszystko jest płynniejsze. Mam 3,5 GB pamięci RAM.

Wiem, jak wyłączyć swap, wchodząc sudo swapoff -ado terminalu, ale to tylko dla bieżącej sesji, ponieważ po ponownym uruchomieniu swap ponownie się włącza. Czy jest jakiś sposób, aby na stałe wyłączyć swap?


2
AFAIK swap służy do hibernacji. Tylko
— mówię

1
Tak, ale nadal można z niego korzystać. Mam mały skrypt, który montuje partycję wymiany, gdy system przechodzi w stan hibernacji i odinstalowuje ją po powrocie. Tymczasem plik wymiany nie musi być aktywny.
— animaletdesequia

Po prostu umieść swapoff -a w /etc/rc.local i zapomnij o tym ...;)
— user264467

1
@ user264467: pozostawienie opcji swap włączonej jest po prostu sprzeczne z intuicją, aby wyłączyć ją przy każdym ponownym uruchomieniu, o wiele czystsze jest wyłączenie jej na stałe.
— karatedog

Odpowiedzi:


119

Czy mogę zasugerować bezpieczniejsze podejście? Nigdy nie wiadomo, kiedy swap może uchronić Cię przed awarią. Podczas gdy zamiana rzeczywiście spowalnia komputer, jeśli korzystasz z programu, który zużywa całą pamięć RAM, możliwość zamiany może uratować Cię przed ciężkim ponownym uruchomieniem komputera. Gdy komputer zacznie zamieniać, zauważysz i będziesz mógł zabić szkodliwą aplikację.

Zamiast całkowicie wyłączać swap, upewnij się, że system operacyjny zamienia się bardzo rzadko. Jest to kontrolowane przez vm.swappinessustawienie w /etc/sysctl.conf. Domyślne ustawienie Ubuntu to, 60jeśli dobrze pamiętam, co jest zbyt duże w większości sytuacji i spowoduje, że zaczniesz zamieniać, nawet jeśli pamięć RAM jest nadal dostępna. Jeśli zmniejszysz tę wartość, będziesz w stanie utrzymać linię bezpieczeństwa wymiany, używając go tylko w nagłych wypadkach. Więc otwórz plik:

sudo nano /etc/sysctl.conf

I dodaj do niego ten wiersz:

vm.swappiness=10

Jeśli to wciąż za dużo, zmień 10 na 1. Teraz po ponownym uruchomieniu zamienisz tylko wtedy, gdy jest to absolutnie konieczne i możesz po prostu zapomnieć o tym.


Uwielbiam zmieniać swapiny i nie robiłem tego od lat. Dzięki za przypomnienie. sudo upvote turdon!
— Darth Egregious

16
Wystarczy dodać do argumentu „bezpieczniejsze podejście”: gdy nie ma wymiany, a systemowi kończy się pamięć, wywoływany jest zabójca Linux OOM (Out Of Memory). To wybiera proces na podstawie wyniku „złego”, a następnie ... zabija go (kończy, zamyka) bez żadnej szansy, że aplikacja zapisze zmiany, wyczyści itp. Tak więc, jeśli wyłączysz swap i skończy się pamięci, bardzo dobrze ryzykujesz utratę pracy, jeśli ważne procesy słabo oceniają się w oczach zabójcy OOM. Dlatego powinieneś wyłączyć swap tylko wtedy, gdy masz pewność , że nigdy nie zabraknie ci pamięci.
— Reid

5
@ Reid warto zaznaczyć, że oczywiście to samo stanie się, jeśli zabraknie Ci także przestrzeni wymiany.
— o0 ”.

11
To tak naprawdę nie odpowiada na pytanie. Całkowite wyłączenie wymiany może mieć sens w systemie z 16 GB lub 32 GB pamięci RAM. Kilka dodatkowych GB wymiany nie przyniesie nic dobrego w przypadku aplikacji zużywających pamięć, podczas gdy duża ilość wymiany (np. 20 GB) zajmie dużo miejsca na dysku twardym / dysku SSD. Ponadto hibernacja z 32 GB pamięci RAM nie jest fajna .
— jmiserez

7
W przypadku niektórych konfiguracji, jak tylko skończy się fizyczna pamięć RAM i rozpocznie się zamiana, system zaczyna „ssać błoto” i staje się bezużyteczny. Tak, teoretycznie możesz wejść i zabić sprawcę, ale kiedy zmiana celu w interfejsie użytkownika zajmuje ponad 20 minut, a jeszcze dłużej, aby uzyskać hasło za pośrednictwem SSH, OOMing jest najlepszą opcją (po czym następuje uruchom ponownie, a następnie wejdź i napraw problem).
— BCS,

46

Znajdź wiersz w / etc / fstab odnoszący się do wymiany i skomentuj go. Mój jest taki:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

Możesz edytować ten plik za pomocą gedit. Najpierw wykonaj kopię zapasową, na wszelki wypadek:

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Wystarczy dodać # na początku wiersza, w którym znajduje się zamiana, i ponownie uruchom komputer.

LUB

Wypróbuj sposób wiersza polecenia komentowania pozycji wymiany w /etc/fstabpliku,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Rozumiem to, piszącgksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
— Alex Li

1
Więc rób, co on mówi. Skomentuj pierwszy wiersz, który odnosi się do „zamiany”. : P
— cHao

13

Po prostu usuń wpis (lub skomentuj go za pomocą # przed linią) z fstab i uruchom ponownie. Poszukaj linii ze słowem „zamień”.

sudo nano /etc/fstab

10
Ten też by działał, ale myślę, że lepiej jest komentować wiersz niż całkowicie go usunąć, na wypadek, gdybyś chciał cofnąć zmiany.
— animaletdesequia

1
Zredagowałem swój post.
— mdalacu

11

Źle ... jeśli systemd znajdzie partycję SWAP na dowolnym dysku, i tak ją automatycznie zamontuje. Dziwne, że nikt nie wspomniał o systemd. Rozwiązanie i tak jest dość proste; aby trwale wyłączyć swap, musisz:

  1. zamiana -a
  2. edytuj / etc / fstab i komentuj wszelkie wpisy wymiany, jeśli są obecne.
  3. run: sudo systemctl mask dev-sdXX.swap (gdzie XX jest partycją wymiany. Przydatne jest również, aby zrobić to dla wszystkich możliwych partycji, aby w przypadku partycji wymiany na innym dysku nie została zamontowana)

Pokój na zewnątrz.


numer 3 do wygrania !!
— oneklc
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.