[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Tue, 05 May 2009 11:18:40 +0800
From: Gui Jianfeng <guijianfeng@...fujitsu.com>
To: Nauman Rafique <nauman@...gle.com>
CC: Vivek Goyal <vgoyal@...hat.com>, dpshah@...gle.com,
lizf@...fujitsu.com, mikew@...gle.com, fchecconi@...il.com,
paolo.valente@...more.it, jens.axboe@...cle.com,
ryov@...inux.co.jp, fernando@...ellilink.co.jp,
s-uchida@...jp.nec.com, taka@...inux.co.jp, arozansk@...hat.com,
jmoyer@...hat.com, oz-kernel@...hat.com, dhaval@...ux.vnet.ibm.com,
balbir@...ux.vnet.ibm.com, linux-kernel@...r.kernel.org,
containers@...ts.linux-foundation.org, akpm@...ux-foundation.org,
menage@...gle.com, peterz@...radead.org
Subject: Re: [RFC] IO Controller
Nauman Rafique wrote:
...
> Hi Gui,
> This patch should solve the problems reported by you. Please let me know if it does not work.
> @Vivek, this has a few more changes after the patch I sent you separately.
>
Hi Nauman,
I'v tried your patch, seems the bug has been fixed. thanks!
> DESC
> Add ref counting for io_group.
> EDESC
>
> Reference counting for io_group solves many problems, most of which
> occured when we tried to delete the cgroup. Earlier, ioqs were being
> moved out of cgroup to root cgroup. That is problematic in many ways:
> First, the pending requests in queues might get unfair service, and
> will also cause unfairness for other cgroups at the root level. This
> problem can become signficant if cgroups are created and destroyed
> relatively frequently. Second, moving queues to root cgroups was
> complicated and was causing many BUG_ON's to trigger. Third, there is
> a single io queue in AS, Deadline and Noop within a cgroup; and it
> does not make sense to move it to the root cgroup. The same is true of
> async queues.
>
> Requests already keep a reference on ioq, so queues keep a reference on
> cgroup. For async queues in CFQ, and single ioq in other schedulers,
> io_group also keeps are reference on io_queue. This reference on ioq
> is dropped when the queue is released (elv_release_ioq). So the queue
> can be freed.
>
> When a queue is released, it puts the reference to io_group and the
> io_group is released after all the queues are released. Child groups
> also take reference on parent groups, and release it when they are
> destroyed.
>
> Also we no longer need to maintain a seprate linked list of idle
> entities, which was maintained only to help release the ioq references
> during elevator switch. The code for releasing io_groups is reused for
> elevator switch, resulting in simpler and tight code.
>
--
Regards
Gui Jianfeng
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists