Solaris 动态跟踪指南

清除聚合

使用 DTrace 生成简单监视脚本时,可使用 clear() 函数定期清除聚合中的值。此函数仅接受聚合作为其参数。clear() 函数仅清除聚合的;聚合的关键字将保留。因此,如果聚合中的某个关键字的关联值为零,则表示该关键字具有非零值,但后来作为 clear() 的一部分被设置为零。要同时废弃聚合的值和关键字,请使用 trunc()。有关详细信息,请参见截断聚合

以下示例将 clear() 添加到示例 9–1 中:

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

虽然示例 9–1 显示了 dtrace 调用的生命周期中系统调用的速率,但上面的示例仅显示了最近 10 秒内的系统调用速率。