stddev

指定した式の標準偏差を集積体に格納します。

void stddev(expr)

stddev関数は、式の標準偏差を返す集積関数です。

標準偏差は√((Σ(x2)/N)-(Σx/N)2)で正確に概算されます。この値は、ほとんどのDTraceの用途に十分なものです。

例7-47 プロセスの実行にかかった時間の標準偏差を表示するためにstddevを使用する方法

この例では、syscall::execve:entryプローブの起動のタイムスタンプを格納し、この値をsyscall::execve:returnの起動時のタイムスタンプから減算します。標準偏差は、この2つのプローブ間の時間差に基づいて計算され、実行されるプロセスごとに更新できるように集積体に格納されます。このプログラムが終了すると、集積された標準偏差値が表示されます。

syscall::execve:entry
{
 self->ts = timestamp;
}

syscall::execve:return
/ self->ts /
{
  t = timestamp - self->ts;
  @execsd[execname] = stddev(t);
  self->ts = 0;
}

END
{
  printf("\nSTDDEV:");
  printa(@execsd);
}

このプログラムが終了すると、次のような出力が表示されます:

STDDEV:
  head                                                              0
  lsb_release                                                       0
  mkdir                                                             0
  pidof                                                             0
  pkla-check-auth                                                   0
  tr                                                                0
  uname                                                             0
  getopt                                                         5646
  basename                                                       7061
  sed                                                            7236