Messages in this thread | | | From | Jeff Moyer <> | Subject | Re: [PATCH 2/3] cfq-iosched: Implement a tunable group_idle | Date | Wed, 21 Jul 2010 16:54:03 -0400 |
| |
Vivek Goyal <vgoyal@redhat.com> writes:
> On Wed, Jul 21, 2010 at 03:40:44PM -0400, Jeff Moyer wrote: >> Vivek Goyal <vgoyal@redhat.com> writes: >> >> > o Implement a new tunable group_idle, which allows idling on the group >> > instead of a cfq queue. Hence one can set slice_idle = 0 and not idle >> > on the individual queues but idle on the group. This way on fast storage >> > we can get fairness between groups at the same time overall throughput >> > improves. >> > >> > Signed-off-by: Vivek Goyal <vgoyal@redhat.com> >> > --- >> [snip] >> > @@ -1929,13 +1941,21 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd) >> > return; >> > } >> > >> > + /* There are other queues in the group, don't do group idle */ >> > + if (group_idle && cfqq->cfqg->nr_cfqq > 1) >> > + return; >> > + >> > cfq_mark_cfqq_wait_request(cfqq); >> > >> > - sl = cfqd->cfq_slice_idle; >> > + if (group_idle) >> > + sl = cfqd->cfq_group_idle; >> > + else >> > + sl = cfqd->cfq_slice_idle; >> >> What happens when both group_idle and slice_idle are set? > > slice_idle prevails. Notice that "group_idle" is a local variable which > is set to 1 only if we decide not to idle on the cfq queue.
Ah, silly me.
Cheers, Jeff
| |