Как получить инструмент blktrace для отображения действия, созданного D
Этот вопрос об инструменте blktrace. На нескольких компьютерах с Ubuntu 3.16.0 в нашей лаборатории мне нужно отслеживать производительность программного обеспечения по сравнению с блоком ввода-вывода устройства. Иногда мы используем наш собственный драйвер nvme, а иногда и стандартный. Вот выдержка из вывода blkparse (со стандартным драйвером nvme):
259,0 2 189505 9.997188463 8160 Q R 126875648 + 248 [fio]
259,0 2 189506 9.997191290 8160 Q R 126875896 + 8 [fio]
259,0 2 189507 9.997215574 8160 Q R 363057152 + 248 [fio]
259,0 2 189508 9.997218444 8160 Q R 363057400 + 8 [fio]
259,0 2 189509 9.997219210 8160 C R 216536568 + 8 [0]
259,0 2 189510 9.997220497 8160 C R 126875896 + 8 [0]
259,0 2 189511 9.997230160 8160 C R 363057400 + 8 [0]
259,0 2 189512 9.997248050 8160 Q R 147316736 + 248 [fio]
259,0 2 189513 9.997250930 8160 Q R 147316984 + 8 [fio]
259,0 2 189514 9.997277161 0 C R 147316984 + 8 [0]
Это показывает действия "В очереди" и "Завершить", но не действия, выданные D, которые меня интересуют. В этом проблема. Мне нужно больше действий (событий) показано. Это из
blktrace /dev/nvme0n1
Между тем, на других машинах Linux это работает, или даже на той же машине, если я отслеживаю другое устройство, например
blktrace /dev/sda
Это работает, как показано в этом отрывке:
8,0 18 69 17.778827207 8538 Q RA 306186592 + 8 [ls]
8,0 18 70 17.778827767 8538 G RA 306186592 + 8 [ls]
8,0 18 71 17.778828037 8538 I R 306186592 + 8 [ls]
8,0 18 72 17.778828284 8538 D R 306186592 + 8 [ls]
8,0 18 73 17.778832181 8538 A RA 306186600 + 8 <- (8,1) 306184552
8,0 18 74 17.778832397 8538 Q RA 306186600 + 8 [ls]
8,0 18 75 17.778832951 8538 G RA 306186600 + 8 [ls]
8,0 18 76 17.778833221 8538 I R 306186600 + 8 [ls]
8,0 18 77 17.778833441 8538 D R 306186600 + 8 [ls]
8,0 18 78 17.778837161 8538 A RA 306186608 + 8 <- (8,1) 306184560
Этот последний (с / dev / sda) показывает все различные действия, и это здорово. Итак, как мне получить подробную blktrace для устройства nvme0n1? И почему он не показывает автоматически другие действия (кроме Q и C)?
1 ответ
Вы должны видеть D, если ваше устройство nvme имеет интерфейс блочного устройства. Пытаться libaio
двигатель в fio
и запустить random write
, Обязательно установите планировщик NOOP IO в /sys/block/nvme../scheduler