Какую команду можно использовать для принудительного освобождения всего раздела подкачки обратно в память?

12

Какую команду можно использовать для принудительного освобождения всего раздела подкачки обратно в память?

Предположим, что у меня достаточно памяти.

маргаритка
источник

Ответы:

19

Из этого вопроса задайте Ubuntu :

Вы также можете очистить своп, запустив его, swapoff -aа затем swapon -aот имени root вместо перезагрузки, чтобы добиться того же эффекта.

Таким образом:

$ free -tm
...
Swap:         6439        196       6243
...
$ sudo swapoff -a
$ sudo swapon -a
$ free -tm
...
Swap:         6439          0       6439
...

Как отмечается в комментарии, если у вас недостаточно памяти, swapoffэто приведет к ошибкам « нехватки памяти» и к процессам уничтожения ядра для восстановления ОЗУ.

Ренан
источник
3
Объясняя это далее, если у вас недостаточно доступной оперативной памяти, swapoffэто приведет к ошибкам нехватки памяти, и ядро ​​начнет убивать процессы, чтобы восстановить некоторые из них. Используйте это с осторожностью.
Багамат
Лучше надеяться на это; Линукс ведет себя довольно весело, когда у вас заканчивается память без активного обмена вообще ...
Шадур
1

Как уже отмечалось, простое отключение всех операций подкачки приведет к тому, что ядро ​​начнет убивать, если у него недостаточно свободной памяти. Если вы хотите избежать этого, сначала создайте второй набор свопов. Потом:

swapon /second/swap/device && swapoff /first/swap/device 
swapon /first/swap/device && swapoff /second/swap/device

Это все равно поменяется во всем, но если не хватит места, оно будет перенесено на второе устройство подкачки вместо случайного убийства. Тогда просто сдвинь все назад.

Perkins
источник
0

Один лайнер:

sudo bash -c 'swapoff -a && swapon -a'
karlingen
источник