[dm-devel] [PATCH v2 20/20] libmultipath: path latency: remove warnings

Guan Junxiong guanjunxiong at huawei.com
Thu Feb 8 12:06:19 UTC 2018


Looks Good. Thanks for your improvement.

Reviewed-by Guan Junxiong <guanjunxiong at huawei.com>


On 2018/1/14 5:19, Martin Wilck wrote:
> The warnings at here are pointless. We are looking at a single
> path only. Firstly, the standdard deviation for this measurement
> can't be "too low" - the lower, the more precise the measurement,
> the better. Secondly, a high standard deviation indicates an
> unstable path with highly variable latency. Not good, but nothing
> to warn about here.
> 
> What matters for the selection of "base_num" is not how a single
> path behaves, but how different paths of the same path group relate
> to each other, which we don't know at this point at the code.
> 
> What we want to avoid is too fine a differentiation, in particular
> in combination with group_by_prio, because we'd loose the ability for
> load balancing. But this is rather a topic for the man page or a
> "best practices" document.
> ---
>  libmultipath/prioritizers/path_latency.c | 34 --------------------------------
>  1 file changed, 34 deletions(-)
> 
> diff --git a/libmultipath/prioritizers/path_latency.c b/libmultipath/prioritizers/path_latency.c
> index e764f1dd8a21..765265c02333 100644
> --- a/libmultipath/prioritizers/path_latency.c
> +++ b/libmultipath/prioritizers/path_latency.c
> @@ -289,40 +289,6 @@ int getprio(struct path *pp, char *args, unsigned int timeout)
>  		return DEFAULT_PRIORITY;
>  	}
>  
> -	standard_deviation = calc_standard_deviation(lg_path_latency,
> -			index, lg_avglatency);
> -	/*
> -	 * In calPrio(), we let prio y = f(x) = log(max, base) - log (x, base);
> -	 * So if we want to let the priority of the latency outside 2 standard
> -	 * deviations can be distinguished from the latency inside 2 standard
> -	 * deviation, in others words at most 95% are the same and at least 5%
> -	 * are different according interval estimation of normal distribution,
> -	 * we should warn the user to set the base_num to be smaller if the
> -	 * log(x_threshold, base) is small than 2 standard deviation.
> -	 * x_threshold is derived from:
> -	 * y + 1 = f(x) + 1 = f(x) + log(base, base), so x_threadshold =
> -	 * base_num; Note that we only can compare the logarithm of x_threshold
> -	 * with the standard deviation because the standard deviation is derived
> -	 * from logarithm of latency.
> -	 *
> -	 * therefore , we recommend the base_num to meet the condition :
> -	 * 1 <= 2 * standard_deviation
> -	 */
> -	pp_pl_log(5, "%s: standard deviation for logarithm of latency = %.6f",
> -			pp->dev, standard_deviation);
> -	if (standard_deviation <= 0.5)
> -		pp_pl_log(3, "%s: the base_num(%.3lf) is too big to distinguish different priority "
> -			  "of two far-away latency. It is recommend to be set smaller",
> -			  pp->dev, base_num);
> -	/*
> -	 * If the standard deviation is too large , we should also warn the user
> -	 */
> -
> -	if (standard_deviation > 4)
> -		pp_pl_log(3, "%s: the base_num(%.3lf) is too small to avoid noise disturbance "
> -			  ".It is recommend to be set larger",
> -			  pp->dev, base_num);
> -
>  	standard_deviation = sqrt((sum_squares - lg_toldelay * lg_avglatency)
>  				  / (io_num - 1));
>  
> 




More information about the dm-devel mailing list