Как ограничить использование свопа?

Как ограничить использование свопа?

Я хочу, чтобы мой компьютер автоматически переходил в спящий режим, когда ИБП переключается на батарею, поэтому мне нужно достаточно свободного пространства подкачки в любой момент. Но если я активирую раздел подкачки, даже прямо перед спящим режимом, он может быть занят страницами памяти.

Единственное решение, которое я нашел, это включить /proc/sys/vm/swappinessи 0отключить пейджинг полностью. Но это не лучший вариант.

Можно ли указать максимальное использование подкачки в байтах?

решение1

cat /proc/sys/vm/swappiness
0

Означает, что подкачка будет избегаться, если только это не является абсолютно необходимым (RAM заполнена). Подкачка принимает значения от 0-100.

Чтобы сделать изменения постоянными, обновите /etc/sysctl.confи перезагрузите машину:

vm.swappiness = 10

Вы не можете настроить swappiness в байтах, но swappines 10означает, что swap будет использоваться, когда ОЗУ заполнено на 90%. Размер области подкачки указывается во время установки системы, вам нужно будет изменить размер разделов, чтобы изменить его. Объем, занимаемый в swap, зависит от требований к выделению ОЗУ для программного обеспечения, которое вы используете.

решение2

Единственное решение, которое я нашел, это использовать своп.файлкоторый вы можете создать любого размера, скажем, пару гигабайт, а затем смонтировать его как область подкачки.

head -c 2G /dev/urandom > your.filename

Вы можете изменить код ниже, который создаст зашифрованный файл подкачки с использованием случайного ключа. Вам, конечно, нужно будет установить переменную $filenameтам, где находится ваш файл подкачки.

filename="????"
head -c 4k /dev/urandom | sha512sum | cryptsetup open --type plain $filename /dev/mapper/swap
cryptsetup status /dev/mapper/swap
mkswap /dev/mapper/swap
swapon /dev/mapper/swap
sysctl vm.swappiness=0

Редактировать: Если вы хотите, чтобы файл подкачки был доступен после перезагрузки, просто замените случайный ключ известным ключом.

Связанный контент