web-dev-qa-db-ja.com

RHELがvm.swappiness = 1の場合でもスワップを使用するのはなぜですか?

RHEL 7.2のメモリ使用量、free -m

              total        used        free      shared  buff/cache   available
Mem:         386564       77941       57186         687      251435      306557
Swap:         13383        2936       16381

使用済みスワップは2936Mであることがわかります

次のように最小値に減らしたい

echo 1 > /proc/sys/vm/swappiness

sysctl -w vm.swappiness=1

echo "vm.swappiness = 1" >> /etc/sysctl.conf

10分後、もう一度チェックしますが、それでもOSはスワップを使用しました

free -m

              total        used        free      shared  buff/cache   available
Mem:         386564       77941       57186         687      251435      306557
Swap:         13389        2930       16381

なぜ私たちがしなかった行動が即座に影響を与えるのでしょうか?

スワップを0にするには、OSを再起動する必要がありますか?

vmstatを実行します:

 vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0  85740 20255872 2238248 183126400    0    0     7   162    0    0  7  1 92  0  0

vm.swappiness = 1を減らします

10分後にvmstatを実行します。

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0  85740 20255872 2238248 183126400    0    0     7   162    0    0  7  1 92  0  0
3
yael

以前に言われたように( なぜswappinessが機能しないのですか? を参照)、swappinessを変更しても、カーネルがメモリを解放する必要がある場合にのみ、カーネルが行う決定に影響します。これを減らしても、スワップアウトされたものすべてがカーネルによって再ロードされることはありません。

vmstatの出力は、スワップがアクティブに使用されていないことを示していますie現在のワークロードでは、実際に使用されているページは必要ありませんスワップアウト。

カーネルがスワップを使用する傾向にある方法でマイクロ管理を試みても意味がありません。ワークロードに応じて、ページキャッシュを優先する必要があるかどうかを決定し、それに応じてswappinessを調整してから、システムを実行したままにします。

本当にスワップをクリアしたい場合、それを無効にして再度有効にします:

swapoff -a && swapon -a
9
Stephen Kitt

free -mは、スワップの使用に関する信頼できる情報源ではありません。代わりに、一時的にスワップを変更するエコーコマンド vmstatbefore and after を使用してください。

1)swapoff -a && swapon -a && vmstat
2)スワッピングを必要とする作業を行います
3)vmstat

これで、swappinessを変更する前に、どの程度のスワッピングが行われているかがわかります。スワッピングが行われていない場合は、スワッピングを行う他のジョブを探します。

4)and echoコマンドを使用して一時的にswappinessを変更する
5)swapoff -a && swapon -a && vmstat
6)スワッピングを必要とする作業を行います
7)vmstat

8)sisoの値を比較します。

監視する値は次のとおりです。

si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).

RHEL 7パフォーマンスチューニングガイド にも役立つ情報があります。

Swaponとswapoffについて思い出させてくれた Stephen Kitt に感謝します。

3
K7AAY