From: Roman Gushchin <roman.gushchin@linux.dev>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Muchun Song <muchun.song@linux.dev>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Shakeel Butt <shakeel.butt@linux.dev>,
Matthew Wilcox <willy@infradead.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Roman Gushchin <roman.gushchin@linux.dev>
Subject: [PATCH v1 00/14] mm: memcg: separate legacy cgroup v1 code and put under config option
Date: Tue, 28 May 2024 13:20:52 -0700 [thread overview]
Message-ID: <20240528202101.3099300-1-roman.gushchin@linux.dev> (raw)
Cgroups v2 have been around for a while and many users have fully adopted them,
so they never use cgroups v1 features and functionality. Yet they have to "pay"
for the cgroup v1 support anyway:
1) the kernel binary contains an unused cgroup v1 code,
2) some code paths have additional checks which are not needed,
3) some common structures like task_struct and mem_cgroup contain unused
cgroup v1-specific members.
Cgroup v1's memory controller has a number of features that are not supported
by cgroup v2 and their implementation is pretty much self contained.
Most notably, these features are: soft limit reclaim, oom handling in userspace,
complicated event notification system, charge migration. Cgroup v1-specific code
in memcontrol.c is close to 4k lines in size and it's intervened with generic
and cgroup v2-specific code. It's a burden on developers and maintainers.
This patchset aims to solve these problems by:
1) moving cgroup v1-specific memcg code to the new mm/memcontrol-v1.c file,
2) putting definitions shared by memcontrol.c and memcontrol-v1.c into the
mm/memcontrol-v1.h header,
3) introducing the CONFIG_MEMCG_V1 config option, turned off by default,
4) making memcontrol-v1.c to compile only if CONFIG_MEMCG_V1 is set.
If CONFIG_MEMCG_V1 is not set, cgroup v1 memory controller is still available
for mounting, however no memory-specific control knobs are present.
This patchset is based against mm-unstable tree (b610f75d19a34),
however a version based on mm-stable can be found here:
https://github.com/rgushchin/linux/tree/memcontrol_v1.1-stable .
rfc:
https://lwn.net/Articles/973082/
v1:
- switched to CONFIG_MEMCG_V1 being off by default based on LSFMMBPF
discussion [1]
- switched to memcg1_ prefix (Johannes)
- many minor fixes
- dropped patches which put struct memcg members under CONFIG_MEMCG_V1
(will post as a separate patchset)
[1]: https://lwn.net/Articles/974575/
MAINTAINERS | 2 +
include/linux/memcontrol.h | 156 ++++---
init/Kconfig | 9 +
mm/Makefile | 2 +
mm/memcontrol-v1.c | 2933 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mm/memcontrol-v1.h | 132 ++++++
mm/memcontrol.c | 4169 +++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------
mm/vmscan.c | 10 +-
8 files changed, 3794 insertions(+), 3619 deletions(-)
Suggested-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
Roman Gushchin (14):
mm: memcg: introduce memcontrol-v1.c
mm: memcg: move soft limit reclaim code to memcontrol-v1.c
mm: memcg: rename soft limit reclaim-related functions
mm: memcg: move charge migration code to memcontrol-v1.c
mm: memcg: rename charge move-related functions
mm: memcg: move legacy memcg event code into memcontrol-v1.c
mm: memcg: rename memcg_check_events()
mm: memcg: move cgroup v1 oom handling code into memcontrol-v1.c
mm: memcg: rename memcg_oom_recover()
mm: memcg: move cgroup v1 interface files to memcontrol-v1.c
mm: memcg: make memcg1_update_tree() static
mm: memcg: group cgroup v1 memcg related declarations
mm: memcg: put cgroup v1-related members of task_struct under config
option
MAINTAINERS: add mm/memcontrol-v1.c/h to the list of maintained files
MAINTAINERS | 2 +
include/linux/memcontrol.h | 156 +-
init/Kconfig | 9 +
mm/Makefile | 2 +
mm/memcontrol-v1.c | 2933 +++++++++++++++++++++++++
mm/memcontrol-v1.h | 132 ++
mm/memcontrol.c | 4141 ++++++------------------------------
mm/vmscan.c | 10 +-
8 files changed, 3780 insertions(+), 3605 deletions(-)
create mode 100644 mm/memcontrol-v1.c
create mode 100644 mm/memcontrol-v1.h
--
2.45.1
next reply other threads:[~2024-05-28 20:21 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-28 20:20 Roman Gushchin [this message]
2024-05-28 20:20 ` [PATCH v1 01/14] mm: memcg: introduce memcontrol-v1.c Roman Gushchin
2024-06-01 6:42 ` Shakeel Butt
2024-06-04 3:58 ` Roman Gushchin
2024-05-28 20:20 ` [PATCH v1 02/14] mm: memcg: move soft limit reclaim code to memcontrol-v1.c Roman Gushchin
2024-06-01 6:42 ` Shakeel Butt
2024-05-28 20:20 ` [PATCH v1 03/14] mm: memcg: rename soft limit reclaim-related functions Roman Gushchin
2024-06-01 6:43 ` Shakeel Butt
2024-05-28 20:20 ` [PATCH v1 04/14] mm: memcg: move charge migration code to memcontrol-v1.c Roman Gushchin
2024-06-01 6:44 ` Shakeel Butt
2024-05-28 20:20 ` [PATCH v1 05/14] mm: memcg: rename charge move-related functions Roman Gushchin
2024-06-01 6:45 ` Shakeel Butt
2024-05-28 20:20 ` [PATCH v1 06/14] mm: memcg: move legacy memcg event code into memcontrol-v1.c Roman Gushchin
2024-06-01 6:33 ` Shakeel Butt
2024-06-04 3:57 ` Roman Gushchin
2024-06-01 6:45 ` Shakeel Butt
2024-05-28 20:20 ` [PATCH v1 07/14] mm: memcg: rename memcg_check_events() Roman Gushchin
2024-06-01 6:39 ` Shakeel Butt
2024-06-01 6:46 ` Shakeel Butt
2024-05-28 20:21 ` [PATCH v1 08/14] mm: memcg: move cgroup v1 oom handling code into memcontrol-v1.c Roman Gushchin
2024-06-01 6:46 ` Shakeel Butt
2024-06-01 6:47 ` Shakeel Butt
2024-05-28 20:21 ` [PATCH v1 09/14] mm: memcg: rename memcg_oom_recover() Roman Gushchin
2024-06-01 6:48 ` Shakeel Butt
2024-05-28 21:44 ` [PATCH v1 10/14] mm: memcg: move cgroup v1 interface files to memcontrol-v1.c Roman Gushchin
2024-05-28 21:44 ` [PATCH v1 11/14] mm: memcg: make memcg1_update_tree() static Roman Gushchin
2024-06-01 6:48 ` Shakeel Butt
2024-05-28 21:44 ` [PATCH v1 12/14] mm: memcg: group cgroup v1 memcg related declarations Roman Gushchin
2024-06-01 6:49 ` Shakeel Butt
2024-05-28 21:44 ` [PATCH v1 13/14] mm: memcg: put cgroup v1-related members of task_struct under config option Roman Gushchin
2024-06-01 6:51 ` Shakeel Butt
2024-06-02 12:00 ` Lance Yang
2024-06-03 19:13 ` Roman Gushchin
2024-05-28 21:44 ` [PATCH v1 14/14] MAINTAINERS: add mm/memcontrol-v1.c/h to the list of maintained files Roman Gushchin
2024-06-01 6:53 ` Shakeel Butt
2024-06-01 6:48 ` [PATCH v1 10/14] mm: memcg: move cgroup v1 interface files to memcontrol-v1.c Shakeel Butt
2024-06-03 19:34 ` [PATCH v1 00/14] mm: memcg: separate legacy cgroup v1 code and put under config option Roman Gushchin
2024-06-07 15:29 ` Shakeel Butt
2024-06-07 16:13 ` Roman Gushchin
2024-06-24 22:00 ` Shakeel Butt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240528202101.3099300-1-roman.gushchin@linux.dev \
--to=roman.gushchin@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox