私は現在、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の一部であるかどうかはわかりません。