最近、私はfioを使ってディスクをテストしようとしています。fioで観測されるiopsがiostatで観測されるものと異なるのはなぜですか?
[global]
invalidate=0 # mandatory
direct=1
#sync=1
fdatasync=1
thread=1
norandommap=1
runtime=10000
time_based=1
[write4k-rand]
stonewall
group_reporting
bs=4k
size=1g
rw=randwrite
numjobs=1
iodepth=1
をこの構成では、あなたは私が直接IOを使用してランダム書き込みを行うにはFIOが設定されていることを見ることができます:FIOの私の構成は以下のとおりです。テストが実行されている間、I/Oパフォーマンスを監視するためにiostatを使用しました。私はfdatasyncを1に設定した場合、fioで観測されるiopsは約64であり、iostatで観測されるiopsは約170であることがわかりました。これはなぜ異なっていますか? "fdatasync"を構成しないと、両方のiopsはほぼ同じですが、はるかに高い約450です。なぜですか?私が知る限り、direct ioはページキャッシュを経由しません。私の意見では、fdatasyncを使用するかどうかは関係ありません。
そして、iostatが状況によっては間違った統計情報を提示する可能性があると聞きました。それは本当ですか?正確な状況によってiostatが間違ってしまうことがありますか? I/Oパフォーマンスを監視するために使用できる他のツールはありますか?