Як я можу назавжди вимкнути своп?


64

Заміна робить мою систему все млявою, а її вимкнення робить все більш гладким. У мене є 3,5 ГБ оперативної пам’яті.

Я знаю, як вимкнути swap, ввівши sudo swapoff -aв термінал, але це лише для поточного сеансу, тому що після перезавантаження swap знову вмикається. Чи є спосіб назавжди вимкнути своп?


2
AFAIK своп використовується для сплячки. Щойно
говорять

1
Так, але це все ще можна використовувати. У мене є невеликий сценарій, який монтує розділ swap, коли система переходить у сплячку, і не знімає його, коли він повертається. Файл swap тим часом не повинен бути активним.
animaletdesequia

Просто поставте swapoff -a в /etc/rc.local і забудьте про це ...;)
user264467

1
@ user264467: супутньо протизаконне залишати функцію swap лише для того, щоб вимкнути її при кожному перезавантаженні, набагато чистіше відключити її постійно.
karatedog

Відповіді:


119

Чи можу я запропонувати більш безпечний підхід? Ви ніколи не знаєте, коли своп може врятувати вас від збоїв. Хоча заміна дійсно сповільнює ваш комп'ютер, якщо ви використовуєте програму, яка з'їдає всю вашу оперативну пам’ять, можливість переключення може врятувати вас від жорсткої перезавантаження. Коли комп’ютер почне обмінюватися, ви помітите і зможете вбити злочинну програму.

Отже, замість того, щоб взагалі вимикати swap, просто переконайтеся, що ваша ОС змінюється дуже рідко. Це контролюється vm.swappinessналаштуваннями в /etc/sysctl.conf. Установка за замовчуванням Ubuntu - це, 60якщо я правильно пам'ятаю, що занадто багато для більшості ситуацій, і змусить вас почати мінятись, навіть поки оперативна пам'ять все ще доступна. Якщо ви зменшите це значення, ви зможете зберегти лінію безпеки своп, використовуючи його лише в надзвичайних ситуаціях. Отже, відкрийте файл:

sudo nano /etc/sysctl.conf

І додайте до нього цей рядок:

vm.swappiness=10

Якщо це все-таки занадто багато, змініть 10 на 1. Тепер, після перезавантаження, ви будете міняти місцями лише тоді, коли це абсолютно необхідно, і ви можете просто забути про це.


Я люблю міняти своппіни, і цього не роблю за роки. Дякуємо за нагадування. sudo upvote turdon!
Дарт Егрегійний

16
Просто для додання аргументу "безпечнішого підходу": Коли у вас немає підкачки, а у системи не вистачає пам'яті, вводиться вбивця Linux OOM (Out Of Memory). Це вибирає процес, що базується на оцінці "поганості", а потім ... вбиває його (припиняє, закриває), не маючи шансів у додатку зберегти його зміни, очистити і т. Д. Таким чином, якщо ви вимкнете своп і закінчите пам'яті, ви дуже добре ризикуєте втратити роботу, якщо важливі процеси погано потрапляють в очі убивці ООМ. Таким чином, ви можете відключити своп лише у тому випадку, якщо ви впевнені, що у вас ніколи не залишиться пам'яті.
Рейд

5
@Reid варто зазначити, що, очевидно, те саме саме відбудеться, якщо у вас теж не вистачить місця.
o0 '.

11
Це фактично не відповідає на питання. Відключення swap взагалі може мати багато сенсу в системі з 16 ГБ або 32 ГБ оперативної пам’яті. Кілька додаткових ГБ свопів не принесуть користі у випадку використання програм пам'яті, тоді як великий обмін (наприклад, 20 Гб) займе багато місця на жорсткому диску / SSD. Крім того, зимування з 32 ГБ оперативної пам’яті не є цікавим .
jmiserez

7
Для деяких налаштувань, як тільки у вас закінчується фізична оперативна пам’ять і починає мінятися, система починає «смоктати грязь» і стає непридатною. Так, теоретично ви можете зайти і вбити злочинця, але коли потрібно змінити фокус в інтерфейсі і ще довше, щоб отримати запит на введення пароля через SSH, потрібно 20+ хвилин, найкращим варіантом (з наступним жорстким рішенням) стає OOMing перезавантажити, після чого ввійти та виправити проблему).
BCS

46

Знайдіть рядок у / etc / fstab, що посилається на своп, і прокоментуйте його. Моя така:

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

Ви можете редагувати цей файл за допомогою gedit. Спершу створіть резервну копію, про всяк випадок:

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

Просто додайте # на початок рядка, де знаходиться swap, і перезавантажте комп'ютер.

АБО

Спробуйте за допомогою командного рядка коментувати заміну /etc/fstabфайлу у файлі,

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

Я отримую це, коли набираю текстgksu 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
Алекс Лі

1
Отже, роби те, що він говорить. Прокоментуйте перший рядок, який посилається на "своп". : P
cHao

13

Просто видаліть запис (або прокоментуйте його за допомогою # перед рядком) з fstab та перезавантажте. Шукайте рядок зі словом "swap" у ньому.

sudo nano /etc/fstab

10
Цей також буде працювати, але я вважаю, що краще коментувати рядок, а не видаляти її повністю, на випадок, якщо ви хочете відновити зміни.
animaletdesequia

1
Я відредагував своє повідомлення.
mdalacu

11

Неправильно .. якщо systemd знайде розділ SWAP на будь-якому диску, він все одно автоматизує його. Дивно, що ніхто не згадував systemd. Рішення все-таки досить просте; щоб назавжди вимкнути своп, потрібно:

  1. swapoff -a
  2. редагуйте / etc / fstab і коментуйте будь-які записи своп, якщо вони є.
  3. запустити: sudo systemctl маска dev-sdXX.swap (де XX є розділом swap. Також корисно робити це для всіх можливих розділів, щоб, якщо є розділ swap на будь-якому іншому диску, він не буде змонтований)

Бувай.


номер 3 за виграш !!
oneklc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.