Now to simply watch what is going on for a specific disk (to stop the trace, hit control-C):
% blktrace -d /dev/sda -o - | blkparse -i - 8,0 3 1 0.000000000 697 G W 223490 + 8 [kjournald] 8,0 3 2 0.000001829 697 P R [kjournald] 8,0 3 3 0.000002197 697 Q W 223490 + 8 [kjournald] 8,0 3 4 0.000005533 697 M W 223498 + 8 [kjournald] 8,0 3 5 0.000008607 697 M W 223506 + 8 [kjournald] 8,0 3 6 0.000011569 697 M W 223514 + 8 [kjournald] 8,0 3 7 0.000014407 697 M W 223522 + 8 [kjournald] 8,0 3 8 0.000017367 697 M W 223530 + 8 [kjournald] 8,0 3 9 0.000020161 697 M W 223538 + 8 [kjournald] 8,0 3 10 0.000024062 697 D W 223490 + 56 [kjournald] 8,0 1 11 0.009507758 0 C W 223490 + 56 [0] 8,0 1 12 0.009538995 697 G W 223546 + 8 [kjournald] 8,0 1 13 0.009540033 697 P R [kjournald] 8,0 1 14 0.009540313 697 Q W 223546 + 8 [kjournald] 8,0 1 15 0.009542980 697 D W 223546 + 8 [kjournald] 8,0 1 16 0.013542170 0 C W 223546 + 8 [0] ... ^C ... CPU1 (8,0): Reads Queued: 0, 0KiB Writes Queued: 7, 128KiB Read Dispatches: 0, 0KiB Write Dispatches: 7, 128KiB Reads Completed: 0, 0KiB Writes Completed: 11, 168KiB Read Merges: 0 Write Merges: 25 IO unplugs: 0 Timer unplugs: 0 ... CPU3 (8,0): Reads Queued: 0, 0KiB Writes Queued: 1, 28KiB Read Dispatches: 0, 0KiB Write Dispatches: 1, 28KiB Reads Completed: 0, 0KiB Writes Completed: 0, 0KiB Read Merges: 0 Write Merges: 6 IO unplugs: 0 Timer unplugs: 0 Total (8,0): Reads Queued: 0, 0KiB Writes Queued: 11, 168KiB Read Dispatches: 0, 0KiB Write Dispatches: 11, 168KiB Reads Completed: 0, 0KiB Writes Completed: 11, 168KiB Read Merges: 0 Write Merges: 31 IO unplugs: 0 Timer unplugs: 3 Events (8,0): 89 entries, 0 skips
A btrace script is included in the distribution to ease live tracing of devices. The above could also be accomplished by issuing:
% btrace /dev/sda
By default, btrace runs the trace in quiet mode so it will not include statistics when you break the run. Add the -S option to get that dumped as well.