Guia de rastreamento dinâmico Solaris

Truncando agregações

Ao olhar os resultados da agregação, você geralmente só se preocupa com os vários resultados superiores. As chaves e os valores associados a qualquer coisa além dos valores mais altos não são interessantes. Talvez você também queira descartar todo o resultado de uma agregação, removendo as chaves e os valores. A função trunc() do DTrace é usada para ambas as situações.

Os parâmetros de trunc() são uma agregação e um valor opcional de truncamento. Sem o valor de truncamento, trunc () descarta ambos os valores de agregação e as chaves de agregação de toda a agregação. Quando um valor de truncamento n está presente, trunc() descarta valores de agregação e chaves exceto para os valores e chaves associados aos valores de n mais altos. Ou seja, trunc(@foo, 10) trunca a agregação chamada foo após os dez valores principais, enquanto trunc(@foo) descarta toda a agregação. Toda a agregação também será descartada se 0 for especificado como o valor de truncamento.

Para ver os valores inferiores de n em vez dos superiores de n, especifique um valor de truncamento negativo para trunc(). Por exemplo, trunc(@foo, -10) trunca a agregação denominada foo depois dos dez valores inferiores.

O exemplo a seguir aumenta o exemplo da chamada do sistema para exibir somente as taxas de chamada do sistema por segundo dos dez principais aplicativos de chamada do sistema em um período de dez segundos:

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

O exemplo a seguir mostra o resultado da execução do script acima em um laptop com pouca carga:


  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