Skip to content
  • Tejun Heo's avatar
    cfq-iosched: enable full blkcg hierarchy support · d02f7aa8
    Tejun Heo authored
    
    
    With the previous two patches, all cfqg scheduling decisions are based
    on vfraction and ready for hierarchy support.  The only thing which
    keeps the behavior flat is cfqg_flat_parent() which makes vfraction
    calculation consider all non-root cfqgs children of the root cfqg.
    
    Replace it with cfqg_parent() which returns the real parent.  This
    enables full blkcg hierarchy support for cfq-iosched.  For example,
    consider the following hierarchy.
    
            root
          /      \
       A:500      B:250
      /     \
     AA:500  AB:1000
    
    For simplicity, let's say all the leaf nodes have active tasks and are
    on service tree.  For each leaf node, vfraction would be
    
     AA: (500  / 1500) * (500 / 750) =~ 0.2222
     AB: (1000 / 1500) * (500 / 750) =~ 0.4444
      B:                 (250 / 750) =~ 0.3333
    
    and vdisktime will be distributed accordingly.  For more detail,
    please refer to Documentation/block/cfq-iosched.txt.
    
    v2: cfq-iosched.txt updated to describe group scheduling as suggested
        by Vivek.
    
    v3: blkio-controller.txt updated.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
    d02f7aa8