Hi Martin,
I have tested this patch and found something needed to be correct. My comments
inline.
On 2017/11/18 8:11, Martin Wilck wrote:
> The log standard deviation can be calculated much more simply
> by realizing
>
> sum_n (x_i - avg(x))^2 == sum_n x_i^2 - n * avg(x)^2
>
> @@ -340,8 +323,14 @@ int getprio(struct path *pp, char *args, unsigned int
> timeout)
> ".It is recommend to be set larger",
> pp->dev, base_num);
>
> + standard_deviation = sqrt((sum_squares - lg_toldelay * lg_toldelay)
> + / (io_num -1));
>
This assignment is wrong. It gets a "NAN" for standard_deviation.
It should be the following equation according to sum_n (x_i - avg(x))^2 ==
sum_n x_i^2 - n * avg(x)^2
standard_deviation = sqrt((sum_squares - io_num* lg_avglatency* lg_avglatency)/
(io_num -1));
= sqrt((sum_squares - lg_toldelay* lg_avglatency)/ (io_num
-1));
> rc = calcPrio(lg_avglatency, lg_maxavglatency, lg_minavglatency);
>
> + pp_pl_log(3, "%s: latency avg=%.2e uncertainty=%.1f prio=%d\n",
> + pp->dev, exp(lg_avglatency * lg_base),
> + exp(standard_deviation * lg_base), rc);
> +
I still have the doubt about the computation of the "uncertainty" item.
Because I have observed that the uncertainty is in the range of 1.3 ~ 1.6
whenever
the base_num varies from 1.1 to 10.
Do you mean the uncertainty as the "Error function" of (log) normal
distribution?
Here is the definition of https://en.wikipedia.org/wiki/Error_function
I prefer to using "Error function" that describes accumulated probability of
how prio
locates in the (-inf, prio-1) and (prio+1, +inf).
Thanks
Guan
--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel