Handbuch zur dynamischen Ablaufverfolgung in Solaris

Die Richtlinie ring

Die DTrace-Pufferrichtlinie ring erweist sich bei der Ablaufverfolgung der zu einem Ausfall führenden Ereignisse als hilfreich. Wenn die Reproduktion des Ausfalls Stunden oder gar Tage dauern kann, ist es wahrscheinlich vorzuziehen, nur die neuesten Daten beizubehalten. Sobald ein Hauptpuffer voll ist, wird die Aufzeichnung beim ersten Eintrag fortgesetzt und überschreibt dadurch die ältesten Ablaufverfolgungsdaten. Der Ringpuffer wird durch Setzen der Option bufpolicy auf die Zeichenkette ring eingerichtet:


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

dtrace(1M) produziert, wenn zum Erzeugen eines Ringpuffers eingesetzt, erst dann eine Ausgabe, wenn der Prozess abgeschlossen ist. Dann wird der Ringpuffer verbraucht und verarbeitet. dtrace verarbeitet die einzelnen Ringpuffer in der Reihenfolge der CPUs. Innerhalb des Puffers einer CPU werden die Protokolle in chronologischer Reihenfolge von alt nach jung angezeigt. Analog zur Pufferrichtlinie switch wird für die Aufzeichnungen aus unterschiedlichen CPUs keine bestimmte Reihenfolge beachtet. Sollte eine solche Reihenfolge erforderlich sein, empfiehlt es sich, die Variable timestamp als Teil der Ablaufverfolgungsanforderung ebenfalls zu protokollieren.

Das folgende Beispiel veranschaulicht die Aktivierung der Ringpufferung mit einer #pragma option-Direktive:

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

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

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