Thread (11 messages) flat view 11 messages, 4 authors, 2007-05-21

Re: Using kprobes [was Re: [PATCH] Performance Stats: Kernel patch

From: Maxim Uvarov <hidden>
Date: 2007-05-21 11:28:35

Linas Vepstas wrote:
On Thu, May 10, 2007 at 11:12:42AM -0700, Andrew Morton wrote:
 
quoted
I don't think the syscall-counting feature has a future, sorry.  Perhaps
you could do something like hooking it up on-demand by insertion of a kprobe,
dunno.
   
This is an interesting point. I've started fiddling with (a wrapper
around) kprobes that allows me to pick any subroutine symbol in System.map,
and then get an event whenever that subroutine gets called. Its pretty
slick, and allows me to gather data on certain unusual events in the
kernel.  (I'm not using this for performance monitoring, I'm trying to 
do RAS).

It makes a lot of sense to me to have a generic kprobe extension, where 
you could give it a list of subroutine names, and it'll collect stats
on the number of times that the routine was called. Some user-space thingy
could poll for those stats, or you could put them in /sys or wherever.

Its more complicted than just instriumenting syscalls, but a lot more
useful, I would think ... 

--linas

 
Thanks Linas, but do you think that kprobes is safe for syscall counting?
I think that the overhead will be much bigger in that case. In my case it is
1 line asm instruction and it is defended with #ifdefs.

Kprobes is very good thing. But is not clear for me how to count 
per-thread statistics.
In my case I increased struct thread_info. In case with kprobes it is 
easy to count all
do_fork execution, for example, but not for each thread. And in any 
case, place for keeping this
counters is needed.

Maxim.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help