Enables the collection of quantile data for the measure identified by sName and nClass. Collected quantile data is shown in the overview report.
This function can be used before a measure is created and/or used, and must be located in the TInit transaction.
Due to memory limitations, Silk Performer does not collect absolute measurements. Instead, a limited set of categories is created and Silk Performer counts how often a certain category is hit. The size of a category is 1 millisecond for small measurements, for bigger measurements the upper boundary of the categories increases. To calculate the upper boundaries, the following formula is used (B stands for boundary):
B(n) = B(n-1) x (1+uGranularity)
This is the whole formula:
B(1) = 1ms B(n) = max(B(n-1) + 1ms, B(n-1) x (1+uGranularity))
For example: If the granularity is 1 percent and the upper boundary of a certain category is 1000 milliseconds, the next category will range from 1000 to 1010 milliseconds.
The maximum error of a measurement of 1000 milliseconds is 1 percent or 10 milliseconds.
Kernel.bdh
MeasureCalculateRawPercentiles( in sName : string allownull, in nClass : number, in bDisable : boolean optional, in uGranularity : number optional ): boolean;
true if successful
false otherwise
Parameter | Description |
---|---|
sName | Measure name that identifies the measure. When this parameter is set to NULL or "", quantile data collection is enabled for all measures of the provided measure type. |
nClass | Specifies the type of measure to retrieve.
To retrieve the value of a custom time measure, pass the MEASURE_TIMER_RESPONSETIME parameter to the function. To retrieve the value of a custom counter, pass the MEASURE_COUNTER_CUSTOMCOUNTER parameter to the function. To retrieve the value of an average counter, pass the MEASURE_COUNTER_AVERAGE parameter to the function. In any other case, pass any of the following parameters to the function, depending on the type of information you are interested in.
|
bDisable | Optional: Specifies whether percentiles calculation should be disabled or enabled (default is FALSE). |
uGranularity |
Optional: Precision of the quantile measurement in per mil. Can be one of the following values:
Lower granularity enables a more precise percentile calculation, but consumes more memory on each agent computer. The default
setting of
OPT_PERCENTILES_GRANULARITY_10_PER_MIL (1 percent) consumes up to 8kb memory per measure and virtual user container executable.
Important: With lower granularity settings, memory consumption grows exponentially.
|
benchmark MeasureBenchmarkName
use "kernel.bdh"
dclrand
r2 : RndUniF(5.0..55.0);
dcluser
user
User1
transactions
TInit : begin;
TMain : 1;
dcltrans
transaction TInit
begin
// enable quantile data for a custom measure
MeasureCalculateRawPercentiles("measure1", MEASURE_COUNTER_CUSTOMCOUNTER,
false, OPT_PERCENTILES_GRANULARITY_1_PER_MIL);
end TInit;
transaction TMain
var
i : number;
f, fV : float;
begin
// get 500 random numbers in the range of 5.0 to 55.0
for i := 1 to 500 do
MeasureSetFloat("measure1", MEASURE_COUNTER_CUSTOMCOUNTER , r2);
end;
// show percentile estimation for 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100%
f:= 0.1;
while f < 1.01 do
MeasureGetPercentile("measure1", MEASURE_COUNTER_CUSTOMCOUNTER, f, fV);
Print(string(f) + " = " + string(fV));
f := f + 0.1;
end;
end TMain;