Linuxでプロセスが作成した追加のメタデータのサイズを確認するには?

Linuxでプロセスが作成した追加のメタデータのサイズを確認するには?

私は現在、fsyncでディスクにどれだけのデータが書き込まれるかを確認するために、Linuxでfsyncとfdatasyncを比較しています。

私はiotopsを使用して/proc//ioファイルを調べて、書き込みが実行されたよりも多くのデータが書き込まれたことを示すことを確認しました。

8KBチャンクを書き、fsyncを使用してフラッシュし、1000回繰り返しました。したがって、プロセスによって書き込まれた合計データは8192,000バイト+ファイルのメタデータでなければならず、リフレッシュ(fsync)中に更新する必要があります。

ただし、上記の2つの方法(iotopsと/proc/pid/io)を使用すると、作成されたデータの出力として8192000が得られます。これは、ファイルに書き込まれたメタデータの量を考慮しません。

このプロセスで作成されたメタデータの量を測定する方法を教えてください。

答え1

/sys/block/{デバイス名}/stat ファイルには、作成されたバイトに関する統計が含まれています。あなたはそれを読みたいと思います。

ファイル形式は非常に簡単です。に記録されています。https://www.kernel.org/doc/Documentation/block/stat.txt

また、結果が正確かもしれません!何もない止めるfdatasyncは可能な限りパフォーマンスを低下させることなくメタデータを同期させることができます。

また、CoWファイルシステムでは、メタデータを変更しないとデータを書き込むことができないことに注意してください。これがすでにfdatasyncの一部であるかどうかはわかりません。

関連情報