A Blktrace le faltan eventos de E/S

A Blktrace le faltan eventos de E/S

Estoy usando blktrace para capturar el tráfico que llega a mi dispositivo y he estado lidiando con algunos problemas dolorosos. Me pregunto si pueden confirmar/corregir mis hallazgos.

Parece que a blktrace le faltan algunos eventos. He estado intentando obtener la distribución de la latencia para los comandos de lectura emitidos al dispositivo. Sé que blkparse y btt hacen eso. Sin embargo, tras una inspección más cercana de los resultados de blkparse, parece que los números de latencia son en realidad latencias de respuesta a respuesta (C a C) en lugar de comando a respuesta (D a C). BTT también falla porque encuentra comandos que no tienen respuestas (D está ahí pero falta C).

Así que intenté desarrollar mi propio código y me di cuenta de que hay muchos casos de comandos emitidos sin respuesta (D está ahí pero no C). También hay muchos casos en los que se tiene una respuesta sin un comando (C está ahí pero no se ha visto D antes). Para confirmar mi hallazgo, ejecuté FIO en un dispositivo nullblk (usa DRAM, por lo que es bastante rápido) y habilité blktrace para rastrear el dispositivo nullblk. Veo que cuando FIO registra 80 GB de escritura de datos, blktrace captura solo alrededor de 50 GB de datos en el disco. Estoy un poco confundido y no estoy seguro de esta conclusión, pero parece que blktrace en cargas de trabajo pesadas elimina eventos.

¿Es eso algo que ustedes también han notado? ¿Alguien puede señalarme mi análisis erróneo o confirmar mi hallazgo?

El comando fio que utilicé es este:

sudo fio --name=seqwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=128k --direct=0 --size=130M --numjobs=600 --runtime=300 --group_reporting

Respuesta1

Lamentablemente, no incluyó el resultado resumido de blktrace. ¿Menciona un número distinto de cero de eventos eliminados? Si es así, lo más probable es que el búfer circular que contiene los eventos hasta que puedan leerse se desborde. Si ese es el caso, es posible que pueda solucionar el problema solicitando un búfer más grande usando el--buffer-sizeopción mencionada en la página de manual...

información relacionada