如第 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);
}