BEGIN { printf ("Sampling....\n"); } io:::start { start[args[0]->b_edev,args[0]->b_blkno] = timestamp; executable[args[0]->b_edev,args[0]->b_blkno] = execname; processid[args[0]->b_edev,args[0]->b_blkno] = pid; @ioc[execname,pid] = count (); } io:::done /start[args[0]->b_edev,args[0]->b_blkno]/ { _executable = executable[args[0]->b_edev,args[0]->b_blkno]; _pid = processid[args[0]->b_edev,args[0]->b_blkno]; _start = start[args[0]->b_edev, args[0]->b_blkno]; ts = timestamp - _start; @iot[_executable,_pid] = sum (ts); } END { printf ("IO time per process\n"); printf ("Executable\tpid\ttime(ms)\n"); normalize (@iot,1000000); printa (@iot); printf ("IO count per process\n\n"); printf ("Executable\tpid\tcount\n"); printa (@ioc); }