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