Thread (42 messages) 42 messages, 8 authors, 2020-09-09

Re: [RFC PATCH 0/8] memcg: Enable fine-grained per process memory control

From: Dave Chinner <david@fromorbit.com>
Date: 2020-08-20 06:11:42
Also in: cgroups, linux-fsdevel, linux-mm, lkml

On Tue, Aug 18, 2020 at 01:55:59PM +0100, Matthew Wilcox wrote:
On Tue, Aug 18, 2020 at 12:04:44PM +0200, peterz@infradead.org wrote:
quoted
On Tue, Aug 18, 2020 at 10:27:37AM +0100, Chris Down wrote:
quoted
peterz@infradead.org writes:
quoted
On Mon, Aug 17, 2020 at 10:08:23AM -0400, Waiman Long wrote:
quoted
Memory controller can be used to control and limit the amount of
physical memory used by a task. When a limit is set in "memory.high" in
a v2 non-root memory cgroup, the memory controller will try to reclaim
memory if the limit has been exceeded. Normally, that will be enough
to keep the physical memory consumption of tasks in the memory cgroup
to be around or below the "memory.high" limit.

Sometimes, memory reclaim may not be able to recover memory in a rate
that can catch up to the physical memory allocation rate. In this case,
the physical memory consumption will keep on increasing.
Then slow down the allocator? That's what we do for dirty pages too, we
slow down the dirtier when we run against the limits.
We already do that since v5.4. I'm wondering whether Waiman's customer is
just running with a too-old kernel without 0e4b01df865 ("mm, memcg: throttle
allocators when failing reclaim over memory.high") backported.
That commit is fundamentally broken, it doesn't guarantee anything.

Please go read how the dirty throttling works (unless people wrecked
that since..).
Of course they did.

https://lore.kernel.org/linux-mm/ce7975cd-6353-3f29-b52c-7a81b1d07caa@kernel.dk/ (local)
Different thing. That's memory reclaim throttling, not dirty page
throttling.  balance_dirty_pages() still works just fine as it does
not look at device congestion. page cleaning rate is accounted in
test_clear_page_writeback(), page dirtying rate is accounted
directly in balance_dirty_pages(). That feedback loop has not been
broken...

And I compeltely agree with Peter here - the control theory we
applied to the dirty throttling problem is still 100% valid and so
the algorithm still just works all these years later. I've only been
saying that allocation should use the same feedback model for
reclaim throttling since ~2011...

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help