simple (dumb) script to track sizes of IOs
Badari Pulavarty
pbadari@us.ibm.com
Fri Oct 7 21:19:00 GMT 2005
On Fri, 2005-10-07 at 15:17 -0400, Frank Ch. Eigler wrote:
> Badari Pulavarty <pbadari@us.ibm.com> writes:
>
> > > > [...]
> > > > Is there a way, I can print in the order of IO sizes easily ?
> > > There will be a way of iterating in a sorted order, probably
> > > expressed syntactically like this: [...]
>
> > > # foreach (ascending(io) in iosizes) {
>
> > Does this functionality exists today ?
>
> Yes, it does. Just to keep the parsing simple, I implemented a simple
> suffix syntax. For example:
>
> foreach (io+ in iosizes) { ... } // in increasing order of io index
> foreach (io in iosizes-) { ... } // in decreasing order of iosizes[]
Cool. It works & output looks much better !!
BTW, don't you want to do
foreach(io- in iosizes) { ..}
to be consistent ?
Thanks,
Badari
[root@elm3b23 systemtap.samples]# stap iosizes.stp
io sizes tracking, start time=1128719937
iosize = 1k iocount = 2
iosize = 2k iocount = 1
iosize = 4k iocount = 24
iosize = 8k iocount = 4
iosize = 12k iocount = 2
iosize = 16k iocount = 2
iosize = 20k iocount = 1
iosize = 28k iocount = 3
iosize = 32k iocount = 2
iosize = 48k iocount = 1
iosize = 108k iocount = 1
iosize = 120k iocount = 1
iosize = 128k iocount = 13886
iosize = 208k iocount = 1
iosize = 228k iocount = 1
iosize = 276k iocount = 1
iosize = 332k iocount = 1
iosize = 388k iocount = 1
iosize = 424k iocount = 1
iosize = 440k iocount = 2
iosize = 512k iocount = 1024
io sizes tracking, end time=1128719961
-------------- next part --------------
#! stap
# Simple (dumb) script to figure out the sizes of IOs getting
# generated.
#
# TODO:
# - add per device counters
# - hook it up in right places (to handle failures correctly)
#
global iosizes
probe kernel.function("blk_rq_map_sg") {
iosizes [$rq->nr_sectors] ++
}
function _(n) { return string(n) }
function report () {
foreach (io+ in iosizes) {
print("iosize = " . _(io/2) .
"k\t iocount = " . _(iosizes[io]) .
"\n")
}
delete iosizes
}
probe begin {
print ("io sizes tracking, start time=" . _(gettimeofday_s()) . "\n")
}
probe end {
report()
print ("io sizes tracking, end time=" . _(gettimeofday_s()) . "\n")
}
More information about the Systemtap
mailing list