Solaris で dtrace を使用すると、次のスクリプトを使用して、start から control-C までの間隔で、特定のプロセス (または execname) のオン CPU 時間を累積できます。
!/usr/sbin/dtrace -qs
dtrace:::BEGIN {
total = 0;
}
sched:::on-cpu
/execname == $$1/
{
self->start = vtimestamp;
}
sched:::off-cpu
/self->start/
{
this->time = vtimestamp - self->start;
total += this->time;
self->start = 0;
}
dtrace:::END {
printf("Total Time on CPU: %d us\n",total/1000);
}
(累積された時間には、ナノ/マイクロ秒の累積を可能にする細粒度があります。)
同じ時間枠で、配列内のすべてまたは多くのプロセスを累積し、ブレーク (^C) で累積されたすべての CPU 時間を報告したいと考えています。
これを行う最善の方法は何ですか?