コマンドごとの読み取りに要した時間総計を見るのではなく、「何回の呼び出しがあって、それぞれの所用時間はどの程度の配分になっているのか」を知りたいケースもある。
この目的のためには、quantize集計関数とlquantize集計関数が用意されている。
quantize集計関数は結果を2の累乗で、lquantize関数は指定した数値単位ごとに区切り、それぞれ「どの値がどの頻度で現われるのか」をグラフ化するものだ。ここでは、リスト2のreturnプローブ処理を次のように変更する。
syscall::read:return
{
@time[execname] = quantize (timestamp - self->time);
}
すると、実行結果は、次のようになる。
# dtrace -s filereadtime.d
^C
cat
value ------------- Distribution ------------- count
4096 | 0
8192 |@@@@@@@@@@ 1
16384 |@@@@@@@@@@@@@@@@@@@@ 2
32768 |@@@@@@@@@@ 1
65536 | 0
more
value ------------- Distribution ------------- count
8192 | 0
16384 |@@@@@@@@@@ 1
32768 |@@@@@@@@@@@@@@@@@@@@ 2
65536 | 0
:
この出力形式の読み取り方は、例えばcatの部分について見れば、
の計4回の呼び出しがされたという意味になる。
このようにquantize集計関数を使えば、単純な総計を見るのではなく、「どの値がどのような頻度で発生するのか」を調べることができるのだ。
Copyright © ITmedia, Inc. All Rights Reserved.