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 |