Manuel de suivi dynamique Solaris

Stratégie switch

Par défaut, le tampon principal dispose d'une stratégie de tampon switch. Dans le cadre de cette stratégie, les tampons par CPU sont alloués par paires : un tampon est actif, l'autre non. Lorsqu'un consommateur tente de lire un tampon, le noyau commence par commuter les tampons actif et inactif. La commutation des tampons s'effectue de telle sorte qu'aucune donnée de suivi ne risque d'être perdue dans une fenêtre. Une fois que les tampons sont commutés, le tampon devenu inactif est copié dans le consommateur DTrace. Grâce à cette stratégie, le consommateur affiche toujours un tampon autocohérent : un tampon ne fait jamais l'objet d'un suivi et d'une copie simultanément. Cette technique permet également d'éviter l'introduction d'une fenêtre dans laquelle le suivi est mis à l'état de pause ou empêché d'une autre manière. La vitesse de commutation et de lecture du tampon est contrôlée par le consommateur avec l'option switchrate. Comme avec n'importe quelle option de vitesse, switchrate peut être spécifié avec n'importe quel suffixe temporel mais le suffixe par défaut est le nombre par seconde. Pour de plus amples informations sur les options, telles que switchrate, reportez-vous au Chapitre16Options et paramètres réglables.


Remarque –

Pour procéder au traitement du tampon principal au niveau utilisateur à un taux supérieur que le taux par défaut d'une fois par seconde, réglez la valeur de switchrate. Le système traite les actions qui entraînent l'activité au niveau utilisateur (telles que printa() et system()) lorsque l'enregistrement correspondant du tampon principal est traité. La valeur de switchrate détermine le taux auquel le système traite ces actions.


Dans le cadre de la stratégie switch, si une sonde activée donnée procède au suivi de davantage de données qu'il n'y a d'espace disponible dans le tampon principal actif, les données sont abandonnées et le nombre d'abandons par CPU est incrémenté. Dans l'éventualité d'un ou de plusieurs abandons, dtrace(1M) affiche un message similaire à l'exemple suivant :


dtrace: 11 drops on CPU 0

Si un enregistrement donné est supérieur à la taille totale du tampon, l'enregistrement est supprimé quelle que soit la stratégie de tampon. Vous pouvez réduire ou éliminer les suppressions soit en augmentant la taille du tampon principal avec l'option bufsize, soit en augmentant la vitesse de commutation avec l'option switchrate.

Dans le cadre de la stratégie switch, l'espace de travail pour copyin(), copyinstr() et alloca() est alloué à l'extérieur du tampon actif.