On Tue, 21 Apr 2009 22:49:06 +0200 Andrea Righi <righi.andrea@xxxxxxxxx> wrote: > yep! right. Anyway, it's not completely wrong to account dirty pages in > this way. The dirty pages actually belong to cgroup A and providing per > cgroup upper limits of dirty pages could help to equally distribute > dirty pages, that are hard/slow to reclaim, among cgroups. > > But this is definitely another problem. > Hmm, my motivation for dirty accounting in memcg is for supporting dirty_ratio to do smooth page reclaiming and to kick background-write-out. > And it doesn't help for the problem described by Ted, expecially for the > IO controller. The only way I see to correctly handle that case is to > limit the rate of dirty pages per cgroup, accounting the dirty activity > to the cgroup that firstly touched the page (and not the owner as > intended by the memory controller). > Owner of the page should know dirty ratio, too. > And this should be probably strictly connected to the IO controller. If > we throttle or delay the dispatching/submission of some IO requests > without throttling the dirty pages rate a cgroup could completely waste > its own available memory with dirty (hard and slow to reclaim) pages. > > That is in part the approach I used in io-throttle v12, adding a hook in > balance_dirty_pages_ratelimited_nr() to throttle the current task when > cgroup's IO limit are exceeded. Argh! > > So, another proposal could be to re-add in io-throttle v14 the old hook > also in balance_dirty_pages_ratelimited_nr(). > > In this way io-throttle would: > > - use page_cgroup infrastructure and page_cgroup->flags to encode the > cgroup id that firstly dirtied a generic page > - account and opportunely throttle sync and writeback IO requests in > submit_bio() > - at the same time throttle the tasks in > balance_dirty_pages_ratelimited_nr() if the cgroup they belong has > exhausted the IO BW (or quota, share, etc. in case of proportional BW > limit) > IMHO, io-controller should just work as I/O subsystem as bdi. Now, per-bdi dirty_ratio is suppoted and it seems to work well. Can't we write a function like bdi_writeout_fraction() ?; It will be a simple choice. Thanks, -Kame _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers