Re: [RFC PATCH] mm: memcontrol: memory+swap accounting for cgroup-v2
From: Shakeel Butt <hidden>
Date: 2017-12-19 15:12:25
Also in:
linux-mm, lkml
On Tue, Dec 19, 2017 at 4:49 AM, Michal Hocko [off-list ref] wrote:
On Mon 18-12-17 16:01:31, Shakeel Butt wrote:quoted
The memory controller in cgroup v1 provides the memory+swap (memsw) interface to account to the combined usage of memory and swap of the jobs. The memsw interface allows the users to limit or view the consistent memory usage of their jobs irrespectibe of the presense of swap on the system (consistent OOM and memory reclaim behavior). The memory+swap accounting makes the job easier for centralized systems doing resource usage monitoring, prediction or anomaly detection. In cgroup v2, the 'memsw' interface was dropped and a new 'swap' interface has been introduced which allows to limit the actual usage of swap by the job. For the systems where swap is a limited resource, 'swap' interface can be used to fairly distribute the swap resource between different jobs. There is no easy way to limit the swap usage using the 'memsw' interface. However for the systems where the swap is cheap and can be increased dynamically (like remote swap and swap on zram), the 'memsw' interface is much more appropriate as it makes swap transparent to the jobs and gives consistent memory usage history to centralized monitoring systems. This patch adds memsw interface to cgroup v2 memory controller behind a mount option 'memsw'. The memsw interface is mutually exclusive with the existing swap interface. When 'memsw' is enabled, reading or writing to 'swap' interface files will return -ENOTSUPP and vice versa. Enabling or disabling memsw through remounting cgroup v2, will only be effective if there are no decendants of the root cgroup. When memsw accounting is enabled then "memory.high" is comapred with memory+swap usage. So, when the allocating job's memsw usage hits its high mark, the job will be throttled by triggering memory reclaim.From a quick look, this looks like a mess.
The main motivation behind this patch is to convince that memsw has genuine use-cases. How to provide memsw is still in RFC stage. Suggestions and comments are welcomed.
We have agreed to go with the current scheme for some good reasons.
Yes I agree, when the swap is a limited resource the current 'swap' interface should be used to fairly distribute it between different jobs.
There are cons/pros for both approaches but I am not convinced we should convolute the user API for the usecase you describe.
Yes, there are pros & cons, therefore we should give users the option to select the API that is better suited for their use-cases and environment. Both approaches are not interchangeable. We use memsw internally for use-cases I mentioned in commit message. This is one of the main blockers for us to even consider cgroup-v2 for memory controller.
quoted
Signed-off-by: Shakeel Butt <redacted>
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>