• Shaohua Li's avatar
    CFQ: add think time check for group · 7700fc4f
    Shaohua Li authored
    Currently when the last queue of a group has no request, we don't expire
    the queue to hope request from the group comes soon, so the group doesn't
    miss its share. But if the think time is big, the assumption isn't correct
    and we just waste bandwidth. In such case, we don't do idle.
    
    [global]
    runtime=30
    direct=1
    
    [test1]
    cgroup=test1
    cgroup_weight=1000
    rw=randread
    ioengine=libaio
    size=500m
    runtime=30
    directory=/mnt
    filename=file1
    thinktime=9000
    
    [test2]
    cgroup=test2
    cgroup_weight=1000
    rw=randread
    ioengine=libaio
    size=500m
    runtime=30
    directory=/mnt
    filename=file2
    
    	patched		base
    test1	64k		39k
    test2	548k		540k
    total	604k		578k
    
    group1 gets much better throughput because it waits less time.
    
    To check if the patch changes behavior of queue without think time. I also
    tried to give test1 2ms think time or no think time. The test result is stable.
    The thoughput doesn't change with/without the patch.
    Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
    7700fc4f
cfq-iosched.c 107 KB