]> git.baikalelectronics.ru Git - kernel.git/commit
cfq-iosched: rework the whole round-robin list concept
authorJens Axboe <jens.axboe@oracle.com>
Fri, 20 Apr 2007 12:27:50 +0000 (14:27 +0200)
committerJens Axboe <axboe@nelson.home.kernel.dk>
Mon, 30 Apr 2007 07:01:21 +0000 (09:01 +0200)
commitad826732d08faba5ade468142794e6692be9af85
tree450d0f92533184d85ac00ab1625460fe0be4cda7
parentdd15d9445ea02b69389e150d65a5e7124e093f93
cfq-iosched: rework the whole round-robin list concept

Drawing on some inspiration from the CFS CPU scheduler design, overhaul
the pending cfq_queue concept list management. Currently CFQ uses a
doubly linked list per priority level for sorting and service uses.
Kill those lists and maintain an rbtree of cfq_queue's, sorted by when
to service them.

This unfortunately means that the ionice levels aren't as strong
anymore, will work on improving those later. We only scale the slice
time now, not the number of times we service. This means that latency
is better (for all priority levels), but that the distinction between
the highest and lower levels aren't as big.

The diffstat speaks for itself.

 cfq-iosched.c |  363 +++++++++++++++++---------------------------------
 1 file changed, 125 insertions(+), 238 deletions(-)

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/cfq-iosched.c