llquantize
対数線形度数分布を集積体に格納します。
void llquantize(expr, int32_t factor, int32_t from, int32_t to [, int32_t steps [, int32_t incr]])
llquantize
関数は、式の対数線形度数分布を表示するために使用する集積関数です。対数の底factorは、指数の下限from、指数の上限toおよびステップ数の桁stepsとともに指定されます。ステップ数の指定がない場合は、デフォルト値の1が使用されます。各ステップの増分量を指定するために、オプションの整数incrを指定できます。
対数線形集積関数llquantize
は、対数関数と線形関数の両方の機能が組み合されています。quantize
関数は2を底とする対数を使用しますが、llquantize
では底、最小指数および最大指数を指定します。さらに、それぞれの対数範囲は、指定したステップ数と増分値(指定した場合)によって線形に細分されます。
例7-22 システム・コールの待機時間を視覚化するためにllquantizeを使用する方法
このスクリプトは、すべてのシステム・コール・エントリとリターン・コールをモニターします。各コールに費やされた時間は、それぞれのタイムスタンプを使用して計算されます。集積体は、マグニチュード当たり10ステップで、マグニチュード3からマグニチュード5 (含む)までの係数10の対数線形量子化を作成するために使用されます。このスクリプトの出力は、マイクロ秒の範囲でのシステム・コールの待機時間を視覚化します。
次のような出力が表示されます。syscall:::entry
{
self->ts = timestamp;
}
syscall:::return
/ self->ts /
{
@ = llquantize(timestamp - self->ts, 10, 3, 5, 5);
self->ts = 0;
}
value ------------- Distribution ------------- count
-1000 | 0
abs() < 1000 |@@@@@@@@@@@@@@@ 2888133
1000 |@@@@@ 1017345
2000 |@@@@ 714432
4000 |@ 266057
6000 |@ 118797
8000 | 84332
10000 |@ 152108
20000 |@ 125154
40000 | 49334
60000 | 38374
80000 | 31739
100000 | 91033
200000 | 51153
400000 | 20343
600000 | 10685
800000 | 6970
>= 1000000 |@@@@@@@@@@@ 2081856