user-space probes -- plan B from outer space

Vara Prasad prasadav@us.ibm.com
Wed Jun 14 22:42:00 GMT 2006


Frank Ch. Eigler wrote:

>prasadav wrote:
>
>  
>
>>[...]  Well another approach is similar to Ptrace actions you have
>>predefined handlers that some one can activate through a new
>>systemcall. [...] 
>>    
>>
>
>A fixed pool of predefined handlers seem like an antithesis of
>systemtap.  Did you have some user interface in mind for these?
>  
>
Like i mentioned in response to Prasanna's user space probes approach  
mail  there will be two types of handlers for user space probes. One 
type is predefined for specific tasks like dump the stack, get registers 
etc., these handlers are built into the kernel. The second type of 
handlers are the ones that can be added on demand using a module load 
and register them similar to kprobes. SystemTap will use the second 
approach.

Association of a break point to handler is done as a separate step and 
either type of the handlers can be associated with the breakpoint. The 
idea of predefined handlers is if you don't want to write any 
complicated handlers and probe only your own process you could use the 
preexisting handlers and don't need to write kernel module and possibly 
don't even need root permission to trace.  This addresses one of the 
comments we got for earlier userspace implementation posting in LKML.

>  
>
>>>  user.process(233).statement(0xfeedface)
>>>  user("fche").process("/bin/vi").function("*init*")
>>>      
>>>
>>In my opinion user space probes is most useful in the case of server
>>class kind of complicated programs which are usually long living,
>>[...]  there is not much value with system wide tracing instead we
>>should focus on process specific tracing. [...]
>>    
>>
>
>There is no contradiction here.  System-wide probing can be
>accomplished by a collection of process-specific probes.
>
>  
>
>>[...] I am not sure i see the value of process("process name")
>>syntax if our focus is process specific tracing.
>>    
>>
>
>It would be one way of identifying present or future processes to
>probe.  For processes that do not yet exist, what other scheme do you
>have in mind?
>  
>
The scheme i am thinking is you could start a new process using 
systemtap, systemtap will then fork a copy of itself and exec the new 
executable on the child. This gives systemtap ability to put probes on 
the child process from the start similar to what gdb does if you start a 
program under debugger.

With the ability to probe already running process and as well as able to 
start new  process under systemtap we can probe most applications.

The one case that we can not cover with the above two is if an 
application has a complicated startup. For example if script A starts 
Script B and script B starts an executable C and executable C is a short 
lived one, since C is a short lived one it will not give us a chance to 
put probes before it exits. I think these kinds of cases are not too 
many to worry for now at least. Do you think of any other useful cases 
that we need to probe not covered by the above two approaches?

>  
>
>>I am not sure i see lot of value of this solution compared to a gdb
>>batch job, but for bit better performance than the heavy weight gdb.
>>[...]
>>    
>>
>
>How would this gdb batch job alternative work?  Are you intending to
>compare the expressity of systemtap script with gdb macros?
>
>  
>
I am not saying gdb macros are as powerful as systemtap scripts. All i 
meant is one can use gdb batch scripts to print the variables you need 
and use all kinds of post processing using your favorite scripting 
language. As the handlers are run in the userspace i am not seeing much 
advantage of  using systemtap language to do filtering in the userspace 
vs post processing using your favorite scripting language.

[...]

>
>- FChE
>  
>




More information about the Systemtap mailing list