
Ich verwende blktrace, um den Datenverkehr auf meinem Gerät zu erfassen, und hatte mit einigen nervigen Problemen zu kämpfen. Ich frage mich, ob Sie meine Ergebnisse bestätigen/korrigieren können.
Scheint, als ob blktrace einige Ereignisse fehlen. Ich habe versucht, die Latenzverteilung für an das Gerät gesendete Lesebefehle zu ermitteln. Ich weiß, dass blkparse und btt das tun. Bei genauerer Betrachtung der blkparse-Ergebnisse scheint es jedoch, dass die Latenzzahlen tatsächlich Latenzen von Antwort zu Antwort (C zu C) und nicht von Befehl zu Antwort (D zu C) sind. BTT schlägt auch fehl, da es auf Befehle stößt, die keine Antworten haben (D ist vorhanden, aber C fehlt).
Also habe ich versucht, meinen eigenen Code zu entwickeln und festgestellt, dass es viele Fälle gibt, in denen Befehle ausgegeben werden, ohne dass eine Antwort gefunden wird (D ist da, aber kein C dafür). Auch viele Fälle, in denen eine Antwort ohne Befehl dafür vorliegt (C ist da, aber kein vorheriges D gesehen). Um meine Ergebnisse zu bestätigen, habe ich FIO auf einem Nullblk-Gerät ausgeführt (verwendet DRAM, ist also ziemlich schnell) und blktrace aktiviert, um das Nullblk-Gerät zu verfolgen. Ich sehe, dass, wenn FIO 80 GB Datenschreibvorgänge protokolliert, blktrace nur etwa 50 GB Daten auf der Festplatte erfasst. Ich bin etwas verwirrt und mir über diese Schlussfolgerung nicht sicher, aber es scheint, dass blktrace bei hohen Arbeitslasten Ereignisse verwirft.
Ist euch das auch aufgefallen? Kann mich jemand auf meine Fehlanalyse aufmerksam machen oder meine Ergebnisse bestätigen?
Der Fio-Befehl, den ich verwendet habe, ist dieser:
sudo fio --name=seqwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=128k --direct=0 --size=130M --numjobs=600 --runtime=300 --group_reporting
Antwort1
Leider haben Sie Ihre blktrace-Zusammenfassungsausgabe nicht angegeben. Wird dort eine von Null abweichende Anzahl gelöschter Ereignisse erwähnt? Wenn ja, ist der Ringpuffer, der Ereignisse speichert, bis sie gelesen werden können, wahrscheinlich übergelaufen. In diesem Fall können Sie das Problem möglicherweise umgehen, indem Sie einen größeren Puffer anfordern, indem Sie Folgendes verwenden:--buffer-size
in der Manpage erwähnte Option...