web-dev-qa-db-ja.com

vmstatのswpdがゼロではない理由

vmstatのマニュアルページによると、「swpd」は使用される仮想メモリの量を意味します。私の理解では、ほとんどの場合、物理CPUの容量が不足していない限り、ゼロである必要があります。

しかし、サーバーの「swpd」の値がゼロではないことがわかりました。
enter image description here

理由はわかりません。 700を超えるプロセスがある場合でも、CPUはほぼ100%使用されていません。
enter image description here

合計で、スワップは約190M使用されます。 250Gの合計サイズと比較するとそれほど大きくはありません。

CPUが解放されていても、一部のプロセスが仮想スワップを使用するということですか?

3
Yves

スワップはCPU使用率とは関係ありません。スワップは、ディスクに書き込まれるメモリです。

CPUは通常のRAMに直接アクセスでき、RAMはスワップに比べて非常に高速です。 CPUがアクセスする必要があるデータの高速バッファとしてRAMがあるのはそのためです。

スワップにより、カーネルは必要なときに取得するために、未使用のメモリをディスクに書き込むことができます。ディスクはメモリに比べて非常に遅いため、これはコストのかかるプロセスですが、物理的なメモリ量よりも多くのメモリを使用できます。

また、使用されないものもありますが、メモリスペースが割り当てられている場合があります。通常、カーネルは使用されていないものをスワップアウトします。

190MBの使用済みSWAPは問題ではありません。問題は、コンピューターがスワップのために書き出す必要があり、それを再度取得する必要がある場合です。

私のラップトップには、現在スワップ用に書き込まれた445MBがありますが、3GiBの未使用メモリがあります。明らかに、ある段階でカーネルが使用されていないものを見つけて、交換することにしました。

要するに、以下の場合を除いて、スワップの使用を気にしないでください:

  1. 頻繁に スラッシング が表示されます。
  2. free -mは使用可能なメモリが非常に少ないことを示します

私のラップトップからのfree -mの簡単な例:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7702       7454        247        582        230       3477
-/+ buffers/cache:       3746       3955
Swap:         8191        445       7746

ご覧のとおり、247MiBは無料です。しかし、これはすべてではありません。さらに、3GiBを超えるキャッシュがあり、カーネルが何かのためにより多くのメモリを必要とする場合、非常に迅速に解放できます。したがって、空きメモリの実際の量は3955MiBで、freeの下の2行目に示されています。使用されているスワップも表示されます。

つまり、ソフトウェアの応答が非常に遅いなどの問題が発生しない限り、スワップ領域の使用を気にしないでください。これはスラッシングの良い兆候です。

スラッシングをチェックするには、vmstat -sを実行して統計を表示します。次のような2行が表示されます。

   174085 pages swapped in
   569123 pages swapped out

これは、スワップに書き込まれ、スワップから読み取られるページの数です。これらの数値が急速に増加しない限り、すべてが正常です-そして、swapは、システムを高速化する実際のアプリケーションとキャッシュのためにmoreメモリを提供します。

7
vidarlo