Re: [patch] trace: Add user-space event tracing/injection

From: Ingo Molnar
Date: Wed Nov 17 2010 - 07:31:48 EST



* Pekka Enberg <penberg@xxxxxxxxxx> wrote:

> > $ trace report
> > #
> > # trace events of 'sleep 1':
> > #
> > testit/ 6006 ( 0.002 ms):<"Hello World!">
> > testit/ 6006 ( 0.002 ms):<"Hello World!">
>
> Wow! This looks really nice!
>
> What does the duration in milliseconds mean there? For things like
> GC and JIT, I want something like:
>
> void gc(void)
> {
> prctl(PR_TASK_PERF_USER_TRACE_START, ...)
>
> collect();
>
> prctl(PR_TASK_PERF_USER_TRACE_END, ...)
> }
>
> So that it's clear from the tracing output that the VM was busy
> doing GC for n milliseconds. Barring background JIT'ing and
> pauseless GC, I'd also be interested in showing how much time the VM
> was actually _blocking_ the running application (which can happen
> with signals too, btw, for things like accessing data that's lazily
> initialized).

We can add two events: user_event_entry/user_event_exit - or we could use the string
to differentiate, and start it with:

"entry: ..."
"exit: ..."

And then the event timestamps (which are absolute and are available) could be used
to calculate the duration of this period.

'trace' could even be taught to treat such entry:/exit: strings in a special way, so
that you dont have to write Jato specific trace decoding bits?

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/