私のデータベースサーバーは191MBのスワップスペースを使用していますが、182MBの空き RAMも表示しています
ボックスは、DebianLennyを実行する専用のMySQLサーバーです。
空きRAMを使用する代わりに、誰が、なぜスワップスペースを埋めているのかを判断するにはどうすればよいですか?
top
と入力し、 f 表示されているフィールドを編集するには、 p スワップの使用状況を表示するには、 Enter プログラムの表示に戻ります。使用する Shift+< そして > スワップの使用状況で並べ替えます。
Linuxは、データをRAMから(Linuxの擬人化された意見では)すぐに参照する必要がある可能性に基づいてスワップします。スワップ可能性を変更して、次の可能性を増減できます。これが起こっています。
答えるのは簡単ではありません-ここを見てください: https://help.ubuntu.com/community/SwapFaq 。
top
コマンドを使用してスワップの使用状況を確認し、man top
またはgoogleと入力してください。
理由については、考えられる状況の1つは次のとおりです。 1GBまたはRAMがあるとします。次に、2GB相当のアプリケーション(これにOSを含む)をロードします。 1GB RAMが使用され、1GBのスワップが使用されます。次に1.5GBのアプリケーションをアンロードします。0.5GBRAMが無料で、すべてのスワップがあると想定します。無料ですが、完全に当てはまらない場合があります。たとえば、3つのアプリケーションをロードした場合:
次にAをアクティブに使用すると、BとCの両方がディスクにスワップアウトされ、AがRAMを使用するため、高速になります。Aを閉じてCに切り替えると、100になります。 MB RAMが使用され、Bはまだスワップアウトされています(900 MBのスワップが使用されています)。これは必要ないためです。
簡単に言うと、カーネルはRAMを使用して、効率的になると思われる方法でスワップしようとします。空きがあるうちに使用法をスワップしますRAM必ずしもシステムの動作がそれよりも遅いことを意味するわけではありません。
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ギグはファイルシステムキャッシュです。
ジェームズの答えに対するエリカのコメントをサポートするための、スワップされたメモリについてのポイント:
スワップの使用状況が見られるのは悪いことではありません。 Jamesが言ったように、カーネルは、使用される可能性が低いメモリページを日和見的にスワップアウトします。これにより、RAMが必要になる可能性のある他のアプリが解放され、ごくまれにパフォーマンスの低下が発生します。
RAMからスワップアウトされたデータは、RAMが別の目的で要求されるまで、RAMとスワップディスクの両方に存在します、それはむしろmmapされたファイルのようなものです。私が理解しているように、プロセスが再利用される前にこのデータを使用することを決定した場合、データを再度スワップインする必要はありません。あなたがそれを望まないかもしれない理由:
日和見スワッピングはecho 0 > /proc/pid/vm/swappiness
で排除できます。