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

From: Waiman Long
Date: Tue Aug 18 2020 - 15:30:16 EST


On 8/18/20 5:27 AM, Chris Down wrote:
peterz@xxxxxxxxxxxxx writes:
On Mon, Aug 17, 2020 at 10:08:23AM -0400, Waiman Long wrote:
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.

The fact is that we don't have that in RHEL8 yet and cgroup v2 is still not the default at the moment.

I am planning to backport the throttling patches to RHEL and hopefully can switch to use cgroup v2 soon.

Cheers,
Longman