What does the duration in milliseconds mean there? For things likeGC and JIT, I want something like:We can add two events: user_event_entry/user_event_exit - or we could use the string
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).
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?