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