Solaris 動的トレースガイド

集積体の消去

DTrace で単純な監視スクリプトを作成しているとき、clear() 関数を使って、集積体内の値を定期的に消去できます。この関数には、パラメータを 1 つだけ指定できます。パラメータとして指定できるのは、集積体だけです。clear() 関数で消去されるのは、集積体のだけです。集積体のキーは保持されます。したがって、集積体内に値ゼロのキーがある場合は、「このキーの値はかつてはゼロではなかったが、clear によってゼロが設定された」と解釈できます。()集積体の値とキーの両方を破棄するときは、trunc() を使用します。詳細については、「集積体の切り捨て」を参照してください。

以下は、例 9–1clear() を追加した例です。

#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;
}

例 9–1 では dtrace の呼び出し開始から終了までのシステムコールレートが出力されましたが、上記の例では、過去 10 秒間のシステムコールレートだけが出力されます。