From: Andrew Morton <akpm@linux-foundation.org>
To: Paul Menage <menage@google.com>
Cc: Benjamin Blum <bblum@google.com>,
lizf@cn.fujitzu.com, serue@us.ibm.com,
containers@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] Adds a read-only "procs" file similar to "tasks" that shows only unique tgids
Date: Fri, 3 Jul 2009 09:50:00 -0700 [thread overview]
Message-ID: <20090703095000.cf46ad19.akpm@linux-foundation.org> (raw)
In-Reply-To: <6599ad830907030911m6176dc59id3a7d897b03d2bd@mail.gmail.com>
On Fri, 3 Jul 2009 09:11:56 -0700 Paul Menage <menage@google.com> wrote:
> Hmm, I guess we could use a combination of the IDR approach that you
> suggested and the present shared-array approach:
>
> - when opening a tasks file:
> - populate an IDR with all the pids/tgids in the cgroup
> - find any existing IDR open for the cgroup in the list keyed by
> namespace and filetype ("procs"/"tasks")
> - replace (and free) the existing IDR or extend the list with a new one
> - bump the refcount
>
> - when reading:
> - iterate from the last reported pid/tgid
>
> - when closing:
> - drop the refcount, and free the IDR if the count reaches 0
>
> That maintains the property of preventing userspace from consuming
> arbitrary amounts of memory just by holding an fd open on a large
> cgroup, while also maintaining a consistency guarantee, and we get the
> ordering for free as a side-effect of the IDR, with no large memory
> allocations. It's not hugely different from the current solution - all
> we're doing is replacing the large array in the cgroup_pidlist
> structure with an IDR, and populating/reading it appropriately.
I think you're saying "for each pid N in the cgroup, set the Nth
element in an IDR tree". That would work. And it automatically gives
ordered traversal and dupe removal.
I don't think IDRs permit in-order traversal, whereas radix-trees do
support this. Unfortunately radix-trees are presented as operating on
void* data, so one would need to do some typecasting when storing
BITS_PER_LONG-sized bitfields inside them.
> The downsides would be a higher fixed cost, I suspect - setting up an
> IDR and populating/scanning it sounds like it has to be more expensive
> than filling/reading a linear buffer. But it's probably not enough
> extra overhead to worry too much about it.
Yes, I expect it'd be fairly modest. There will be far more calls to
kmalloc() when using a tree, but that's the whole point..
next prev parent reply other threads:[~2009-07-03 16:50 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-02 23:26 [PATCH 0/2] CGroups: cgroup member list enhancement/fix Paul Menage
2009-07-03 1:15 ` Li Zefan
[not found] ` <20090702231814.3969.44308.stgit-u3IScbYxn0zHt/MElyovVYaSKrA+ACpX0E9HWUfgJXw@public.gmane.org>
2009-07-02 23:26 ` [PATCH 1/2] Adds a read-only "procs" file similar to "tasks" that shows only unique tgids Paul Menage
2009-07-02 23:26 ` Paul Menage
[not found] ` <20090702232620.3969.16680.stgit-u3IScbYxn0zHt/MElyovVYaSKrA+ACpX0E9HWUfgJXw@public.gmane.org>
2009-07-02 23:46 ` Andrew Morton
2009-07-02 23:46 ` Andrew Morton
[not found] ` <20090702164649.303c4952.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 0:31 ` Benjamin Blum
2009-07-03 0:31 ` Benjamin Blum
[not found] ` <2f86c2480907021731h13e0bb95q94f06829eded9aa6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 0:53 ` Andrew Morton
2009-07-03 0:53 ` Andrew Morton
2009-07-03 1:08 ` Paul Menage
[not found] ` <6599ad830907021808o6f3bb51eh324e4bf13544d83e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 1:17 ` Benjamin Blum
2009-07-03 1:30 ` Andrew Morton
2009-07-03 1:17 ` Benjamin Blum
2009-07-03 2:08 ` Andrew Morton
[not found] ` <20090702190845.0cafc46a.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 4:16 ` Paul Menage
2009-07-03 4:16 ` Paul Menage
2009-07-03 6:55 ` Andrew Morton
2009-07-03 7:54 ` KAMEZAWA Hiroyuki
[not found] ` <20090702235527.7ddc873c.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 7:54 ` KAMEZAWA Hiroyuki
2009-07-03 16:11 ` Paul Menage
2009-07-03 16:11 ` Paul Menage
2009-07-03 16:50 ` Andrew Morton [this message]
[not found] ` <20090703095000.cf46ad19.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 17:54 ` Paul Menage
2009-07-03 17:54 ` Paul Menage
[not found] ` <6599ad830907031054x74d90149y38aae60afa403d58-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 18:10 ` Andrew Morton
2009-07-03 18:10 ` Andrew Morton
[not found] ` <20090703111016.ceb28541.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-15 8:33 ` Eric W. Biederman
2009-07-15 8:33 ` Eric W. Biederman
2009-07-15 16:18 ` Paul Menage
[not found] ` <m1ocrm73cu.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2009-07-15 16:18 ` Paul Menage
[not found] ` <6599ad830907030911m6176dc59id3a7d897b03d2bd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 16:50 ` Andrew Morton
[not found] ` <6599ad830907022116n7a711c7fs52ff9b400ec8797f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 6:55 ` Andrew Morton
[not found] ` <2f86c2480907021817o79fce75yd9785aab682f7bb4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 2:08 ` Andrew Morton
2009-07-03 2:25 ` Matt Helsley
2009-07-03 2:25 ` Matt Helsley
2009-07-03 3:49 ` Paul Menage
[not found] ` <20090703022553.GJ19135-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-07-03 3:49 ` Paul Menage
2009-07-03 7:08 ` Benjamin Blum
2009-07-03 7:08 ` Benjamin Blum
2009-07-03 1:30 ` Andrew Morton
2009-07-03 5:54 ` KAMEZAWA Hiroyuki
[not found] ` <20090703145441.f526793f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-07-03 15:52 ` Paul Menage
2009-07-03 15:52 ` Paul Menage
[not found] ` <6599ad830907030852p2cd667e3m353d68448e0cdc6a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-04 2:07 ` KAMEZAWA Hiroyuki
2009-07-04 2:07 ` KAMEZAWA Hiroyuki
[not found] ` <3f9558558c68d9e2fe00f7c7681c3764.squirrel-n3SY6/QrmYVJe+uFzlzAcYO9/linGGC/AL8bYrjMMd8@public.gmane.org>
2009-07-04 16:10 ` Paul Menage
2009-07-04 16:10 ` Paul Menage
2009-07-05 23:53 ` KAMEZAWA Hiroyuki
[not found] ` <6599ad830907040910k5c9d720bqafdf596bbc005783-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-05 23:53 ` KAMEZAWA Hiroyuki
[not found] ` <20090702183004.1e3f4315.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 5:54 ` KAMEZAWA Hiroyuki
[not found] ` <20090702175341.fd2e26d5.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 1:08 ` Paul Menage
2009-07-02 23:26 ` [PATCH 2/2] Ensures correct concurrent opening/reading of pidlists across pid namespaces Paul Menage
2009-07-02 23:26 ` Paul Menage
[not found] ` <20090702232625.3969.54444.stgit-u3IScbYxn0zHt/MElyovVYaSKrA+ACpX0E9HWUfgJXw@public.gmane.org>
2009-07-02 23:54 ` Andrew Morton
2009-07-02 23:54 ` Andrew Morton
[not found] ` <20090702165413.f4a21471.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-07-03 0:22 ` Paul Menage
2009-07-03 0:22 ` Paul Menage
[not found] ` <6599ad830907021722x7b012991i1eca056bc72c010c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-03 0:26 ` Paul Menage
2009-07-03 0:26 ` Paul Menage
2009-07-03 0:43 ` Benjamin Blum
2009-07-03 0:43 ` Benjamin Blum
2009-07-03 1:15 ` [PATCH 0/2] CGroups: cgroup member list enhancement/fix Li Zefan
2009-07-05 6:38 ` Balbir Singh
2009-07-05 6:38 ` Balbir Singh
2009-07-10 23:58 ` Paul Menage
2009-07-13 12:11 ` Balbir Singh
[not found] ` <20090713121138.GC5051-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-07-13 16:26 ` Paul Menage
2009-07-13 16:26 ` Paul Menage
2009-07-14 5:56 ` Balbir Singh
2009-07-14 6:49 ` Paul Menage
2009-07-14 7:16 ` Balbir Singh
2009-07-14 17:34 ` Benjamin Blum
2009-07-14 17:43 ` Paul Menage
[not found] ` <6599ad830907141043s1c16d5c9saad9118c210ecef4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-14 20:38 ` Paul Menage
2009-07-14 20:38 ` Paul Menage
[not found] ` <6599ad830907141338t794e60admf81807b381c46e41-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-14 23:08 ` Matt Helsley
2009-07-14 23:08 ` Matt Helsley
[not found] ` <2f86c2480907141034r5a985cfue9e8fdf64ad28465-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-14 17:43 ` Paul Menage
[not found] ` <20090714071617.GK5051-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-07-14 17:34 ` Benjamin Blum
[not found] ` <6599ad830907132349u6cf52060t4fafb6637cbe4ed1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-14 7:16 ` Balbir Singh
[not found] ` <20090714055638.GI5051-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-07-14 6:49 ` Paul Menage
[not found] ` <6599ad830907130926v7788af12hdcd76e4ccb3ab6de-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-14 5:56 ` Balbir Singh
[not found] ` <6599ad830907101658i13e4046br70377a487dd6b49b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-07-13 12:11 ` Balbir Singh
[not found] ` <20090705063850.GX11273-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-07-10 23:58 ` Paul Menage
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=20090703095000.cf46ad19.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=bblum@google.com \
--cc=containers@lists.linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitzu.com \
--cc=menage@google.com \
--cc=serue@us.ibm.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: link
Be 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.