Re: [PATCH 14/19] mm: Introduce a cgroup for pinned memory

From: Waiman Long
Date: Mon Feb 06 2023 - 20:01:50 EST


On 2/6/23 17:39, Yosry Ahmed wrote:
On Mon, Feb 6, 2023 at 2:36 PM Tejun Heo <tj@xxxxxxxxxx> wrote:
On Mon, Feb 06, 2023 at 02:32:10PM -0800, Yosry Ahmed wrote:
I guess it boils down to which we want:
(a) Limit the amount of memory processes in a cgroup can be pinned/locked.
(b) Limit the amount of memory charged to a cgroup that can be pinned/locked.

The proposal is doing (a), I suppose if this was part of memcg it
would be (b), right?

I am not saying it should be one or the other, I am just making sure
my understanding is clear.
I don't quite understand what the distinction would mean in practice. It's
just odd to put locked memory in a separate controller from interface POV.
Assume we have 2 cgroups, A and B. A process in cgroup A creates a
tmpfs file and writes to it, so the memory is now charged to cgroup A.
Now imagine a process in cgroup B tries to lock this memory.
- With (a) the amount of locked memory will count toward's cgroup A's
limit, because cgroup A is charged for the memory.
- With (b) the amount of locked memory will count toward's cgroup B's
limit, because a process in cgroup B is locking the memory.

I agree that it is confusing from an interface POV.

If it should not be part of the memcg, does it make sense to make it a resource in the existing misc controller? I believe we don't want a proliferation of new cgroup controllers.

Cheers,
Longman