Thread (52 messages) 52 messages, 3 authors, 2015-01-10

Re: [PATCHSET RFC block/for-next] writeback: cgroup writeback support

From: Tejun Heo <tj@kernel.org>
Date: 2015-01-06 21:44:26
Also in: linux-fsdevel, linux-mm, lkml

Hello, again.  A bit of addition.

On Tue, Jan 06, 2015 at 04:25:37PM -0500, Tejun Heo wrote:
...
Overall design
--------------
What's going on in this patchset is fairly straight forward.  The main
thing which is happening is that a bdi is being split into multiple
per-cgroup pieces.  Each split bdi, represented by bdi_writeback,
behaves mostly identically with how bdi behaved before.

Complications mostly arise from filesystems and inodes having to deal
with multiple split bdi's instead of one, but those are mostly
straight-forward 1:N mapping issues.  It does get tedious here and
there but doesn't complicate the overall picture.  This
straight-forwardness pays off when dealing with interaction issues
which would have been extremely hairy otherwise.  More on this while
discussing balance_dirty_pages.

...
Missing pieces
--------------
...
* balance_dirty_pages currently doesn't consider the task's memcg when
  calculating the number of dirtyable pages.  This means that tasks in
  memcg won't have the benefit of smooth background writeback and will
  bump into direct reclaim all the time.  This has always been like
  this but with cgroup writeback support, this is also finally
  fixable.  I'll work on this as the earlier part gets settled.
This has always been a really thorny issue but now that each wb
behaves as an independent writeback domain, this can be solved nicely.
Each cgroup can carry the fraction of writebandwidth against the whole
system and each task can carry its fraction against its memcg.
balance_dirty_pages can now stagger these two ratios and then apply it
against the memory which *may* be dirtyable to the task's memcg and
then throttle the dirtier accordingly.  This works out exactly as a
straight-forward extension of the global logic which is proven to
work.  This really is pieces falling into places.

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help