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