| $ uname-r 2.6.18-164.el5
$ sudo rpm-i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm $ sudo rpm-i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm $ cat >PCMR.STP Global Io_stat, Blk_stat Global rd_cnt=2, wr_cnt=3 Probe Vfs.read.return { if ($return >0 && devname!= "N/a") { Io_stat[devname, 0] + + $return Io_stat[devname, rd_cnt] + +; } } Probe Ioblock.request { Blk_stat[devname, rw] = = Size Blk_stat[devname, rw+rd_cnt] + +; } Probe Vfs.write.return { if ($return >0 && devname!= "N/a") { Io_stat[devname, 1] + + $return Io_stat[devname, wr_cnt] + +; } } Global _IO,_BLK Probe timer.ms (5000) { foreach ([Devname, Action] in Io_stat) { _io[action] + = io_stat[devname, action]; _blk[action] + = blk_stat[devname, action] } if (_io[0] + _io[1]) { printf ("n%-25s,%s%db/%d,%s%db/%d,%s%db/%d,%s%db/%d,%s%d%%nn", CTime (gettimeofday_s ()), "IO Read:", _io[0], _io[rd_cnt], "IO Write:", _io[1],_io[wr_cnt], "Blk Read:", _blk[0], _blk[rd_cnt], "Blk Write:", _blk[1],_blk[wr_cnt], "PCMR:", (_blk[0]+_blk[1]) */(_io[0] + _io[1)) Delete _io Delete _blk /* Print header */ printf ("%8s%2s%19s%19s%5sn", "DEVICE", "T", "IO", "BLK", "PCMR") } /* Print Top ten I/O foreach ([Devname, Action] in Io_stat-limit 10) if (Action < rd_cnt) printf ("%8s%2s%11db/%6d%11db/%6d%4d%%n", Devname, action? " W ":" R ", Io_stat[devname, Action],io_stat[devname, action+rd_cnt], Blk_stat[devname, Action],blk_stat[devname, action+rd_cnt], (Blk_stat[devname, Action] *)/io_stat[devname, action] ) /* Clear Data */ Delete Io_stat Delete Blk_stat } Probe begin { println ("::"); } |