CFQ: add think time check for group
authorShaohua Li <shaohua.li@intel.com>
Tue, 12 Jul 2011 12:24:56 +0000 (14:24 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Tue, 12 Jul 2011 12:24:56 +0000 (14:24 +0200)
commit7700fc4f675fa38094e78e345b594363a2fd895b
tree000ae1fb3d825240b7e78ad8d3db66be168ffe94
parentf5f2b6ceb23e02ff35c6dbc6a39aa776ace99cda
CFQ: add think time check for group

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: Shaohua Li <shaohua.li@intel.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
block/cfq-iosched.c