スワップの使用を制限するにはどうすればいいですか?

スワップの使用を制限するにはどうすればいいですか?

UPS がバッテリーに切り替わるときにコンピューターが自動的に休止状態になるようにしたいので、いつでも十分な空きスワップ領域が必要です。しかし、休止状態の直前であっても、スワップ パーティションをアクティブにすると、メモリ ページによって占有される可能性があります。

/proc/sys/vm/swappiness私が見つけた唯一の解決策は、0ページングを完全に無効にすることです。しかし、これは最善の選択肢ではありません。

最大スワップ使用量をバイト単位で指定することは可能ですか?

答え1

cat /proc/sys/vm/swappiness
0

絶対に必要な場合 (RAM がいっぱいの場合) を除き、スワッピングが回避されることを意味します。swappiness は から までの値を取ります0-100

変更を永続的に更新し/etc/sysctl.confてマシンを再起動するには、次の手順を実行します。

vm.swappiness = 10

swappiness をバイト単位で設定することはできませんが、swappines は10RAM が 90% 使用されている場合に swap が使用されることを意味します。swap 領域のサイズはシステムのインストール時に指定されますが、それを変更するにはパーティションのサイズを変更する必要があります。swap で占有される量は、実行しているソフトウェアの RAM 割り当て要件によって異なります。

答え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

編集: 再起動後にスワップにアクセスできるようにするには、ランダム キーを既知のキーに置き換えるだけです。

関連情報