Kürzlich versuche ich meine Festplatte mit fio zu testen. Meine Konfiguration von FIO ist wie folgt:Warum unterscheidet sich der von fiat beobachtete iops von dem von iostat beobachteten?
[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
In dieser Konfiguration können Sie sehen, dass ich fio Random Writes mit direkter io zu tun konfiguriert. Während der Test läuft, habe ich Iostat zur Überwachung der I/O-Leistung verwendet. Und ich fand das: wenn ich fdatasync auf 1 setze, dann ist der von fio beobachtete iops-Wert ungefähr 64, während der von iostat beobachtete Wert ungefähr 170 ist. Warum ist das anders? Und wenn ich den "fdatasync" nicht konfiguriere, sind beide iops ungefähr gleich, aber viel höher, ungefähr 450. Warum? Soweit ich weiß, führt direct io nicht durch den Seiten-Cache, was meiner Meinung nach bedeutet, dass es ungefähr zur gleichen Zeit dauern sollte, egal, ob fdatasync verwendet wird.
Und ich hörte, dass Iostat unter bestimmten Umständen mit falschen Statistiken kommen könnte. Ist das echt? Welche Umstände könnten Iostat in die Irre führen? Gibt es noch andere Tools, mit denen ich die I/O-Leistung überwachen kann?