3.6 Clearing Aggregations

When using DTrace to build simple monitoring scripts, you can periodically clear the values in an aggregation by using the clear function. This function takes an aggregation as its only parameter. The clear function clears only the aggregation's values, while the aggregation's keys are retained. Therefore, the presence of a key in an aggregation that has an associated value of zero indicates that the key had a non-zero value that was subsequently set to zero as part of a clear. To discard both an aggregation's values and its keys, use the trunc function. See Section 3.7, “Truncating Aggregations”.

The following example uses clear to show the system call rate only for the most recent ten-second period:

#pragma D option quiet

BEGIN
{
  last = timestamp;
}

syscall:::entry
{
  @func[execname] = count();
}

tick-10sec
{
  normalize(@func, (timestamp - last) / 1000000000);
  printa(@func);
  clear(@func);
  last = timestamp;
}