Solaris 动态跟踪指南

使用聚合

第 9 章中所讨论,DTrace 聚合允许以一种可伸缩的方式聚合数据。关联数组也可能会提供与聚合类似的功能。但是,作为全局通用变量的特性决定了它们无法提供可线性伸缩的聚合。因此,如有可能,应优先使用聚合而不是关联数组。建议您不要使用以下示例:

syscall:::entry
{
	totals[execname]++;
}

syscall::rexit:entry
{
	printf("%40s %d\n", execname, totals[execname]);
	totals[execname] = 0;
}

首选使用以下示例:

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

END
{
	printa("%40s %@d\n", @totals);
}