statistics with intermediate results

William Cohen wcohen@redhat.com
Thu Jan 12 16:43:00 GMT 2006


Martin Peschke wrote:
> Hi,
> 
> another question of mine:
> 
> If I want to provide latencies then I need to measure two times,
> send time and receive time. I can calculate a latency
> when I know both times, which requires the first time to be
> kept somewhere until I have measured the second time.
> 
> The problem is where to put the first timestamp. It would
> be per request. But when I use dynamic instrumentation, e.g.
> systemtap, then I can't put some spare bytes in a
> per request data structure to store intermediate results.
> 
> I guess, one could report all events, like send time, receive
> time and so on, through systemtap and defer all processing to
> a user land script. That's the Linux Kernel Event Trace Tool
> approach:
> http://sourceware.org/ml/systemtap/2005-q4/msg00458.html
> 
>  From a performance point of view, I am not sure it is the
> fastet way of getting latencies, because it involves huge
> amounts of data being generated by probes and being
> reported through relayfs, while we can't use the benefits
> of immediate data reduction as provided systemtap's statistics.
> 
> I am wondering whether dynamic instrumentation is the answer
> to this kind of measurement requirements.
> 
> Thanks in advance for your thoughts.
> 
> Martin

Associative arrays can be used for this purpose. Use the pointer to the 
data structure as a key for the associative array. Store start time in 
the associative array. Then when the data structure is encountered for 
the completion operation fetch the time from the associative array and 
compute the elapsed time.

How many outstanding operations are there going to be at any given time?

-Will



More information about the Systemtap mailing list