global process_start probe kernel.function("do_execve").return { p=pid() t=gettimeofday_us() process_start[p]=t printf("executed pid %d parent %d time=%d name=%s\n", p, ppid(), t, execname()) } probe timer.profile { tid=tid() if (!user_mode()) kticks[tid] <<< 1 else uticks[tid] <<< 1 tids[tid] <<< 1 } global uticks, kticks, tids function logit() { tid=tid() p=pid() t=gettimeofday_us() elapsed=t-process_start[p] printf("finishing tid %d pid %d parent %d ticks %d real %d time=%d name=%s\n", tid, p, ppid(), @count(kticks[tid])+@count(uticks[tid]), elapsed, t, execname()) } probe syscall.exit { logit() }