web-dev-qa-db-ja.com

スワップメモリ​​を使用しているのは誰ですか。その理由は何ですか。

私のデータベースサーバーは191MBのスワップスペースを使用していますが、182MBの空き RAMも表示しています

ボックスは、DebianLennyを実行する専用のMySQLサーバーです。

空きRAMを使用する代わりに、誰が、なぜスワップスペースを埋めているのかを判断するにはどうすればよいですか?

4
Miko

topと入力し、 f 表示されているフィールドを編集するには、 p スワップの使用状況を表示するには、 Enter プログラムの表示に戻ります。使用する Shift+< そして > スワップの使用状況で並べ替えます。

Linuxは、データをRAMから(Linuxの擬人化された意見では)すぐに参照する必要がある可能性に基づいてスワップします。スワップ可能性を変更して、次の可能性を増減できます。これが起こっています。

13
James L

答えるのは簡単ではありません-ここを見てください: https://help.ubuntu.com/community/SwapFaq

topコマンドを使用してスワップの使用状況を確認し、man topまたはgoogleと入力してください。

理由については、考えられる状況の1つは次のとおりです。 1GBまたはRAMがあるとします。次に、2GB相当のアプリケーション(これにOSを含む)をロードします。 1GB RAMが使用され、1GBのスワップが使用されます。次に1.5GBのアプリケーションをアンロードします。0.5GBRAMが無料で、すべてのスワップがあると想定します。無料ですが、完全に当てはまらない場合があります。たとえば、3つのアプリケーションをロードした場合:

  • A-1 GB、
  • B-900 MB
  • C-100 MB

次にAをアクティブに使用すると、BとCの両方がディスクにスワップアウトされ、AがRAMを使用するため、高速になります。Aを閉じてCに切り替えると、100になります。 MB RAMが使用され、Bはまだスワップアウトされています(900 MBのスワップが使用されています)。これは必要ないためです。

簡単に言うと、カーネルはRAMを使用して、効率的になると思われる方法でスワップしようとします。空きがあるうちに使用法をスワップしますRAM必ずしもシステムの動作がそれよりも遅いことを意味するわけではありません。

1
icyrock.com
free -m

実際のRAMからファイルシステムバッファを差し引いた+/-バッファ行を確認してください。最新のOSは、一般的に使用されるファイルをメモリにロードし、カーネルは必要に応じてそれらを解放します。

例えば

             total       used       free     shared    buffers     cached
Mem:          3483       1702       1780          0        299        778
-/+ buffers/cache:        623       2859
Swap:         3999          0       3999

トップを実行すると、1.7ギガのメモリが空いていることがわかりますが、free -mを見ると、実際には2.8ギガが空いていることがわかります。他の1.1ギグはファイルシステムキャッシュです。

1
Mike

ジェームズの答えに対するエリカのコメントをサポートするための、スワップされたメモリについてのポイント:

スワップの使用状況が見られるのは悪いことではありません。 Jamesが言ったように、カーネルは、使用される可能性が低いメモリページを日和見的にスワップアウトします。これにより、RAMが必要になる可能性のある他のアプリが解放され、ごくまれにパフォーマンスの低下が発生します。

RAMからスワップアウトされたデータは、RAMが別の目的で要求されるまで、RAMとスワップディスクの両方に存在します、それはむしろmmapされたファイルのようなものです。私が理解しているように、プロセスが再利用される前にこのデータを使用することを決定した場合、データを再度スワップインする必要はありません。あなたがそれを望まないかもしれない理由:

  1. 電力を節約しようとしています。スワップアウトを適切に行う必要がないため、熱心にスワップアウトすると、通常、ディスクの回転量が増加します。
  2. スワップは、レイテンシーが問題となるプロセスを犠牲にして、パフォーマンスを気にしない可能性のあるプロセスのzippinessを改善する可能性があります。

日和見スワッピングはecho 0 > /proc/pid/vm/swappinessで排除できます。

1
Charles Stewart