web-dev-qa-db-ja.com

Linuxのメモリがいっぱいで、プロセスのメモリ使用量が上に加算されない

私は16GBのRAMを搭載したコンピューターを持っています。現時点では、topはすべてのRAMが取得され、(キャッシュではない)を示していますが、RAMプロセスは16GBから非常に遠いです。

私はこの問題を何度か見ましたが、何が起こっているのかわかりません。手がかりはありますか?これまでの私の唯一の救済策は、マシンを再起動することでした。

4
Peltier

私が理解しているように、Linuxでは「使用済み」メモリは「アクティブ」と「非アクティブ」に分割されます。

アクティブメモリは、現在プロセスに割り当てられ、プロセスによって使用されているメモリです。

非アクティブとは、プロセスに割り当てられたが、プロセスによって使用されなくなったメモリです(free()dされています)。アロケータは、後で使用するためにこのメモリを片側に置きますが、空にしません。そのメモリブロックにある同じデータが再度要求された場合、そのメモリブロックをプロセスに再割り当てするだけです。メモリのブロックが要求され、「クリーンな」メモリが残っていない場合、この「ダーティ」メモリの再割り当てが開始されます。

/ proc/meminfoを調べると、「使用済み」メモリのどれだけがアクティブで、どれだけが非アクティブであるかがわかります。

7
Majenko

一部のスワップが有効になっていて、swappinessがゼロ以外であることを確認してください。スワップ使用率は通常、使用可能なものを一時的に占有するバッファ/キャッシュだけでなく、メモリに実際のプレッシャーがあるかどうかを示します。

1
dhchdhd