• NeilBrown's avatar
    md: allow resync to go faster when there is competing IO. · ac8fa419
    NeilBrown authored
    When md notices non-sync IO happening while it is trying
    to resync (or reshape or recover) it slows down to the
    set minimum.
    
    The default minimum might have made sense many years ago
    but the drives have become faster.  Changing the default
    to match the times isn't really a long term solution.
    
    This patch changes the code so that instead of waiting until the speed
    has dropped to the target, it just waits until pending requests
    have completed.
    This means that the delay inserted is a function of the speed
    of the devices.
    
    Testing shows that:
     - for some loads, the resync speed is unchanged.  For those loads
       increasing the minimum doesn't change the speed either.
       So this is a good result.  To increase resync speed under such
       loads we would probably need to increase the resync window
       size.
    
     - for other loads, resync speed does increase to a reasonable
       fraction (e.g. 20%) of maximum possible, and throughput of
       the load only drops a little bit (e.g. 10%)
    
     - for other loads, throughput of the non-sync load drops quite a bit
       more.  These seem to be latency-sensitive loads.
    
    So it isn't a perfect solution, but it is mostly an improvement.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    ac8fa419
md.c 233 KB