■ 用語整理
スワップ領域
* 実メモリが枯渇した場合、一時的にハードディスクに退避するための領域 => ただし、実メモリと比較すると、格段に遅い
スワップアウト(swap-out)
* メモリからハードディスクに退避する動作
スワップイン(swap-in)
* メモリからハードディスクに書き戻す動作
■ スワップ領域の作成
設定環境
* OS : CentOS7
設定手順
0) 現状確認0-1) コマンド「swapon -s」「free -m」で、Swapが設定されているか確認する ~~~~~~~ swapon -s # ★ 特に何も表示されていなければ、Swap領域は設定されていない free -m total used free shared buff/cache available Mem: 1823 1553 77 3 192 69 Swap: 0 0 0 <= ★ total が「0」なら、Swap領域は設定されていない ~~~~~~~ 0-2) コマンド「df -h」で、使用可能なハードディスク領域を確認する ~~~~~~~ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 18G 11G 7.4G 58% / <= ★ 残り領域「7.4G」を確認 devtmpfs 897M 0 897M 0% /dev tmpfs 912M 2.1M 910M 1% /dev/shm tmpfs 912M 9.0M 903M 1% /run ・・・略・・・ ~~~~~~~1) Swap領域作成
1-1) コマンド「dd」で、ファイルを作成する ~~~~~~~ sudo dd if=/dev/zero of=/swapfile bs=1MiB count=2048 ~~~~~~~ 1-2) コマンド「ls -lh」で、確認 ~~~~~~~ ls -lh /swapfile -rw-r--r--. 1 root root 2.0G 1月 10 22:59 /swapfile ~~~~~~~ 1-3) コマンド「chmod」でアクセス権を設定 ~~~~~~~ sudo chmod 600 /swapfile # 確認 ls -lh /swapfile -rw-------. 1 root root 2.0G 1月 10 22:59 /swapfile ~~~~~~~ 1-4) コマンド「mkswap」でSwap領域を作成する ~~~~~~~ sudo mkswap /swapfile スワップ空間バージョン1を設定します、サイズ = 2097148 KiB ラベルはありません, UUID=8150d9f0-af2c-4s67-a34s-de42ed23a32e ~~~~~~~ 1-5) コマンド「swapon」でSwap領域を有効化する ~~~~~~~ sudo swapon /swapfile ~~~~~~~ 1-6) コマンド「swapon -s」「free -m」でSwap領域を確認する ~~~~~~~ swapon -s Filename Type Size Used Priority /swapfile file 2097148 0 -1 free -m total used free shared buff/cache available Mem: 1823 1291 70 3 461 322 Swap: 2045 0 2045 ~~~~~~~2) Swap領域の永続化
2-1) 「/etc/fstab」を修正し、Swap領域の永続化する ~~~~~~~ sudo vi /etc/fstab で、最終行に以下を記入 /swapfile swap swap sw 0 0 ~~~~~~~【任意設定】3) swappiness(メモリスワップの度合いを調整)
3-1) swappinessを確認するためにコマンド「cat /proc/sys/vm/swappiness」を実行する ~~~~~~~ cat /proc/sys/vm/swappiness 30 ~~~~~~~ 3-2) コマンド「sysctl vm.swappiness=【設定値(0から100)】」でswappinessを変更する ~~~~~~~ sudo sysctl vm.swappiness=10 cat /proc/sys/vm/swappiness 10 ~~~~~~~ 3-3) カーネルパラメータを設定する為の設定ファイル「/etc/sysctl.conf」を修正 ~~~~~~~ sudo vi /etc/sysctl.conf で、最終行に以下を記入 vm.swappiness = 10 ~~~~~~~【任意設定】4) vfs_cache_pressure(説明は以下のサイト参照)
https://qiita.com/komeda-shinji/items/c76a5f75b959e4152f91
4-1) vfs_cache_pressureを確認するためにコマンド「cat /proc/sys/vm/vfs_cache_pressure」を実行する ~~~~~~~ cat /proc/sys/vm/vfs_cache_pressure 100 ~~~~~~~ 4-2) コマンド「sysctl vm.vfs_cache_pressure=【設定値(0~)】」でvfs_cache_pressureを変更する ~~~~~~~ sudo sysctl vm.vfs_cache_pressure=50 cat /proc/sys/vm/vfs_cache_pressure 50 ~~~~~~~ 4-3) カーネルパラメータを設定する為の設定ファイル「/etc/sysctl.conf」を修正 ~~~~~~~ sudo vi /etc/sysctl.conf で、最終行に以下を記入 vm.vfs_cache_pressure = 50 ~~~~~~~
■ スワップ領域の削除
簡単!!1) コマンド「swapoff」でSwap領域を無効化する ~~~~~~~ sudo swapoff /swapfile ~~~~~~~ 2) コマンド「rm」でSwap領域を削除する ~~~~~~~ sudo rm /swapfile ~~~~~~~