max

指定した式のうちの最大値を集積体に格納します。

void max(expr)

max関数は、式の最大値を集積体に格納する集積関数です。

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

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

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

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

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

  ProxyResolution                                                4891
  firewalld                                                      7892
  RDD Process                                                   11028
  Utility Process                                               11344
  gdbus                                                         11474
  GLXVsyncThread                                                14181
  python3                                                       15286
  Socket Process                                                15294
  rtkit-daemon                                                  16547
  pmdakvm                                                       17089
  NetworkManager                                                18246
  pmdaxfs                                                       19661
  sudo                                                          19917
...