* [PATCH] memcg: add support to generate the total count of children from root
@ 2020-11-24 10:58 Aaron Tomlin
[not found] ` <20201124105836.713371-1-atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Aaron Tomlin @ 2020-11-24 10:58 UTC (permalink / raw)
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
Cc: hannes-druUgvl0LCNAfugRpC6u6w, mhocko-DgEjT+Ai2ygdnm+yROfE0A,
vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
cgroups-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg
Each memory-controlled cgroup is assigned a unique ID and the total
number of memory cgroups is limited to MEM_CGROUP_ID_MAX.
This patch provides the ability to determine the number of
memory cgroups from the root memory cgroup, only.
A value of 1 (i.e. self count) is returned if there are no children.
For example, the number of memory cgroups can be established by
reading the /sys/fs/cgroup/memory/memory.total_cnt file.
Signed-off-by: Aaron Tomlin <atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
mm/memcontrol.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 29459a6ce1c7..a4f7cb40e233 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4535,6 +4535,19 @@ static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css,
return 0;
}
+static int mem_cgroup_total_count_read(struct cgroup_subsys_state *css,
+ struct cftype *cft)
+{
+ struct mem_cgroup *iter, *memcg = mem_cgroup_from_css(css);
+ int num = 0;
+
+ for_each_mem_cgroup_tree(iter, memcg)
+ num++;
+
+ /* Returns 1 (i.e. self count) if no children. */
+ return num;
+}
+
#ifdef CONFIG_CGROUP_WRITEBACK
#include <trace/events/writeback.h>
@@ -5050,6 +5063,11 @@ static struct cftype mem_cgroup_legacy_files[] = {
.write_u64 = mem_cgroup_oom_control_write,
.private = MEMFILE_PRIVATE(_OOM_TYPE, OOM_CONTROL),
},
+ {
+ .name = "total_cnt",
+ .flags = CFTYPE_ONLY_ON_ROOT,
+ .read_u64 = mem_cgroup_total_count_read,
+ },
{
.name = "pressure_level",
},
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread[parent not found: <20201124105836.713371-1-atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH] memcg: add support to generate the total count of children from root [not found] ` <20201124105836.713371-1-atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2020-11-24 11:26 ` Michal Hocko [not found] ` <20201124112612.GV27488-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> [not found] ` <CANfR36hyrqXjk2tL03GzCk6rn6sCD7Sd811soBsZC3dHY0h9fQ@mail.gmail.com> 0 siblings, 2 replies; 6+ messages in thread From: Michal Hocko @ 2020-11-24 11:26 UTC (permalink / raw) To: Aaron Tomlin Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, hannes-druUgvl0LCNAfugRpC6u6w, vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b, cgroups-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg On Tue 24-11-20 10:58:36, Aaron Tomlin wrote: > Each memory-controlled cgroup is assigned a unique ID and the total > number of memory cgroups is limited to MEM_CGROUP_ID_MAX. > > This patch provides the ability to determine the number of > memory cgroups from the root memory cgroup, only. > A value of 1 (i.e. self count) is returned if there are no children. > For example, the number of memory cgroups can be established by > reading the /sys/fs/cgroup/memory/memory.total_cnt file. Could you add some explanation why is this information useful for userspace? Who is going to use it and why a simple scripting on top of cgroupfs is insufficient. > Signed-off-by: Aaron Tomlin <atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > --- > mm/memcontrol.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 29459a6ce1c7..a4f7cb40e233 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4535,6 +4535,19 @@ static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css, > return 0; > } > > +static int mem_cgroup_total_count_read(struct cgroup_subsys_state *css, > + struct cftype *cft) > +{ > + struct mem_cgroup *iter, *memcg = mem_cgroup_from_css(css); > + int num = 0; > + > + for_each_mem_cgroup_tree(iter, memcg) > + num++; > + > + /* Returns 1 (i.e. self count) if no children. */ > + return num; > +} > + > #ifdef CONFIG_CGROUP_WRITEBACK > > #include <trace/events/writeback.h> > @@ -5050,6 +5063,11 @@ static struct cftype mem_cgroup_legacy_files[] = { > .write_u64 = mem_cgroup_oom_control_write, > .private = MEMFILE_PRIVATE(_OOM_TYPE, OOM_CONTROL), > }, > + { > + .name = "total_cnt", > + .flags = CFTYPE_ONLY_ON_ROOT, > + .read_u64 = mem_cgroup_total_count_read, > + }, > { > .name = "pressure_level", > }, > -- > 2.26.2 > -- Michal Hocko SUSE Labs ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <20201124112612.GV27488-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>]
* Re: [PATCH] memcg: add support to generate the total count of children from root [not found] ` <20201124112612.GV27488-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> @ 2020-11-24 13:36 ` Aaron Tomlin 0 siblings, 0 replies; 6+ messages in thread From: Aaron Tomlin @ 2020-11-24 13:36 UTC (permalink / raw) To: Michal Hocko Cc: linux-kernel, hannes-druUgvl0LCNAfugRpC6u6w, vdavydov.dev-Re5JQEeQqe8AvxtiuMwx3w, Andrew Morton, cgroups-u79uwXL29TY76Z2rM5mHXA, linux-mm On Tue, 24 Nov 2020 at 11:26, Michal Hocko <mhocko-IBi9RG/b67k@public.gmane.org> wrote: > > On Tue 24-11-20 10:58:36, Aaron Tomlin wrote: > > Each memory-controlled cgroup is assigned a unique ID and the total > > number of memory cgroups is limited to MEM_CGROUP_ID_MAX. > > > > This patch provides the ability to determine the number of > > memory cgroups from the root memory cgroup, only. > > A value of 1 (i.e. self count) is returned if there are no children. > > For example, the number of memory cgroups can be established by > > reading the /sys/fs/cgroup/memory/memory.total_cnt file. > Hi Michal, > Could you add some explanation why is this information useful for > userspace? Who is going to use it and why a simple scripting on top of > cgroupfs is insufficient. Thank you for your feedback. Indeed, one can use a command/script to manually calculate this. Having said that, one that creates a significant number of memory-controlled cgroups may prefer a quick, simple and reliable method to generate the aforementioned data, for management purposes only. As such, I thought this patch might be particularly useful. Kind regards, -- Aaron Tomlin ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <CANfR36hyrqXjk2tL03GzCk6rn6sCD7Sd811soBsZC3dHY0h9fQ@mail.gmail.com>]
* Re: [PATCH] memcg: add support to generate the total count of children from root [not found] ` <CANfR36hyrqXjk2tL03GzCk6rn6sCD7Sd811soBsZC3dHY0h9fQ@mail.gmail.com> @ 2020-11-24 13:36 ` Michal Hocko 2020-11-24 13:47 ` Aaron Tomlin 0 siblings, 1 reply; 6+ messages in thread From: Michal Hocko @ 2020-11-24 13:36 UTC (permalink / raw) To: Aaron Tomlin Cc: linux-kernel, hannes, vdavydov.dev, Andrew Morton, cgroups, linux-mm On Tue 24-11-20 13:27:32, Aaron Tomlin wrote: > On Tue, 24 Nov 2020 at 11:26, Michal Hocko <mhocko@suse.com> wrote: > > > On Tue 24-11-20 10:58:36, Aaron Tomlin wrote: > > > Each memory-controlled cgroup is assigned a unique ID and the total > > > number of memory cgroups is limited to MEM_CGROUP_ID_MAX. > > > > > > This patch provides the ability to determine the number of > > > memory cgroups from the root memory cgroup, only. > > > A value of 1 (i.e. self count) is returned if there are no children. > > > For example, the number of memory cgroups can be established by > > > reading the /sys/fs/cgroup/memory/memory.total_cnt file. > > > > Hi Michal, > > > > Could you add some explanation why is this information useful for > > userspace? Who is going to use it and why a simple scripting on top of > > cgroupfs is insufficient. > > > > Thank you for your feedback. > > Indeed, one can use a command/script to manually calculate this. > Having said that, one that creates a significant number of > memory-controlled cgroups may prefer a quick, simple and reliable method > to generate the aforementioned data, for management purposes only. > As such, I thought this patch might be particularly useful. This like any other user visible interface would be a much easier sell if there was a clear usecase to justify it. I do not see anything controversial about exporting such a value but my general take is that we are only adding new interface when existing ones are insufficient. A performance might be a very good reason but that would really require to come with some real life numbers. Thanks! -- Michal Hocko SUSE Labs ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] memcg: add support to generate the total count of children from root 2020-11-24 13:36 ` Michal Hocko @ 2020-11-24 13:47 ` Aaron Tomlin 2020-11-26 11:02 ` Aaron Tomlin 0 siblings, 1 reply; 6+ messages in thread From: Aaron Tomlin @ 2020-11-24 13:47 UTC (permalink / raw) To: Michal Hocko Cc: linux-kernel, hannes, vdavydov.dev, Andrew Morton, cgroups, linux-mm On Tue, 24 Nov 2020 at 13:36, Michal Hocko <mhocko@suse.com> wrote: Michal, > This like any other user visible interface would be a much easier sell > if there was a clear usecase to justify it. I do not see anything > controversial about exporting such a value but my general take is that > we are only adding new interface when existing ones are insufficient. A > performance might be a very good reason but that would really require to > come with some real life numbers. Fair enough and understood. At this stage, I unfortunately do not have such supporting data. This was only useful in an isolated situation. Having said this, I thought that the aforementioned interface would be helpful to others, in particular, given the known limitation. Kind regards, -- Aaron Tomlin ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] memcg: add support to generate the total count of children from root 2020-11-24 13:47 ` Aaron Tomlin @ 2020-11-26 11:02 ` Aaron Tomlin 0 siblings, 0 replies; 6+ messages in thread From: Aaron Tomlin @ 2020-11-26 11:02 UTC (permalink / raw) To: Michal Hocko Cc: linux-kernel, hannes, vdavydov.dev, Andrew Morton, cgroups, linux-mm On Tue 2020-11-24 13:47 +0000, Aaron Tomlin wrote: > On Tue, 24 Nov 2020 at 13:36, Michal Hocko <mhocko@suse.com> wrote: > > This like any other user visible interface would be a much easier sell > > if there was a clear usecase to justify it. I do not see anything > > controversial about exporting such a value but my general take is that > > we are only adding new interface when existing ones are insufficient. A > > performance might be a very good reason but that would really require to > > come with some real life numbers. Michal, > Fair enough and understood. > > At this stage, I unfortunately do not have such supporting data. This was only > useful in an isolated situation. Having said this, I thought that the > aforementioned interface would be helpful to others, in particular, given the > known limitation. Furthermore, I can see that this is already provided via /proc/cgroups (see proc_cgroupstats_show()). As such, another possibility: the proposed interface could reliably produce the difference between the maximum permitted memory-controlled cgroup count and the used count (i.e. the remaining memory cgroup count, from root); albeit, I doubt that this would be particularly useful to others i.e., the use-case would be rather limited. Kind regards, -- Aaron Tomlin ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-11-26 11:02 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-24 10:58 [PATCH] memcg: add support to generate the total count of children from root Aaron Tomlin
[not found] ` <20201124105836.713371-1-atomlin-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2020-11-24 11:26 ` Michal Hocko
[not found] ` <20201124112612.GV27488-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2020-11-24 13:36 ` Aaron Tomlin
[not found] ` <CANfR36hyrqXjk2tL03GzCk6rn6sCD7Sd811soBsZC3dHY0h9fQ@mail.gmail.com>
2020-11-24 13:36 ` Michal Hocko
2020-11-24 13:47 ` Aaron Tomlin
2020-11-26 11:02 ` Aaron Tomlin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox