LinuxのSwap領域
Swapとは、Linuxカーネルがメモリのあふれ先として使用するディスク領域のことです。使用頻度の低いメモリページをそこに移動させることで、アクティブな作業のためにRAMを空けておけます。専用パーティションまたはSwapファイルとして存在し、free -hコマンドやswapon --showコマンドで確認できます。
1Swapが依然として有用な理由
十分なRAMがある場合でも、Swapがあればカーネルはアイドル状態のページをメモリ外へ移動でき、Out-of-Memory Killerがプロセスを停止させる前のバッファとして機能します。ただし、頻繁に激しいスワップが発生する場合は、マシンのRAMを増設するか、ワークロードを減らす必要があります。
2Swappiness
カーネル設定のvm.swappiness(0〜200、デフォルトは60)は、ファイルキャッシュを破棄するのと比較して、カーネルがどの程度積極的にスワップを行うかに影響します。値を低くすると、アプリケーションのメモリがRAM内に長く保持されます。値の確認には sysctl vm.swappiness を使用し、永続的な設定は /etc/sysctl.d/ 以下のファイルで行います。
3Swapファイル
Swapファイルは作成後に mkswap でフォーマットし、swapon で有効化します。再起動後も有効にするには /etc/fstab に追記します。パーミッションは 600 に設定する必要があります。
2 GBのSwapファイルを追加する方法
- ファイルを作成:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 - アクセス権を制限:
sudo chmod 600 /swapfile - フォーマット:
sudo mkswap /swapfile - 有効化:
sudo swapon /swapfile - 永続化: '/swapfile none swap sw 0 0' という行を
/etc/fstabに追加する - 確認:
swapon --showおよびfree -h
注意点
- Btrfs上でSwapファイルを使用するには特別な準備(コピーオンライトの無効化)が必要です。各ディストリビューションのガイドに従ってください。
/etc/fstabの記述を誤るとシステムが起動しなくなる可能性があるため、再起動前に必ず行を確認してください。
関連記事
- df (disk free)dfコマンドの出力の読み方、一般ユーザーにおいてAvailがゼロになる前にUse%が100%に達する理由、およびdf -iを使用してinodeを確認する方法について解説します。
- systemd ユニットと systemctlsystemd ユニットの概要、一般的なユニットタイプ、および systemctl を使用してサービスを開始、停止、有効化、確認する方法について解説します。
- du および ncdu を使用したディスク使用量の確認Linux ディスクを圧迫している原因を、du および対話型の ncdu を使用して特定する方法を解説します。同一ファイルシステム内に留まるオプションについても説明します。
出典
- swapon(8) man7.org
- mkswap(8) man7.org
- free(1) man7.org
- /proc/sys/vm に関するドキュメント (kernel.org) kernel.org
最終確認: