Handbuch zur dynamischen Ablaufverfolgung in Solaris

Verwerfen von Spekulationen

Zum Verwerfen von Spekulationen verwenden Sie die Funktion commit. () Das Verwerfen eines spekulativen Puffers bedeutet, dass sein Inhalt gelöscht wird. Wenn die Spekulation nur auf der die Funktion discard() aufrufenden CPU aktiv war, wird der Puffer unverzüglich für nachfolgende Aufrufe von speculation() verfügbar . War die Spekulation auf mehreren CPUs aktiv, wird der verworfene Puffer erst kurz nach dem discard()-Aufruf für nachfolgende Aufrufe von speculation() verfügbar. Dabei übersteigt die Zeit zwischen einem discard()-Aufruf auf einer CPU und der Freigabe des Puffers für nachfolgende Spekulationen garantiert nicht die durch die Bereinigungsfrequenz vorgegebene Dauer. Wenn zum Zeitpunkt des Aufrufs von speculation() kein Puffer verfügbar ist, da alle spekulativen Puffer derzeit verworfen oder übergeben werden, wird eine dtrace-Meldung wie in folgendem Beispiel generiert:


dtrace: 905 failed speculations (available buffer(s) still busy)

Die Wahrscheinlichkeit, dass kein Puffer verfügbar ist, lässt sich durch Anpassen der Menge der spekulativen Puffer oder der Bereinigungsfrequenz herabsetzen. Ausführliche Informationen dazu finden Sie unter Spekulationsoptionen und Abstimmung.