From: Johannes Weiner <hannes@cmpxchg.org> To: Alex Shi <alex.shi@linux.alibaba.com> Cc: Joonsoo Kim <js1304@gmail.com>, Shakeel Butt <shakeelb@google.com>, Hugh Dickins <hughd@google.com>, Michal Hocko <mhocko@suse.com>, "Kirill A. Shutemov" <kirill@shutemov.name>, Roman Gushchin <guro@fb.com>, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@fb.com Subject: Re: [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control Date: Wed, 22 Apr 2020 09:30:01 -0400 [thread overview] Message-ID: <20200422133001.GE358439@cmpxchg.org> (raw) In-Reply-To: <2721c508-9b32-d0e7-454d-386129bfda1b@linux.alibaba.com> On Wed, Apr 22, 2020 at 11:14:40AM +0800, Alex Shi wrote: > > > 在 2020/4/21 下午10:39, Johannes Weiner 写道: > > Hi Alex, > > > > thanks for your quick review so far, I'll add the tags to the patches. > > > > On Tue, Apr 21, 2020 at 05:27:30PM +0800, Alex Shi wrote: > >> > >> > >> 在 2020/4/21 上午6:11, Johannes Weiner 写道: > >>> The swapaccount=0 boot option will continue to exist, and it will > >>> eliminate the page_counter overhead and hide the swap control files, > >>> but it won't disable swap slot ownership tracking. > >> > >> May we add extra explanation for this change to user? and the default > >> memsw limitations? > > > > Can you elaborate what you think is missing and where you would like > > to see it documented? > > > Maybe the following doc change is better after whole patchset? > Guess users would would happy to know details of this change. Thanks, I stole your patch and extended/tweaked it a little. Would you mind providing your Signed-off-by:? From 589d3c1b505e6671b4a9b424436c9eda88a0b08c Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi@linux.alibaba.com> Date: Wed, 22 Apr 2020 11:14:40 +0800 Subject: [PATCH] mm: memcontrol: document the new swap control behavior Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> --- .../admin-guide/cgroup-v1/memory.rst | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Documentation/admin-guide/cgroup-v1/memory.rst b/Documentation/admin-guide/cgroup-v1/memory.rst index 0ae4f564c2d6..12757e63b26c 100644 --- a/Documentation/admin-guide/cgroup-v1/memory.rst +++ b/Documentation/admin-guide/cgroup-v1/memory.rst @@ -199,11 +199,11 @@ An RSS page is unaccounted when it's fully unmapped. A PageCache page is unaccounted when it's removed from radix-tree. Even if RSS pages are fully unmapped (by kswapd), they may exist as SwapCache in the system until they are really freed. Such SwapCaches are also accounted. -A swapped-in page is not accounted until it's mapped. +A swapped-in page is accounted after adding into swapcache. Note: The kernel does swapin-readahead and reads multiple swaps at once. -This means swapped-in pages may contain pages for other tasks than a task -causing page fault. So, we avoid accounting at swap-in I/O. +Since page's memcg recorded into swap whatever memsw enabled, the page will +be accounted after swapin. At page migration, accounting information is kept. @@ -222,18 +222,13 @@ the cgroup that brought it in -- this will happen on memory pressure). But see section 8.2: when moving a task to another cgroup, its pages may be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. -Exception: If CONFIG_MEMCG_SWAP is not used. -When you do swapoff and make swapped-out pages of shmem(tmpfs) to -be backed into memory in force, charges for pages are accounted against the -caller of swapoff rather than the users of shmem. - -2.4 Swap Extension (CONFIG_MEMCG_SWAP) +2.4 Swap Extension -------------------------------------- -Swap Extension allows you to record charge for swap. A swapped-in page is -charged back to original page allocator if possible. +Swap usage is always recorded for each of cgroup. Swap Extension allows you to +read and limit it. -When swap is accounted, following files are added. +When CONFIG_SWAP is enabled, following files are added. - memory.memsw.usage_in_bytes. - memory.memsw.limit_in_bytes. -- > Also as to the RSS account name change, I don't know if it's good to polish > them in docs. I didn't actually change anything user-visible, just the internal name of the counters: static const unsigned int memcg1_stats[] = { NR_FILE_PAGES, /* was MEMCG_CACHE */ NR_ANON_MAPPED, /* was MEMCG_RSS */ NR_ANON_THPS, /* was MEMCG_RSS_HUGE */ NR_SHMEM, NR_FILE_MAPPED, NR_FILE_DIRTY, NR_WRITEBACK, MEMCG_SWAP, }; static const char *const memcg1_stat_names[] = { "cache", "rss", "rss_huge", "shmem", "mapped_file", "dirty", "writeback", "swap", }; Or did you refer to something else?
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> To: Alex Shi <alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org> Cc: Joonsoo Kim <js1304-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Shakeel Butt <shakeelb-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>, Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>, Michal Hocko <mhocko-IBi9RG/b67k@public.gmane.org>, "Kirill A. Shutemov" <kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>, Roman Gushchin <guro-b10kYP2dOMg@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: Re: [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control Date: Wed, 22 Apr 2020 09:30:01 -0400 [thread overview] Message-ID: <20200422133001.GE358439@cmpxchg.org> (raw) In-Reply-To: <2721c508-9b32-d0e7-454d-386129bfda1b-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org> On Wed, Apr 22, 2020 at 11:14:40AM +0800, Alex Shi wrote: > > > 在 2020/4/21 下午10:39, Johannes Weiner 写道: > > Hi Alex, > > > > thanks for your quick review so far, I'll add the tags to the patches. > > > > On Tue, Apr 21, 2020 at 05:27:30PM +0800, Alex Shi wrote: > >> > >> > >> 在 2020/4/21 上午6:11, Johannes Weiner 写道: > >>> The swapaccount=0 boot option will continue to exist, and it will > >>> eliminate the page_counter overhead and hide the swap control files, > >>> but it won't disable swap slot ownership tracking. > >> > >> May we add extra explanation for this change to user? and the default > >> memsw limitations? > > > > Can you elaborate what you think is missing and where you would like > > to see it documented? > > > Maybe the following doc change is better after whole patchset? > Guess users would would happy to know details of this change. Thanks, I stole your patch and extended/tweaked it a little. Would you mind providing your Signed-off-by:? From 589d3c1b505e6671b4a9b424436c9eda88a0b08c Mon Sep 17 00:00:00 2001 From: Alex Shi <alex.shi-KPsoFbNs7GizrGE5bRqYAgC/G2K4zDHf@public.gmane.org> Date: Wed, 22 Apr 2020 11:14:40 +0800 Subject: [PATCH] mm: memcontrol: document the new swap control behavior Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> --- .../admin-guide/cgroup-v1/memory.rst | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Documentation/admin-guide/cgroup-v1/memory.rst b/Documentation/admin-guide/cgroup-v1/memory.rst index 0ae4f564c2d6..12757e63b26c 100644 --- a/Documentation/admin-guide/cgroup-v1/memory.rst +++ b/Documentation/admin-guide/cgroup-v1/memory.rst @@ -199,11 +199,11 @@ An RSS page is unaccounted when it's fully unmapped. A PageCache page is unaccounted when it's removed from radix-tree. Even if RSS pages are fully unmapped (by kswapd), they may exist as SwapCache in the system until they are really freed. Such SwapCaches are also accounted. -A swapped-in page is not accounted until it's mapped. +A swapped-in page is accounted after adding into swapcache. Note: The kernel does swapin-readahead and reads multiple swaps at once. -This means swapped-in pages may contain pages for other tasks than a task -causing page fault. So, we avoid accounting at swap-in I/O. +Since page's memcg recorded into swap whatever memsw enabled, the page will +be accounted after swapin. At page migration, accounting information is kept. @@ -222,18 +222,13 @@ the cgroup that brought it in -- this will happen on memory pressure). But see section 8.2: when moving a task to another cgroup, its pages may be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. -Exception: If CONFIG_MEMCG_SWAP is not used. -When you do swapoff and make swapped-out pages of shmem(tmpfs) to -be backed into memory in force, charges for pages are accounted against the -caller of swapoff rather than the users of shmem. - -2.4 Swap Extension (CONFIG_MEMCG_SWAP) +2.4 Swap Extension -------------------------------------- -Swap Extension allows you to record charge for swap. A swapped-in page is -charged back to original page allocator if possible. +Swap usage is always recorded for each of cgroup. Swap Extension allows you to +read and limit it. -When swap is accounted, following files are added. +When CONFIG_SWAP is enabled, following files are added. - memory.memsw.usage_in_bytes. - memory.memsw.limit_in_bytes. -- > Also as to the RSS account name change, I don't know if it's good to polish > them in docs. I didn't actually change anything user-visible, just the internal name of the counters: static const unsigned int memcg1_stats[] = { NR_FILE_PAGES, /* was MEMCG_CACHE */ NR_ANON_MAPPED, /* was MEMCG_RSS */ NR_ANON_THPS, /* was MEMCG_RSS_HUGE */ NR_SHMEM, NR_FILE_MAPPED, NR_FILE_DIRTY, NR_WRITEBACK, MEMCG_SWAP, }; static const char *const memcg1_stat_names[] = { "cache", "rss", "rss_huge", "shmem", "mapped_file", "dirty", "writeback", "swap", }; Or did you refer to something else?
next prev parent reply other threads:[~2020-04-22 13:30 UTC|newest] Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-20 22:11 [PATCH 00/18] mm: memcontrol: charge swapin pages on instantiation Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-20 22:11 ` [PATCH 01/18] mm: fix NUMA node file count error in replace_page_cache() Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-21 8:28 ` Alex Shi 2020-04-21 8:28 ` Alex Shi 2020-04-21 19:13 ` Shakeel Butt 2020-04-21 19:13 ` Shakeel Butt 2020-04-21 19:13 ` Shakeel Butt 2020-04-22 6:34 ` Joonsoo Kim 2020-04-22 6:34 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 02/18] mm: memcontrol: fix theoretical race in charge moving Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-22 6:36 ` Joonsoo Kim 2020-04-22 6:36 ` Joonsoo Kim 2020-04-22 16:51 ` Shakeel Butt 2020-04-22 16:51 ` Shakeel Butt 2020-04-22 16:51 ` Shakeel Butt 2020-04-22 17:42 ` Johannes Weiner 2020-04-22 17:42 ` Johannes Weiner 2020-04-22 18:01 ` Shakeel Butt 2020-04-22 18:01 ` Shakeel Butt 2020-04-22 18:01 ` Shakeel Butt 2020-04-22 18:02 ` Shakeel Butt 2020-04-22 18:02 ` Shakeel Butt 2020-04-20 22:11 ` [PATCH 03/18] mm: memcontrol: drop @compound parameter from memcg charging API Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-21 9:11 ` Alex Shi 2020-04-21 9:11 ` Alex Shi 2020-04-22 6:37 ` Joonsoo Kim 2020-04-22 6:37 ` Joonsoo Kim 2020-04-22 17:30 ` Shakeel Butt 2020-04-22 17:30 ` Shakeel Butt 2020-04-22 17:30 ` Shakeel Butt 2020-04-20 22:11 ` [PATCH 04/18] mm: memcontrol: move out cgroup swaprate throttling Johannes Weiner 2020-04-21 9:11 ` Alex Shi 2020-04-21 9:11 ` Alex Shi 2020-04-22 6:37 ` Joonsoo Kim 2020-04-22 6:37 ` Joonsoo Kim 2020-04-22 22:20 ` Shakeel Butt 2020-04-22 22:20 ` Shakeel Butt 2020-04-22 22:20 ` Shakeel Butt 2020-04-20 22:11 ` [PATCH 05/18] mm: memcontrol: convert page cache to a new mem_cgroup_charge() API Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-21 9:12 ` Alex Shi 2020-04-21 9:12 ` Alex Shi 2020-04-22 6:40 ` Joonsoo Kim 2020-04-22 6:40 ` Joonsoo Kim 2020-04-22 12:09 ` Johannes Weiner 2020-04-22 12:09 ` Johannes Weiner 2020-04-23 5:25 ` Joonsoo Kim 2020-05-08 16:01 ` Johannes Weiner 2020-05-11 1:57 ` Joonsoo Kim 2020-05-11 7:38 ` Hugh Dickins 2020-05-11 7:38 ` Hugh Dickins 2020-05-11 7:38 ` Hugh Dickins 2020-05-11 15:06 ` Johannes Weiner 2020-05-11 16:32 ` Hugh Dickins 2020-05-11 16:32 ` Hugh Dickins 2020-05-11 16:32 ` Hugh Dickins 2020-05-11 18:10 ` Johannes Weiner 2020-05-11 18:10 ` Johannes Weiner 2020-05-11 18:12 ` Johannes Weiner 2020-05-11 18:44 ` Hugh Dickins 2020-05-11 18:44 ` Hugh Dickins 2020-05-11 18:44 ` Hugh Dickins 2020-04-20 22:11 ` [PATCH 06/18] mm: memcontrol: prepare uncharging for removal of private page type counters Johannes Weiner 2020-04-21 9:12 ` Alex Shi 2020-04-21 9:12 ` Alex Shi 2020-04-22 6:41 ` Joonsoo Kim 2020-04-22 6:41 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 07/18] mm: memcontrol: prepare move_account " Johannes Weiner 2020-04-21 9:13 ` Alex Shi 2020-04-21 9:13 ` Alex Shi 2020-04-22 6:41 ` Joonsoo Kim 2020-04-22 6:41 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 08/18] mm: memcontrol: prepare cgroup vmstat infrastructure for native anon counters Johannes Weiner 2020-04-22 6:42 ` Joonsoo Kim 2020-04-22 6:42 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 09/18] mm: memcontrol: switch to native NR_FILE_PAGES and NR_SHMEM counters Johannes Weiner 2020-04-22 6:42 ` Joonsoo Kim 2020-04-22 6:42 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 10/18] mm: memcontrol: switch to native NR_ANON_MAPPED counter Johannes Weiner 2020-04-22 6:51 ` Joonsoo Kim 2020-04-22 12:28 ` Johannes Weiner 2020-04-23 5:27 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 11/18] mm: memcontrol: switch to native NR_ANON_THPS counter Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-24 0:29 ` Joonsoo Kim 2020-04-24 0:29 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 12/18] mm: memcontrol: convert anon and file-thp to new mem_cgroup_charge() API Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-24 0:29 ` Joonsoo Kim 2020-04-24 0:29 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 13/18] mm: memcontrol: drop unused try/commit/cancel charge API Johannes Weiner 2020-04-24 0:30 ` Joonsoo Kim 2020-04-24 0:30 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 14/18] mm: memcontrol: prepare swap controller setup for integration Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-24 0:30 ` Joonsoo Kim 2020-04-24 0:30 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 15/18] mm: memcontrol: make swap tracking an integral part of memory control Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-21 9:27 ` Alex Shi 2020-04-21 9:27 ` Alex Shi 2020-04-21 14:39 ` Johannes Weiner 2020-04-21 14:39 ` Johannes Weiner 2020-04-22 3:14 ` Alex Shi 2020-04-22 3:14 ` Alex Shi 2020-04-22 13:30 ` Johannes Weiner [this message] 2020-04-22 13:30 ` Johannes Weiner 2020-04-22 13:40 ` Alex Shi 2020-04-22 13:43 ` Alex Shi 2020-04-24 0:30 ` Joonsoo Kim 2020-04-24 0:30 ` Joonsoo Kim 2020-04-24 3:01 ` Johannes Weiner 2020-04-20 22:11 ` [PATCH 16/18] mm: memcontrol: charge swapin pages on instantiation Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-21 9:21 ` Alex Shi 2020-04-21 9:21 ` Alex Shi 2020-04-24 0:44 ` Joonsoo Kim 2020-04-24 2:51 ` Johannes Weiner 2020-04-24 2:51 ` Johannes Weiner 2020-04-28 6:49 ` Joonsoo Kim 2020-04-28 6:49 ` Joonsoo Kim 2020-04-28 6:49 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 17/18] mm: memcontrol: delete unused lrucare handling Johannes Weiner 2020-04-20 22:11 ` Johannes Weiner 2020-04-24 0:46 ` Joonsoo Kim 2020-04-24 0:46 ` Joonsoo Kim 2020-04-20 22:11 ` [PATCH 18/18] mm: memcontrol: update page->mem_cgroup stability rules Johannes Weiner 2020-04-21 9:20 ` Alex Shi 2020-04-21 9:20 ` Alex Shi 2020-04-24 0:48 ` Joonsoo Kim 2020-04-24 0:48 ` Joonsoo Kim 2020-04-21 9:10 ` Hillf Danton 2020-04-21 14:34 ` Johannes Weiner 2020-04-21 14:34 ` Johannes Weiner 2020-04-21 9:32 ` [PATCH 00/18] mm: memcontrol: charge swapin pages on instantiation Alex Shi 2020-04-21 9:32 ` Alex Shi
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=20200422133001.GE358439@cmpxchg.org \ --to=hannes@cmpxchg.org \ --cc=alex.shi@linux.alibaba.com \ --cc=cgroups@vger.kernel.org \ --cc=guro@fb.com \ --cc=hughd@google.com \ --cc=js1304@gmail.com \ --cc=kernel-team@fb.com \ --cc=kirill@shutemov.name \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@suse.com \ --cc=shakeelb@google.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.