libmultipath: path latency: remove warnings
authorMartin Wilck <mwilck@suse.com>
Sat, 13 Jan 2018 21:19:38 +0000 (22:19 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 7 Mar 2018 08:31:19 +0000 (09:31 +0100)
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

index e764f1d..765265c 100644 (file)
@@ -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));