• Tejun Heo's avatar
    iocost: replace nr_shortages cond in ioc_forgive_debts() with busy_level one · 33a1fe6d
    Tejun Heo authored
    Debt reduction was blocked if any iocg was short on budget in the past
    period to avoid reducing debts while some iocgs are saturated. However, this
    ends up unnecessarily blocking debt reduction due to temporary local
    imbalances when the device is generally being underutilized, while also
    failing to block when the underlying device is overwhelmed and the usage
    becomes low from high latency.
    
    Given that debt accumulation mostly happens with swapout bursts which can
    significantly deteriorate the underlying device's latency response, the
    current logic is not great.
    
    Let's replace it with ioc->busy_level based condition so that we block debt
    reduction when the underlying device is being saturated. ioc_forgive_debts()
    call is moved after busy_level determination.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    33a1fe6d
blk-iocost.c 93.4 KB