15 May, 2020
1 commit
-
This new selector keeps an exponential moving average of the service
time for each path (losely defined as delta between start_io and
end_io), and uses this along with the number of inflight requests to
estimate future service time for a path. Since we don't have a prober
to account for temporally slow paths, re-try "slow" paths every once in
a while (num_paths * historical_service_time). To account for fast paths
transitioning to slow, if a path has not completed any request within
(num_paths * historical_service_time), limit the number of outstanding
requests. To account for low volume situations where number of
inflight IOs would be zero, the last finish time of each path is
factored in.Signed-off-by: Khazhismel Kumykov
Co-developed-by: Gabriel Krisman Bertazi
Signed-off-by: Gabriel Krisman Bertazi
Signed-off-by: Mike Snitzer