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

    Khazhismel Kumykov