2016-12-21 3 views
0

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?

Antwort

0

Ein Blick auf Ihrer Job-Datei, es scheint, Sie tun I/O gegen ein Block-Gerät nicht, sondern gegen eine Datei in einem Dateisystem. So, während Sie das Dateisystem fragen kann „setzen diese Daten an dieser Stelle in der Datei“ das Dateisystem in mehrere Blockgeräteanforderungen drehen kann, weil es auch Metadaten, die mit dieser Datei (zB die Zeitschrift, Dateizeitstempel zugeordnet aktualisieren, kopieren Sie auf Schreib usw.) auch. Wenn also die Anforderungen auf den Datenträger gesendet werden (was Sie mit iostat messen), wurde die ursprüngliche Anforderung verstärkt.

Etwas auch zu bedenken ist, dass Linux eine ioscheduler für diese Platte haben. Dadurch können Anforderungen neu angeordnet, aufgeteilt und zusammengeführt werden, bevor sie auf den Datenträger übertragen/weiter oben im Stapel zurückgegeben werden. Siehe die verschiedenen Parameter von nomerges in https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt, wie einige der Verschmelzung zu vermeiden/Neuanordnung aber beachten Sie die Aufspaltung einer Anforderung, die zu groß ist, steuern können (aber ein Dateisystem nicht allzu große Anforderungen stellen).

(PS: Ich habe nicht gewusst, dass Iostat "falsch" ist, also müssen Sie vielleicht die Leute fragen, die es direkt sagen, um herauszufinden, was sie bedeuten)

Verwandte Themen