Messages in this thread | | | Date | Sun, 22 Jun 2008 12:41:48 -0700 (PDT) | From | Eric Rannaud <> | Subject | Re: i/o bandwidth controller infrastructure |
| |
On Tue, 17 Jun 2008, Andrea Righi wrote: > > With this bandwidth controller, a cpu-intensive job which otherwise does > > not care about its IO > > performance needs to be pin-point accurate about IO bandwidth required in > > order to not suffer > > from cpu-throttling. IMHO, if a cgroup is exceeding its limit for a given > > resource, the throttling > > should be done _only_ for that resource. > > I understand your point of view. It would be nice if we could just > "disable" the i/o for a cgroup that exceeds its limit, instead of > scheduling some sleep()s, so the tasks running in this cgroup would be > able to continue their non-i/o operations as usual. > > However, how to do if the tasks continue to perform i/o ops under this > condition? we could just cache the i/o in memory and at the same time > reduce the i/o priority of those tasks' requests, but this would require > a lot of memory, more space in the page cache, and probably could lead > to potential OOM conditions. A safer approach IMHO is to force the tasks > to wait synchronously on each operation that directly or indirectly > generates i/o. The last one is the solution implemented by this > bandwidth controller.
What about AIO? Is this approach going to make the task sleep as well? Would it better to return from aio_write()/_read() with EAGAIN?
Thanks.
| |