Another way to run blktrace is to have blktrace save data away for later formatting by blkparse. This would be useful if you want to get measurements while running specific loads.
To do this, one would specify the device (or devices) to be watched. Then go run you test cases. Stop the trace, and at your leisure utilize blkparse to see the results.
In this example, devices /dev/sdaa, /dev/sdc and /dev/sdo are used in an LVM volume called adb3/vol.
% blktrace /dev/sdaa /dev/sdc /dev/sdo & [1] 9713 % % mkfs -t ext3 /dev/adb3/vol mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 16793600 inodes, 33555456 blocks 1677772 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 1025 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. % % kill -15 9713
Then you could process the events later:
% % blkparse sdaa sdc sdo > events % less events 8,32 1 1 0.000000000 9728 G R 384 + 32 [mkfs.ext3] 8,32 1 2 0.000001959 9728 P R [mkfs.ext3] 8,32 1 3 0.000002446 9728 Q R 384 + 32 [mkfs.ext3] 8,32 1 4 0.000005110 9728 D R 384 + 32 [mkfs.ext3] 8,32 3 5 0.000200570 0 C R 384 + 32 [0] 8,224 3 1 0.021658989 9728 G R 384 + 32 [mkfs.ext3] ... 65,160 3 163392 41.117070504 0 C W 87469088 + 1376 [0] 8,32 3 163374 41.122683668 0 C W 88168160 + 1376 [0] 65,160 3 163393 41.129952433 0 C W 87905984 + 1376 [0] 65,160 3 163394 41.130049431 0 D W 89129344 + 1376 [swapper] 65,160 3 163395 41.130067135 0 D W 89216704 + 1376 [swapper] 65,160 3 163396 41.130083785 0 D W 89304096 + 1376 [swapper] 65,160 3 163397 41.130099455 0 D W 89391488 + 1376 [swapper] 65,160 3 163398 41.130114732 0 D W 89478848 + 1376 [swapper] 65,160 3 163399 41.130128885 0 D W 89481536 + 64 [swapper] 8,32 3 163375 41.134758196 0 C W 86333152 + 1376 [0] 65,160 3 163400 41.142229726 0 C W 89129344 + 1376 [0] 65,160 3 163401 41.144952314 0 C W 89481536 + 64 [0] 8,32 3 163376 41.147441930 0 C W 88342912 + 1376 [0] 65,160 3 163402 41.155869604 0 C W 89478848 + 1376 [0] 8,32 3 163377 41.159466082 0 C W 86245760 + 1376 [0] 65,160 3 163403 41.166944976 0 C W 89216704 + 1376 [0] 65,160 3 163404 41.178968252 0 C W 89304096 + 1376 [0] 65,160 3 163405 41.191860173 0 C W 89391488 + 1376 [0] ... Events (sdo): 0 entries, 0 skips CPU0 (65,160): Reads Queued: 0, 0KiB Writes Queued: 9, 5,520KiB Read Dispatches: 0, 0KiB Write Dispatches: 0, 0KiB Reads Completed: 0, 0KiB Writes Completed: 0, 0KiB Read Merges: 0 Write Merges: 336 IO unplugs: 0 Timer unplugs: 0 CPU1 (65,160): Reads Queued: 2,411, 38,576KiB Writes Queued: 769, 425,408KiB Read Dispatches: 2,407, 38,512KiB Write Dispatches: 118, 61,680KiB Reads Completed: 0, 0KiB Writes Completed: 0, 0KiB Read Merges: 0 Write Merges: 25,819 IO unplugs: 0 Timer unplugs: 4 CPU2 (65,160): Reads Queued: 2, 32KiB Writes Queued: 18, 10,528KiB Read Dispatches: 2, 32KiB Write Dispatches: 3, 1,344KiB Reads Completed: 0, 0KiB Writes Completed: 0, 0KiB Read Merges: 0 Write Merges: 640 IO unplugs: 0 Timer unplugs: 0 CPU3 (65,160): Reads Queued: 20,572, 329,152KiB Writes Queued: 594, 279,712KiB Read Dispatches: 20,576, 329,216KiB Write Dispatches: 1,474, 740,720KiB Reads Completed: 22,985, 367,760KiB Writes Completed: 1,390, 721,168KiB Read Merges: 0 Write Merges: 16,888 IO unplugs: 0 Timer unplugs: 0 Total (65,160): Reads Queued: 22,985, 367,760KiB Writes Queued: 1,390, 721,168KiB Read Dispatches: 22,985, 367,760KiB Write Dispatches: 1,595, 803,744KiB Reads Completed: 22,985, 367,760KiB Writes Completed: 1,390, 721,168KiB Read Merges: 0 Write Merges: 43,683 IO unplugs: 0 Timer unplugs: 4 ...