Manuel de suivi dynamique Solaris

Stratégie ring

La stratégie de tampon ring de DTrace vous aide à procéder au suivi d'événéments à l'origine de pannes. Si la reproduction de la panne prend plusieurs heures ou plusieurs jours, vous ne souhaiterez certainement conserver que les données les plus récentes. Dès qu'un tampon principal est rempli, le suivi effectue une recherche circulaire sur la première entrée, écrasant ainsi des données de suivi antérieures. Vous établissez le tampon circulaire en définissant l'option bufpolicy sur la chaîne ring :


# dtrace -s foo.d -x bufpolicy=ring

Lorsqu'il est utilisé pour créer un tampon circulaire, dtrace(1M) n'affiche aucune sortie jusqu'à la fin du processus. Lors de l'achèvement du processus, le tampon circulaire est consommé et traité. dtrace traite chaque tampon circulaire dans l'ordre des CPU. Dans le tampon d'une CPU, les enregistrements de suivi sont affichés chronologiquement, du plus ancien au plus récent. Tout comme dans le cas d'une stratégie de tampon switch aucun tri n'existe entre les enregistrements effectués depuis différentes CPU. Si un tri de ce type est requis, vous devez procéder au suivi de la variable timestamp dans le cadre de votre requête de suivi.

L'exemple suivant montre l'utilisation d'une directive #pragma option pour activer la mise en tampon circulaire :

#pragma D option bufpolicy=ring
#pragma D option bufsize=16k

syscall:::entry
/execname == $1/
{
	trace(timestamp);
}

syscall::rexit:entry
{
	exit(0);
}