swappinessパラメーター
「swappiness」パラメーターは、スワップアウトのタイミングを調整するパラメーターです。スワップアウトとは、物理メモリー上のデータをスワップ領域に追い出す処理のことです。
物理メモリー上のデータをスワップ領域に追い出せば、その分物理メモリーの空き容量に余裕ができます。
この逆の動作、つまりスワップ領域から必要なデータを物理メモリー上に戻す処理のことを、スワップインといいます。
事前にスワップアウトを行う
「Ubuntu」では、物理メモリ―の空き容量がなくなってからスワップアウトを実行するのではなく、物理メモリ―の空き容量の状況に応じて、事前にスワップアウトを行います。これにより、物理メモリ―不足による大量のスワップアウトが集中的に発生するのを避け、システム全体のパフォーマンスが落ちにくいようになっています。
このどのタイミングでスワップアウトを実行するのかを調整するパラメーターが、「swappiness」パラメーターです。
swappinessが取りうる値
「swappiness」が取りうる値は、0〜100です。数値が小さいほど事前にスワップアウトを行いにくくなります。
逆に数値を大きくするほど、事前のスワップアウトを積極的に行うようになります。
ユーザーは「swappiness」の値を変更することができます。
スワップの利用状況を見て、値を決めると良いでしょう。
例えば普段の利用において、物理メモリ―に余裕があり、スワップ領域を利用する機会がほとんどないなら、0〜10など小さい値を設定すると良いでしょう。
swappinessのデフォルト値
「Ubuntu Desktop」では、「swappiness」のデフォルト値は「60」です。現在の「swappiness」の値は、以下のコマンドで調べることができます。
cat /proc/sys/vm/swappiness
一時的にswappinessの値を変更する
一時的に「swappiness」の値を変更するには、以下のコマンドを実行します。ここでは例として「10」を指定しています。
sudo sysctl vm.swappiness=10
PCを再起動すると、元に戻ります。
「swappiness」の適切な値を調べたい時に利用すると良いでしょう。
スワップ領域を一時的に全て無効にするには
スワップ領域を一時的に全て無効にし、スワップ上のデータを物理メモリ―に戻すには、以下のコマンドを実行します。
sudo swapoff -a
注意
物理メモリーの空きが十分にある状態で実行してください。例えば以下の状態では、スワップ領域の無効化に失敗します。
スワップ領域を全て有効にするには
スワップ領域を全て有効にするには、以下のコマンドを実行します。
sudo swapon -a
恒久的にswappinessの値を変更する
恒久的に「swappiness」の値を変更するには、「/etc/sysctl.conf」ファイルの設定を追記します。
sudo -i gedit /etc/sysctl.conf
設定ファイルに以下の記述を行います。
vm.swappiness=値
例えば値に20を指定する場合、以下のように記述します。
PCを再起動し、設定が反映されているか確認すると良いでしょう。