Re: [RFC] IO Controller

From: Gui Jianfeng
Date: Tue Apr 07 2009 - 02:42:26 EST


Gui Jianfeng wrote:
> Vivek Goyal wrote:
>> On Thu, Apr 02, 2009 at 02:39:40PM +0800, Gui Jianfeng wrote:
>>> Vivek Goyal wrote:
>>>> Hi All,
>>>>
>>>> Here is another posting for IO controller patches. Last time I had posted
>>>> RFC patches for an IO controller which did bio control per cgroup.
>>>>
>>>> http://lkml.org/lkml/2008/11/6/227
>>>>
>>>> One of the takeaway from the discussion in this thread was that let us
>>>> implement a common layer which contains the proportional weight scheduling
>>>> code which can be shared by all the IO schedulers.
>>>>
>>>
>>> Hi Vivek,
>>>
>>> I did some tests on my *old* i386 box(with two concurrent dd running), and notice
>>> that IO Controller doesn't work fine in such situation. But it can work perfectly
>>> in my *new* x86 box. I dig into this problem, and i guess the major reason is that
>>> my *old* i386 box is too slow, it can't ensure two running ioqs are always backlogged.
>> Hi Gui,
>>
>> Have you run top to see what's the percentage cpu usage. I suspect that
>> cpu is not keeping up pace disk to enqueue enough requests. I think
>> process might be blocked somewhere else so that it could not issue
>> requests.
>>
>>> If that is the case, I happens to have a thought. when an ioq uses up it time slice,
>>> we don't expire it immediately. May be we can give a piece of bonus time for idling
>>> to wait new requests if this ioq's finish time and its ancestor's finish time are all
>>> much smaller than other entities in each corresponding service tree.
>> Have you tried it with "fairness" enabled? With "fairness" enabled, for
>> sync queues I am waiting for one extra idle time slice "8ms" for queue
>> to get backlogged again before I move to the next queue?
>>
>> Otherwise try to increase the idle time length to higher value say "12ms"
>> just to see if that has any impact.
>>
>> Can you please also send me output of blkparse. It might give some idea
>> how IO schedulers see IO pattern.
>
> Hi Vivek,
>
> Sorry for the late reply, I tried the "fairness" patch, it seems not working.
> I'v also tried to extend the idle value, not working either.
> The blktrace output is attached. It seems that the high priority ioq is deleting
> from busy tree too often due to lacking of requests. My box is single CPU and CPU
> speed is a little slow. May be two concurrent dd is contending CPU to submit
> requests, that's the reason for not always backlogged for ioqs.

Hi Vivek,

Sorry for bothering, there were some configure errors when i tested, and got the improper
result.
The "fairness" patch seems to work fine now! It makes the high priority ioq *always* backlogged :)

>
>> Thanks
>> Vivek
>>
>>
>>
>

--
Regards
Gui Jianfeng

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/