• V
    cfq-iosched: Remove prio_change logic for workload selection · 65b32a57
    Vivek Goyal 提交于
    o CFQ now internally divides cfq queues in therr workload categories. sync-idle,
      sync-noidle and async. Which workload to run depends primarily on rb_key
      offset across three service trees. Which is a combination of mulitiple things
      including what time queue got queued on the service tree.
    
      There is one exception though. That is if we switched the prio class, say
      we served some RT tasks and again started serving BE class, then with-in
      BE class we always started with sync-noidle workload irrespective of rb_key
      offset in service trees.
    
      This can provide better latencies for sync-noidle workload in the presence
      of RT tasks.
    
    o This patch gets rid of that exception and which workload to run with-in
      class always depends on lowest rb_key across service trees. The reason
      being that now we have multiple BE class groups and if we always switch
      to sync-noidle workload with-in group, we can potentially starve a sync-idle
      workload with-in group. Same is true for async workload which will be in
      root group. Also the workload-switching with-in group will become very
      unpredictable as it now depends whether some RT workload was running in
      the system or not.
    Signed-off-by: NVivek Goyal <vgoyal@redhat.com>
    Reviewed-by: NGui Jianfeng <guijianfeng@cn.fujitsu.com>
    Acked-by: NCorrado Zoccolo <czoccolo@gmail.com>
    Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
    65b32a57
cfq-iosched.c 97.9 KB