From: Johannes Weiner <hannes@cmpxchg.org> To: Andrew Morton <akpm@linux-foundation.org> Cc: Michal Hocko <mhocko@suse.com>, Roman Gushchin <guro@fb.com>, Shakeel Butt <shakeelb@google.com>, Seth Jennings <sjenning@redhat.com>, Dan Streetman <ddstreet@ieee.org>, Minchan Kim <minchan@kernel.org>, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: [PATCH v2 0/6] zswap: accounting & cgroup control Date: Tue, 10 May 2022 11:28:41 -0400 [thread overview] Message-ID: <20220510152847.230957-1-hannes@cmpxchg.org> (raw) Changelog - Refresh and update meminfo documentation (Andrew) - Discussions around stat sharing opportunities with zram. But agreed that zswap is a cache and zram a backend that could theoretically be stacked, so they need to be understandable separately. (Minchan) Overview Zswap can consume nearly a quarter of RAM in the default configuration, yet it's neither listed in /proc/meminfo, nor is it accounted and manageable on a per-cgroup basis. This makes reasoning about the memory situation on a host in general rather difficult. On shared/cgrouped hosts, the consequences are worse. First, workloads can escape memory containment and cause resource priority inversions: a lo-pri group can fill the global zswap pool and force a hi-pri group out to disk. Second, not all workloads benefit from zswap equally. Some even suffer when memory contents compress poorly, and are better off going to disk swap directly. On a host with mixed workloads, it's currently not possible to enable zswap for one workload but not for the other. This series implements the missing global accounting as well as cgroup tracking & control for zswap backing memory: - Patch 1 refreshes the very out-of-date meminfo documentation in Documentation/filesystems/proc.rst. - Patches 2-4 clean up related and adjacent options in Kconfig. Not actual dependencies, just things I noticed during development. - Patch 5 adds meminfo and vmstat coverage for zswap consumption and activity. - Patch 6 implements per-cgroup tracking & control of zswap memory. Based on v5.18-rc4-mmots-2022-04-26-19-34-5-g5e1fdb02de7a. Documentation/admin-guide/cgroup-v2.rst | 21 ++ Documentation/filesystems/proc.rst | 161 +++++---- drivers/block/zram/Kconfig | 3 +- fs/proc/meminfo.c | 7 + include/linux/memcontrol.h | 54 +++ include/linux/swap.h | 5 + include/linux/vm_event_item.h | 4 + init/Kconfig | 123 ------- mm/Kconfig | 523 +++++++++++++++++++----------- mm/memcontrol.c | 196 ++++++++++- mm/vmstat.c | 4 + mm/zswap.c | 50 ++- 12 files changed, 753 insertions(+), 398 deletions(-)
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> To: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> Cc: Michal Hocko <mhocko-IBi9RG/b67k@public.gmane.org>, Roman Gushchin <guro-b10kYP2dOMg@public.gmane.org>, Shakeel Butt <shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>, Seth Jennings <sjenning-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>, Dan Streetman <ddstreet-EkmVulN54Sk@public.gmane.org>, Minchan Kim <minchan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kernel-team-b10kYP2dOMg@public.gmane.org Subject: [PATCH v2 0/6] zswap: accounting & cgroup control Date: Tue, 10 May 2022 11:28:41 -0400 [thread overview] Message-ID: <20220510152847.230957-1-hannes@cmpxchg.org> (raw) Changelog - Refresh and update meminfo documentation (Andrew) - Discussions around stat sharing opportunities with zram. But agreed that zswap is a cache and zram a backend that could theoretically be stacked, so they need to be understandable separately. (Minchan) Overview Zswap can consume nearly a quarter of RAM in the default configuration, yet it's neither listed in /proc/meminfo, nor is it accounted and manageable on a per-cgroup basis. This makes reasoning about the memory situation on a host in general rather difficult. On shared/cgrouped hosts, the consequences are worse. First, workloads can escape memory containment and cause resource priority inversions: a lo-pri group can fill the global zswap pool and force a hi-pri group out to disk. Second, not all workloads benefit from zswap equally. Some even suffer when memory contents compress poorly, and are better off going to disk swap directly. On a host with mixed workloads, it's currently not possible to enable zswap for one workload but not for the other. This series implements the missing global accounting as well as cgroup tracking & control for zswap backing memory: - Patch 1 refreshes the very out-of-date meminfo documentation in Documentation/filesystems/proc.rst. - Patches 2-4 clean up related and adjacent options in Kconfig. Not actual dependencies, just things I noticed during development. - Patch 5 adds meminfo and vmstat coverage for zswap consumption and activity. - Patch 6 implements per-cgroup tracking & control of zswap memory. Based on v5.18-rc4-mmots-2022-04-26-19-34-5-g5e1fdb02de7a. Documentation/admin-guide/cgroup-v2.rst | 21 ++ Documentation/filesystems/proc.rst | 161 +++++---- drivers/block/zram/Kconfig | 3 +- fs/proc/meminfo.c | 7 + include/linux/memcontrol.h | 54 +++ include/linux/swap.h | 5 + include/linux/vm_event_item.h | 4 + init/Kconfig | 123 ------- mm/Kconfig | 523 +++++++++++++++++++----------- mm/memcontrol.c | 196 ++++++++++- mm/vmstat.c | 4 + mm/zswap.c | 50 ++- 12 files changed, 753 insertions(+), 398 deletions(-)
next reply other threads:[~2022-05-10 15:31 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-10 15:28 Johannes Weiner [this message] 2022-05-10 15:28 ` [PATCH v2 0/6] zswap: accounting & cgroup control Johannes Weiner 2022-05-10 15:28 ` [PATCH v2 1/6] Documentation: filesystems: proc: update meminfo section Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-11 17:11 ` David Hildenbrand 2022-05-11 17:11 ` David Hildenbrand 2022-05-11 18:51 ` Johannes Weiner 2022-05-11 18:51 ` Johannes Weiner 2022-05-12 8:55 ` David Hildenbrand 2022-05-12 8:55 ` David Hildenbrand 2022-05-10 15:28 ` [PATCH v2 2/6] mm: Kconfig: move swap and slab config options to the MM section Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-10 15:28 ` [PATCH v2 3/6] mm: Kconfig: group swap, slab, hotplug and thp options into submenus Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-10 22:40 ` Andrew Morton 2022-05-10 22:40 ` Andrew Morton 2022-05-11 15:22 ` Johannes Weiner 2022-05-11 15:22 ` Johannes Weiner 2022-05-11 16:28 ` Johannes Weiner 2022-05-11 16:28 ` Johannes Weiner 2022-05-10 15:28 ` [PATCH v2 4/6] mm: Kconfig: simplify zswap configuration Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-10 15:28 ` [PATCH v2 5/6] mm: zswap: add basic meminfo and vmstat coverage Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-11 17:13 ` David Hildenbrand 2022-05-11 17:13 ` David Hildenbrand 2022-05-10 15:28 ` [PATCH v2 6/6] zswap: memcg accounting Johannes Weiner 2022-05-10 15:28 ` Johannes Weiner 2022-05-11 17:32 ` Michal Koutný 2022-05-11 17:32 ` Michal Koutný 2022-05-11 19:06 ` Johannes Weiner 2022-05-11 19:06 ` Johannes Weiner 2022-05-13 15:14 ` Michal Koutný 2022-05-13 15:14 ` Michal Koutný 2022-05-13 17:08 ` Johannes Weiner 2022-05-13 17:08 ` Johannes Weiner 2022-05-16 14:34 ` Michal Koutný 2022-05-16 14:34 ` Michal Koutný 2022-05-16 20:01 ` Johannes Weiner 2022-05-16 20:01 ` Johannes Weiner 2022-05-17 23:52 ` Andrew Morton 2022-05-18 8:23 ` Michal Koutný 2022-05-18 8:23 ` Michal Koutný 2022-05-13 17:23 ` Shakeel Butt 2022-05-13 17:23 ` Shakeel Butt 2022-05-13 18:25 ` Johannes Weiner 2022-05-13 18:25 ` Johannes Weiner
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=20220510152847.230957-1-hannes@cmpxchg.org \ --to=hannes@cmpxchg.org \ --cc=akpm@linux-foundation.org \ --cc=cgroups@vger.kernel.org \ --cc=ddstreet@ieee.org \ --cc=guro@fb.com \ --cc=kernel-team@fb.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@suse.com \ --cc=minchan@kernel.org \ --cc=shakeelb@google.com \ --cc=sjenning@redhat.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.