Handbuch zur dynamischen Ablaufverfolgung in Solaris

Löschen von Aggregaten

Wenn Sie mit DTrace einfache Überwachungsskripten erzeugen, können Sie die Werte in einem Aggregat mit der Funktion clear() regelmäßig löschen lassen. Diese Funktion nimmt als einzigen Parameter ein Aggregat an. Die Funktion clear() löscht nur die Werte des Aggregats; die Aggregatschlüssel bleiben erhalten. Ein Schlüssel mit dem Wert Null in einem Aggregat deutet folglich darauf hin, dass der Schlüssel zuvor einen Nicht-Nullwert besessen hatte, der bei einem clear()-Vorgang auf Null gesetzt wurde. Um sowohl die Werte als auch die Schlüssel eines Aggregats zu löschen, verwenden Sie die Funktion trunc(). Ausführliche Informationen dazu finden Sie unter·Abschneiden von Aggregaten.

Im nächsten Beispiel fügen wir clear() in Beispiel 9–1 ein:

#pragma D option quiet

BEGIN
{
	last = timestamp;
}

syscall:::entry
{
	@func[execname] = count();
}

tick-10sec
{
	normalize(@func, (timestamp - last) / 1000000000);
	printa(@func);
	clear(@func);
	last = timestamp;
}

Während Beispiel 9–1 die Frequenz der Systemaufrufe über die Lebensdauer des dtrace-Aufrufs zeigt, gibt das obige Beispiel nur die Rate für die letzten zehn Sekunden aus.