Messages in this thread | | | Date | Wed, 17 Nov 2010 13:30:55 +0100 | From | Ingo Molnar <> | Subject | Re: [patch] trace: Add user-space event tracing/injection |
| |
* Pekka Enberg <penberg@kernel.org> 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
| |