The following is an example of the shortlived.d program.
It can measure time spent processing short lived processes,
that may be responsible for heavy load on the system but
are usually difficult to see with sampling tools like prstat.
Here we run in for a few seconds on a server,
# shortlived.d
Tracing... Hit Ctrl-C to stop.
^C
short lived processes: 0.456 secs
total sample duration: 9.352 secs
Total time by process name,
date 12 ms
df 20 ms
ls 40 ms
perl 380 ms
Total time by PPID,
3279 452 ms
In the above output, around 5% of the CPU was lost to short
lived processes - mostly perl. This may be many perl processes,
here we are aggregating on the process name not the instance.
Now shortlived.d is run on a server with a performance problem,
# uptime
10:58pm up 5 day(s), 1:28, 1 user, load average: 2.20, 1.81, 1.04
#
# shortlived.d
Tracing... Hit Ctrl-C to stop.
^C
short lived processes: 4.546 secs
total sample duration: 9.858 secs
Total time by process name,
expr 4122 ms
Total time by PPID,
3279 4122 ms
#
# ps -p 3279
PID TTY TIME CMD
3279 pts/10 0:45 report.sh
shortlived.d showed that 50% of the CPU was consumed by short lived
processes, all of them the "expr" command, and all having the
parent proccess-ID 3279. We finished by checking PID 3279 to find
it is a Bourne shell script called "report.sh".