Skip to content

Commit

Permalink
cfq: Make use of service count to estimate the rb_key offset
Browse files Browse the repository at this point in the history
For the moment, different workload cfq queues are put into different
service trees. But CFQ still uses "busy_queues" to estimate rb_key
offset when inserting a cfq queue into a service tree. I think this
isn't appropriate, and it should make use of service tree count to do
this estimation. This patch is for for-2.6.33 branch.

Signed-off-by: Gui Jianfeng <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
guijianfeng authored and Jens Axboe committed Nov 26, 2009
1 parent 32a87c0 commit 3586e91
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions block/cfq-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,11 +600,15 @@ cfq_find_next_rq(struct cfq_data *cfqd, struct cfq_queue *cfqq,
static unsigned long cfq_slice_offset(struct cfq_data *cfqd,
struct cfq_queue *cfqq)
{
struct cfq_rb_root *service_tree;

service_tree = service_tree_for(cfqq_prio(cfqq), cfqq_type(cfqq), cfqd);

/*
* just an approximation, should be ok.
*/
return (cfqd->busy_queues - 1) * (cfq_prio_slice(cfqd, 1, 0) -
cfq_prio_slice(cfqd, cfq_cfqq_sync(cfqq), cfqq->ioprio));
return service_tree->count * (cfq_prio_slice(cfqd, 1, 0) -
cfq_prio_slice(cfqd, cfq_cfqq_sync(cfqq), cfqq->ioprio));
}

/*
Expand Down

0 comments on commit 3586e91

Please sign in to comment.