コマンドごとの読み取りに要した時間総計を見るのではなく、「何回の呼び出しがあって、それぞれの所用時間はどの程度の配分になっているのか」を知りたいケースもある。
この目的のためには、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.