rosbag
の関数ROS
を使用しています。 rosbag
は、他のROSノードからの大量のデータを記録できます。 Wordでは、200MBのファイルなどの巨大なファイルが生成されます。
このようなファイルを生成した後、システムのバフ/キャッシュが大幅に増加することがわかりました。これが私のキャプチャです:
rosbag
の後、buff/cache
大幅に増加し、同時にfree
は19983から10896に減少しました。
理解できません。私の理解では、free
はRAMの空きサイズを意味します。buff/cache
はキャッシュのサイズです。キャッシュがRAMのサイズを使用できるのはなぜですか?また、rosbag
によって生成されたファイルを削除すると、buff/cache
は17999から8925に戻ります。これはシステムのアクションですか?いつbuff/cache
増加する?いつbuff/cache
減少?
free
の出力:
プロセスが大量のデータを書き込む場合、そのデータはディスクに書き込まれる前にバッファに送られます。これらのバッファはメモリ内のスペースを占有するため、未使用のメモリの量が減少します。ただし、そのメモリは使用可能にすることができるため、使用可能なメモリの量が減ることはありません。
ファイルを削除すると、バッファは不要になり、再利用されます(キャッシュとして保持しても意味がありません)。
プロセスがデータを書き込むと、バッファが増加します。そのデータがディスクに書き込まれると、それらは減少します。ディスク上のデータがメモリで利用可能になると(ディスクからデータを読み取るか、バッファをキャッシュに変換することにより)、キャッシュが増加します。記憶力が低下すると、それを維持することがもはや役に立たなくなると減少します。どちらもメモリ内に存在するため、サイズは空きメモリの量に影響します。ただし、どちらも再利用できるため、サイズが使用可能なメモリの量に影響することはありません。