Al consultar los resultados de la adición, es habitual que sólo se interese por los resultados de nivel superior. Las claves y los valores asociados a otros que no sean los de nivel superior no son interesantes. Es posible que también desee descartar el resultado de toda una adición, eliminando las claves y los valores. La función trunc() de DTrace se utiliza en estas dos situaciones.
Los parámetros de trunc() son una adición y un valor de truncamiento opcional. Sin el valor de truncamiento, trunc() descarta tanto los valores de adición como las claves para toda la adición. Cuando hay un valor de truncamiento n, trunc() descarta los valores y las claves de adición, excepto los asociados a los n valores superiores. En otras palabras, trunc(@foo, 10) trunca la adición denominada foo después de los diez valores superiores, mientras que trunc(@foo) descarta toda la adición. También se descarta toda la adición si se ha especificado 0 como valor de truncamiento.
Para ver los n valores inferiores en lugar de los n valores superiores, especifique un valor de truncamiento negativo en trunc(). Por ejemplo, trunc(@foo, -10) trunca la adición denominada foo después de los diez valores inferiores.
El siguiente ejemplo aumenta el ejemplo de llamadas del sistema para mostrar únicamente la tasa de llamadas del sistema por segundo de las diez aplicaciones principales que llaman al sistema durante un periodo de diez 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; }
En el siguiente ejemplo, se muestra el resultado de la ejecución de la secuencia de comandos anterior en un equipo portátil con un nivel bajo de 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 |