Handbuch zur dynamischen Ablaufverfolgung in Solaris

Übergeben von Spekulationen

Spekulationen übergeben Sie mit der Funktion commit. () Mit der Übergabe eines spekulativen Puffers werden dessen Daten in den Hauptpuffer kopiert. Wenn die Daten im angegebenen spekulativen Puffer den im Hauptpuffer verfügbaren Speicherplatz überschreiten, werden keine Daten kopiert und der Zähler für Auslassungen wird erhöht. Wurden in dem Puffer Daten von mehreren CPUs spekulativ aufgezeichnet, werden die spekulativen Daten auf der übergebenden CPU unverzüglich und die spekulativen Daten auf anderen CPUs erst kurz nach der commit()-Funktion kopiert. Folglich kann zwischen einer auf einer CPU beginnenden commit()-Funktion und dem Kopieren der Daten aus spekulativen Puffern in die Hauptpuffer auf allen CPUs einige Zeit vergehen. Diese Dauer überschreitet jedoch keinesfalls die durch die Bereinigungsfrequenz vorgegebene Dauer. Ausführliche Informationen dazu finden Sie unter Spekulationsoptionen und Abstimmung.

Ein übergebender spekulativer Puffer steht nachfolgenden speculation()-Aufrufen erst dann zur Verfügung, wenn jeder CPU-weite spekulative Puffer vollständig in den entsprechenden CPU-weiten Hauptpuffer kopiert wurde. In gleicher Weise werden nachfolgende Aufrufe von speculate() für den übergebenden Puffer kommentarlos verworfen und nachfolgende Aufrufe von commit() oder discard() schlagen kommentarlos fehl. Darüber hinaus darf eine Klausel mit einer commit()-Funktion keine Daten aufzeichnenden Aktionen enthalten. Eine Klausel kann jedoch mehrere commit()-Aufrufe zum Übergeben nicht zusammenhängender Puffer enthalten.