stddev

Stores the standard deviation of the specified expressions in an aggregation.

void stddev(expr)

The stddev function is an aggregation function that returns the standard deviation for an expression.

The standard deviation is imprecisely approximated as √((Σ(x2)/N)-(Σx/N)2). This value is sufficient for most DTrace purposes.

Example 7-47 How to use stddev to display the standard deviation of time taken to run processes

The example stores the timestamp for the syscall::execve:entry probe fires and then subtracts this value from the timestamp when the syscall::execve:return fires. The standard deviation is calculated based on the time difference between the two probes and stored in an aggregation so that it can be updated for each process that runs. When the program exits, the aggregated standard deviation value is displayed.

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);
}

Output similar to the following is displayed when the program exits:

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