[UPDATE] Linux Kernel Event Trace tool(LKET)

Li Guanglei guanglei@cn.ibm.com
Fri May 19 04:09:00 GMT 2006


Li Guanglei ??:

> [...]
> So I'd like to break LKET's tapsets into the following two layers:
> 
> <1> Generic Tapsets
> The first layer are generic tapsets which could not only be used for 
> tracing, but also for general purpose diagnosis. It will include the 
> probe points defined in current LKET's tapsets and some stap script 
> statements of getting the interesting data related to that event.
> 
> So this will need some .stp files to be added into 
> /usr/local/share/SystemTap/tapsets. These files are scsi.stp, 
> ioscheduler.stp, tskdispatching.stp, networking.stp etc. Take an example 
> of scsi.stp, it will look like:
> 
> ...
> probe scsi.ioentry
>         = module("*").function("scsi_prep_fn@drivers/scsi/scsi_lib.c")
> {
>     disk_major = $rq->rq_disk->major
>     disk_minor = $rq->rq_disk->>first_minor
>     dev_state =  $q->queuedata->sdev_state
>     // maybe a argstr?
> }
> ...
> 
> These stp scripts not only address where inside the kernel to be 
> instrumented, but also get out the interesting data related to that 
> probed points. They look in the same style as current syscall.stp 
> shipped with SystemTap.
I've checked them into tapset directory(together with some testcases),
They are:
ioscheduler.stp, memory.stp, networking.stp, scsi.stp,

tskschedule.stp & process.stp from LKET were merged into scheduler.stp 
and process.stp respectively.

In a summary, the following probe alias are defined:

   ioscheduler.stp:
      ioscheduler.elv_next_request
      ioscheduler.elv_add_request
      ioscheduler.elv_completed_request

   memory.stp
      pagefault

   networking.stp
      netdev.receive
      netdev.transmit

   scsi.stp
      scsi.ioentry
      scsi.iodispatching
      scsi.iodone
      scsi.iocompleted

   scheduler.stp
      scheduler.ctxswitch

  You can refer to the .stp files for more info

> 
> <2> Tapsets Specific to Tracing
> The second part will be tracing specific, which may be located in 
> /usr/local/share/systemtap/tapsets/LKET/. They include those embedded c 
> functions in current LKET. Take an example of scsi.stp:
> 
> probe addevent.scsi.ioentry
>     = probe scsi.ioentry
> {
>     log_scsi_ioentry(HOOKID_SCSI_IOENTRY, $q, $req, backtrace)
> }
> 
> Thanks to the optimizations of translator, the statements of "disk_major 
> = $rq->rq_disk->major" will be compiled away and the generated c file 
> will look exactly like the original LKET.
> 
> And "stap -bM -I /usr/local/share/SystemTap/tapsets/LKET sample.stp" 
> will work the same as current LKET.
> 
> --Guanglei
> 
All these traceing specific tapsets are checked into tapset/LKET direcotry

I am writing the man pages for lket to make it easier to use.



More information about the Systemtap mailing list