Solaris 动态跟踪指南

截断聚合

查看聚合结果时,您通常只需关心最前面的几个结果。无需关注与最高值之外的任何其他对象关联的关键字和值。您可能还希望废弃整个聚合结果,从而删除关键字值。DTrace trunc() 函数适用于这两种情况。

trunc() 的参数包括聚合和可选截断值。如果没有截断值,trunc()同时废弃整个聚合的聚合值聚合关键字。如果存在截断值 n,则 trunc() 将废弃聚合值和聚合关键字,但与最高 n 个值关联的值和关键字除外。即,trunc(@foo, 10)将截断前 10 个值之后的名为 foo 的聚合,其中 trunc(@foo) 将废弃整个聚合。如果将 0 指定为截断值,将会废弃整个聚合。

要查看后 n 个值(而不是前 n 个值),请为 trunc() 指定负的截断值。例如,trunc(@foo, -10) 将截断后 10 个值之前的名为 foo 的聚合。

以下示例增加了系统调用示例,以便仅显示 10 秒内最前面 10 个系统调用应用程序的每秒系统调用速率。

#pragma D option quiet

BEGIN
{
	last = timestamp;
}

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

tick-10sec
{
	trunc(@func, 10);
	normalize(@func, (timestamp - last) / 1000000000);
	printa(@func);
	clear(@func);
	last = timestamp;
}

以下示例显示在轻负荷膝上型计算机上运行以上脚本的输出:


  FvwmAuto                                                          7
  telnet                                                           13
  ping                                                             14
  dtrace                                                           27
  xclock                                                           34
  MozillaFirebird-                                                 63
  xterm                                                           133
  fvwm2                                                           146
  acroread                                                        168
  Xsun                                                            616

  telnet                                                            4
  FvwmAuto                                                          5
  ping                                                             14
  dtrace                                                           27
  xclock                                                           35
  fvwm2                                                            69
  xterm                                                            70
  acroread                                                        164
  MozillaFirebird-                                                491
  Xsun                                                           1287