Как уже упоминал @osgx, это программные события трассировки, среди множества предопределенных наборов событий трассировки в источниках ядра, которые можно увидеть при запуске -
sudo perf list | grep Tracepoint
События трассировки на основе блоков могут дать подробную информацию о том, что делают запоминающие устройства при выполнении определенных команд.
sudo perf record -e block:block_rq_complete -a sleep 10
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.412 MB perf.data (340 samples) ]
block_rq_complete
Точка трассировки *1009* отслеживает выполненные запросы ввода-вывода, либо полностью или частично.
sudo perf script
swapper 0 [006] 205791.409875: block:block_rq_complete: 8,16 RM () 390439208 + 8 [0]
swapper 0 [006] 205791.410439: block:block_rq_complete: 8,16 RM () 390439256 + 8 [0]
chrome 9526 [006] 205793.149462: block:block_rq_complete: 8,16 W () 424979920 + 8 [0]
chrome 9526 [006] 205793.149781: block:block_rq_complete: 8,16 W () 490387000 + 352 [0]
swapper 0 [006] 205794.547686: block:block_rq_complete: 8,16 WS () 432636024 + 1344 [0]
swapper 0 [006] 205794.558292: block:block_rq_complete: 8,16 WS () 432637368 + 1344 [0]
swapper 0 [006] 205794.566718: block:block_rq_complete: 8,16 WS () 432638712 + 544 [0]
swapper 0 [006] 205794.599791: block:block_rq_complete: 8,16 FF () 18446744073709551615 + 0 [0]
swapper 0 [006] 205794.599868: block:block_rq_complete: 8,16 WS () 432639256 + 8 [0]
swapper 0 [006] 205794.600792: block:block_rq_complete: 8,16 FF () 18446744073709551615 + 0 [0]
swapper 0 [006] 205794.600798: block:block_rq_complete: 8,16 WS () 432639256 + 0 [0]
swapper 0 [006] 205798.268989: block:block_rq_complete: 8,16 W () 462924840 + 8 [0]
swapper 0 [006] 205798.269079: block:block_rq_complete: 8,16 W () 462934720 + 8 [0]
swapper 0 [006] 205798.269118: block:block_rq_complete: 8,16 W () 462934752 + 8 [0]
swapper 0 [006] 205798.269158: block:block_rq_complete: 8,16 W () 462935416 + 8 [0]
swapper 0 [006] 205798.269195: block:block_rq_complete: 8,16 W () 462935592 + 8 [0]
swapper 0 [006] 205798.269241: block:block_rq_complete: 8,16 W () 476143872 + 8 [0]
swapper 0 [006] 205798.269265: block:block_rq_complete: 8,16 W () 476144624 + 8 [0]
swapper 0 [006] 205798.269283: block:block_rq_complete: 8,16 W () 476145360 + 8 [0]
Первые 5 столбцов вывода хорошо понятны - (имя процесса / команда, pid, CPU, метка времени, имя события, для которого была произведена выборка), поэтому мы начнем с 6-го столбца далее -
8,16 относится к старшему и младшему номеру устройства.
ls -l /dev/sdb
brw-rw---- 1 root disk 8, 16 Apr 8 07:52 /dev/sdb
Символы R, W, B, S, F описывают выполняемую операцию ввода-вывода, где «R» относится к чтению, «W» относится к записи, «D» относится к блоку сброса, «M» относится к метаданным, «S» относится к синхронному, а «F» относится к гриппу sh.
Цифры, следующие за пустыми скобками ()
, относятся к смещению от начала устройства, на котором была выполнена операция ввода-вывода, и числу завершенных секторов ввода-вывода.
[0] указывает количество ошибок.
Некоторый уровень информации о большинстве других событий можно получить здесь - сводка событий блока
Обратите внимание, что API для этих событий постоянно меняются и могут отличаться для используемого вами ядра linux. Я приложил резюме для версии ядра 5.6.