Manuel de suivi dynamique Solaris

Troncature de groupements

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