• Tejun Heo's avatar
    blk-iocost: revamp debt handling · c421a3eb
    Tejun Heo authored
    Debt handling had several issues.
    
    * How much inuse a debtor carries wasn't clearly defined. inuse would be
      driven down over time from not issuing IOs but it'd be better to clamp it
      to minimum immediately once in debt.
    
    * How much can be paid off was determined by hweight_inuse. As inuse was
      driven down, the payment amount would fall together regardless of the
      debtor's active weight. This means that the debtors were punished harshly.
    
    * ioc_rqos_merge() wasn't calling blkcg_schedule_throttle() after
      iocg_kick_delay().
    
    This patch revamps debt handling so that
    
    * Debt handling owns inuse for iocgs in debt and keeps them at zero.
    
    * Payment amount is determined by hweight_active. This is more deterministic
      and safer than hweight_inuse but still far from ideal in that it doesn't
      factor in possible donations from other iocgs for debt payments. This
      likely needs further improvements in the future.
    
    * iocg_rqos_merge() now calls blkcg_schedule_throttle() as necessary.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Andy Newell <newella@fb.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    c421a3eb
blk-iocost.c 87.1 KB