avg

指定した式の算術平均を集積体に格納します。

void avg(expr)

avg関数は、指定したD式の算術平均を返す集積関数です。

例7-2 プロセスがシステム書込みコールに費やす平均時間を表示するためにavgを使用する方法

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

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

syscall::write:return
/self->ts/
{
  @time[execname] = avg(timestamp - self->ts);
  self->ts = 0;
}

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

 gnome-session                                                  8260
  udisks-part-id                                                 9279
  gnome-terminal                                                 9378
  lsof                                                          14903
  ip                                                            15075
  date                                                          15371
  ...
  ps                                                            91792
  sestatus                                                      98374
  pstree                                                       102566
  udisks-daemon                                                250405
  gconfd-2                                                   17880523
  cat                                                        59752284