web-dev-qa-db-ja.com

free -m:キャッシュ/バフのために空きサイズが減少しました

rosbag の関数ROSを使用しています。 rosbagは、他のROSノードからの大量のデータを記録できます。 Wordでは、200MBのファイルなどの巨大なファイルが生成されます。

このようなファイルを生成した後、システムのバフ/キャッシュが大幅に増加することがわかりました。これが私のキャプチャです:

rosbagの前: enter image description here

rosbagの後: enter image description here

rosbagの後、buff/cache大幅に増加し、同時にfreeは19983から10896に減少しました。

理解できません。私の理解では、freeはRAMの空きサイズを意味します。buff/cacheはキャッシュのサイズです。キャッシュがRAMのサイズを使用できるのはなぜですか?また、rosbagによって生成されたファイルを削除すると、buff/cacheは17999から8925に戻ります。これはシステムのアクションですか?いつbuff/cache 増加する?いつbuff/cache減少?

1
Yves

freeの出力:

  • 「空き」は未使用のメモリを表します。
  • 「バフ/キャッシュ」は、バッファ(ディスクへの書き込みを待機しているメモリ内のデータ)およびキャッシュ(メモリ内でも使用可能なディスク上のデータ)によって使用されるメモリを表します。
  • 「使用可能」は、プロセスがスワップをヒットせずに割り当てて使用できるメモリの量を表します(ほとんどの場合、この値に注意する必要があります)。

プロセスが大量のデータを書き込む場合、そのデータはディスクに書き込まれる前にバッファに送られます。これらのバッファはメモリ内のスペースを占有するため、未使用のメモリの量が減少します。ただし、そのメモリは使用可能にすることができるため、使用可能なメモリの量が減ることはありません。

ファイルを削除すると、バッファは不要になり、再利用されます(キャッシュとして保持しても意味がありません)。

プロセスがデータを書き込むと、バッファが増加します。そのデータがディスクに書き込まれると、それらは減少します。ディスク上のデータがメモリで利用可能になると(ディスクからデータを読み取るか、バッファをキャッシュに変換することにより)、キャッシュが増加します。記憶力が低下すると、それを維持することがもはや役に立たなくなると減少します。どちらもメモリ内に存在するため、サイズは空きメモリの量に影響します。ただし、どちらも再利用できるため、サイズが使用可能なメモリの量に影響することはありません。

3
Stephen Kitt