Re: 2.6.20-rc2+: CFQ halving disk throughput.

Mark Lord
2007-01-02T15:12:09Z

Jens Axboe wrote:
> On Tue, Jan 02 2007, Jens Axboe wrote:
>> On Tue, Jan 02 2007, Rene Herman wrote:
>>> Jens Axboe wrote:
>>>
>>>> On Mon, Jan 01 2007, Andrew Morton wrote:
>>>>> The patch would appear to need this fix:
>>>>>
>>>>> --- a/block/cfq-iosched.c~a
>>>>> +++ a/block/cfq-iosched.c
>>>>> @@ -592,7 +592,7 @@ static int cfq_allow_merge(request_queue
>>>>> if (cfqq == RQ_CFQQ(rq))
>>>>> return 1;
>>>>>
>>>>> - return 1;
>>>>> + return 0;
>>>>> }
>>>>>
>>>>> static inline void
>>>>> _
>>>>>
>>>>> But that might not fix things...
>>>> Yeah it is, but I don't think it'll fix it (if anything, it'll be more
>>>> conservative).
>>> (to possibly save others from trying -- no, doesn't fix any)
>> As expected. The issue is rq_is_sync(rq) takes the data direction into
>> account as well, while bio_sync() only checks the sync bit. This should
>> fix it.
>
> And here a little more relaxed version, as Mark Lord suggested. We allow
> merge of async bio into a sync request, but not vice versa.
>
> Both patches pending testing, will do so now.

Performance is right back where it should be now, thanks!

I did have to massage the second patch to get it to apply cleanly
after the first patch. You may want to regenerate it against -rc3.

Cheers