私はこのクレイジーなアイデアを持っていて、このアプローチの落とし穴(またはデッドロックなしで動作できるかどうか)について疑問に思いました。
目標は、自動的に拡張および縮小される単一のスワップスペースを作成し、ハードドライブ全体に適した十分な容量を提供することです。ここでのパフォーマンスは大きな目標ではありません。アイデアは、メモリ使用量が過度に発生するまれな場合にバッファを提供することです。
10GBのハードドライブがあるとします。次の方法でスパーススワップファイルを生成できます(BTRFSスワップファイルの回避策から派生)。
swapfile=$(losetup -f)
truncate -s 10G /swap
losetup $swapfile /swap
mkswap $swapfile
swapon $swapfile
swapon
スパースファイルは許可されていないため、上記の作業を行う必要があります。
ここには2つの質問があります。
- 希少性は断片化を増加させ、これはパフォーマンスを低下させますが、正しく機能するのを妨げてはいけませんか?
- スパースファイルはサイズが縮小されないため、穴パンチング(https://stackoverflow.com/a/2026015/582917&https://unix.stackexchange.com/a/52029/56970)、したがって定期的に実行するか(まだ試していない)、スワップファイルに穴を開けて使用後に縮小することもでき
fallocate -d /swap
ますfallocate -d $swapfile
。
私たちは、プロセス(私にとってより重要です)がこの交換を使用する可能性を減らすように設定またはvm.swappiness = 0
作成できます。vm.swappiness = 1
最後に、指示に従って、休止状態でも動作しますか?https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file?