Handbuch zur dynamischen Ablaufverfolgung in Solaris

Die Richtlinie fill und END-Prüfpunkte

END-Prüfpunkte werden normalerweise erst ausgelöst, wenn die Ablaufverfolgung durch den DTrace-Verbraucher ausdrücklich angehalten wird. END-Prüfpunkte werden garantiert nur auf einer CPU ausgelöst. Um welche CPU es sich dabei handelt, ist jedoch unbestimmt. Bei Verwendung von fill-Puffern wird die Ablaufverfolgung explizit angehalten, wenn mindestens einer der CPU-weiten Hauptpuffer als gefüllt markiert wurde. Wurde die Richtlinie fill ausgewählt, kann der END-Prüfpunkt unter Umständen auf einer CPU ausgelöst werden, die einen gefüllten Puffer besitzt. Um die Ablaufverfolgung mit END in fill-Puffern unterzubringen, berechnet DTrace die potenziell von END-Prüfpunkten belegte Speicherplatzmenge und subtrahiert diesen Speicherplatz von der Größe des Hauptpuffers. Ist die Nettogröße negativ, verweigert DTrace den Start und dtrace(1M) gibt eine entsprechende Fehlermeldung aus:


dtrace: END enablings exceed size of principal buffer

Der Reservierungsmechanismus gewährleistet, dass ein als gefüllt gekennzeichneter Puffer stets ausreichend Speicherplatz für einen END-Prüfpunkt bietet.