Re: [RFC] IO Controller

From: Gui Jianfeng
Date: Mon May 04 2009 - 23:19:39 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/