swappinessでシステムがスワップする頻度を設定されている。
設定可能な値のレンジは0~100で
0に近いほどスワップファイルの利用の頻度がさがる
0にすると実メモリを使い切るまではスワップしない。
デフォルトは60
現在値の確認
# cat /proc/sys/vm/swappiness
60
書き換える方法は2つ
一時的な変更か、恒久的な変更か。
一時的な変更
# set +o noclobber
# echo 10 > /proc/sys/vm/swappiness
# set -o noclobber
OS再起動までは有効。
そのままリダイレクトで書き込もうとすると怒られるので、
上書きできるようにset +o noclobberして終わったら
もどす。
恒久的なへんこう
# vi /etc/sysctl.conf
~略~
vm.swappiness = 10
デフォルトでsysctl.confにかかれてはいないので
適当なところにかく。
反映。
# sysctl -p
今回はじめて知ったこと
swappinessの値を変更しただけでは
スワップの使用率は変わらない。
すでにページアウトしてる子はそのまま。
ページインさせてあげないといけない。
# swapoff -a && swapon -a
swapon -sは/proc/swapsと同じ結果
# swapon -s
Filename Type Size Used Priority
/dev/sda1 partition 1048572 0 -1
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda1 partition 1048572 0 -1
ちょっと便利だと思ったswapの確認コマンド
#grep VmSwap /proc/*/status | sort -k 2 -r | head
/proc/1486/status:VmSwap: 956 kB
/proc/1457/status:VmSwap: 808 kB
/proc/1468/status:VmSwap: 784 kB
/proc/1157/status:VmSwap: 76 kB
/proc/1522/status:VmSwap: 68 kB
/proc/1518/status:VmSwap: 68 kB
/proc/1516/status:VmSwap: 68 kB
/proc/1514/status:VmSwap: 68 kB
/proc/1520/status:VmSwap: 64 kB
/proc/1512/status:VmSwap: 64 k
[参考]
http://qiita.com/ikuwow/items/f0b4d1f509a0b83b5d7e
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-tunables.html
https://oba-q.com/?p=2899