Lorsque l'on observe des résultats de groupement, ce sont souvent les dix premiers résultats qui présentent un intérêt. Les clés et valeurs associées aux valeurs autres que les valeurs les plus élevées ne présentent pas d'intérêt. Vous souhaitez peut-être également rejeter un résultat de groupement dans son intégralité, en supprimant à la fois les clés et les valeurs. La fonction trunc() de DTrace est utilisée dans ces deux cas de figure.
Les paramètres sur lesquels appliquer la fonction trunc() sont un groupement et une valeur de troncature facultative. Sans la valeur de troncature, trunc() rejette à la fois les valeurs et les clés de groupement du groupement complet. Lorsqu'une valeur de troncature n est présente, trunc() rejette les valeurs et les clés de groupement à l'exception de celles associées aux valeurs n les plus élevées. Cela signifie que trunc(@foo, 10) tronque le groupement appelé foo après les dix premières valeurs, là où trunc(@foo) rejette le groupement dans son intégralité. Le groupement complet est également rejeté si 0 est spécifié comme valeur de troncature.
Pour afficher les valeurs n du bas au lieu de celles du haut, spécifiez une valeur de troncature négative dans trunc(). Par exemple, trunc(@foo, -10) tronque la valeur nommée foo après les dix dernières valeurs.
L'exemple suivant augmente l'exemple d'appel système pour n'afficher que le nombre d'appels système par seconde des dix premières applications d'appels système sur dix secondes :
#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; }
L'exemple suivant affiche la sortie de l'exécution du script ci-dessus sur un ordinateur portable légèrement chargé :
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 |