Go to main content

Oracle® Solaris 11.4 DTrace (Dynamic Tracing) Guide

Exit Print View

Updated: September 2020
 
 

Clearing Aggregations

When using DTrace to build simple monitoring scripts, you can periodically clear the values in an aggregation using the clear() function. This function takes an aggregation as its only parameter. The clear() function clears only the aggregation's values; 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. For more information about the trunc function, see Truncating Aggregations.

The following example adds the clear() function to Example 14, Renormalizing an Aggregation With renormalize.d:

Example 15  Clearing Aggregations
#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;
}

While Example 14, Renormalizing an Aggregation With renormalize.d shows the system call rate over the lifetime of the dtrace invocation, the preceding example shows the system call rate only for the most recent ten-second period.