Я хочу, чтобы мой компьютер автоматически переходил в спящий режим, когда ИБП переключается на батарею, поэтому мне нужно достаточно свободного пространства подкачки в любой момент. Но если я активирую раздел подкачки, даже прямо перед спящим режимом, он может быть занят страницами памяти.
Единственное решение, которое я нашел, это включить /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
Редактировать: Если вы хотите, чтобы файл подкачки был доступен после перезагрузки, просто замените случайный ключ известным ключом.