From: ebiederm@xmission.com (Eric W. Biederman)
To: Andi Kleen <ak@suse.de>
Cc: "Serge E. Hallyn" <serue@us.ibm.com>,
herbert@13thfloor.at, dev@sw.ru, linux-kernel@vger.kernel.org,
sam@vilain.net, xemul@sw.ru, haveblue@us.ibm.com, clg@us.ibm.com,
frankeh@us.ibm.com
Subject: Re: [PATCH 7/7] uts namespaces: Implement CLONE_NEWUTS flag
Date: Tue, 02 May 2006 02:48:23 -0600 [thread overview]
Message-ID: <m14q0895ig.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <200605021017.19897.ak@suse.de> (Andi Kleen's message of "Tue, 2 May 2006 10:17:19 +0200")
Andi Kleen <ak@suse.de> writes:
> On Tuesday 02 May 2006 10:03, Eric W. Biederman wrote:
>> Andi Kleen <ak@suse.de> writes:
>>
>> > "Serge E. Hallyn" <serue@us.ibm.com> writes:
>> >
>> >> Implement a CLONE_NEWUTS flag, and use it at clone and sys_unshare.
>> >
>> > I still think it's a design mistake to add zillions of pointers to
> task_struct
>> > for every possible kernel object. Going through a proxy datastructure to
>> > merge common cases would be much better.
>>
>> The design point is not every kernel object. The target is one
>> per namespace. Or more usefully one per logical chunk of the kernel.
>
> Which are likely tens or even hundreds if you go through all the source.
> Even tens would bloat task_struct far too much.
We don't have that many places where we put global names in
the linux api. Yes there are several and it is painful,
but we are nowhere near as high as you expect.
>> The UTS namespace is by far the smallest of these pieces.
>>
>> The kernel networking stack is probably the largest.
>>
>> At last count there were about 7 of these, enough so that the few
>> remaining clone bits would be sufficient.
>
> 7 additional bits will probably not be enough. I still don't
> quite understand why you want individual bits for everything.
> Why not group them into logical pieces?
Each bit currently maps to one logical piece, that is why I expect
to have enough bits.
> If you really want individual bits you'll likely need to think
> about a clone2() call with more flags soon.
Being short on bits should keep us thinking about keeping things
in logical chunks.
>> Do you disagree that to be able to implement this properly we
>> need to take small steps?
>
> No, but at least the basic infrastructure for expansion should
> be added first.
>
>> Are there any semantic differences between a clone bit and what you
>> are proposing?
>
> No just internals.
Good that means we can still optimize this.
> > If it is just an internal implementation detail do you have a clear
>> suggestion on how to implement this? Possibly illustrated by the
>> thread flags that are already in this situation, and more likely
>> to always share everything.
>
> Have a proxy structure which has pointers to the many name spaces and a bit
> mask for "namespace X is different". This structure would be reference
> counted. task_struct has a single pointer to it.
>
> On clone check the clone flags against the bit mask. If there is any
> difference allocate a new structure and clone the name spaces into it.
> If no difference just use the old data structure after increasing its
> reference count.
>
> Possible name "nsproxy".
Sounds reasonable, and I have nothing against it.
I simply think at this point where we are still struggling to
get the simplest namespace merged and working correctly that is a premature
optimization.
>> Except for reducing reference counting I really don't see where
>> we could have a marked improvement. I also don't see us closing
>> the door to that kind of implementation at this point, but instead
>> taking the simple path.
>
> With many name spaces you would have smaller task_struct, less cache
> foot print, better cache use of task_struct because slab cache colouring
> will still work etc.
Makes sense. I have no problem against that as an optimization,
and it is firmly on the todo list as something to try. Right now with
only 2 non-thread clone flags I believe it will obfuscate the code more
than help performance.
Eric
next prev parent reply other threads:[~2006-05-02 8:49 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-01 19:53 [PATCH 2/7] uts namespaces: switch to using uts namespaces Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 3/7] uts namespaces: use init_utsname when appropriate Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 1/7] uts namespaces: introduce temporary helpers Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 4/7] uts namespaces: implement utsname namespaces Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 5/7] uts namespaces: sysctl hack Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 6/7] uts namespaces: remove system_utsname Serge E. Hallyn
2006-05-01 19:53 ` [PATCH 7/7] uts namespaces: Implement CLONE_NEWUTS flag Serge E. Hallyn
2006-05-01 20:28 ` Dave Hansen
2006-05-01 21:11 ` Serge E. Hallyn
2006-05-01 21:58 ` Dave Hansen
2006-05-02 17:32 ` Serge E. Hallyn
2006-05-02 8:55 ` Eric W. Biederman
2006-05-02 6:55 ` Andi Kleen
2006-05-02 8:03 ` Eric W. Biederman
2006-05-02 8:17 ` Andi Kleen
2006-05-02 8:48 ` Eric W. Biederman [this message]
2006-05-02 17:20 ` Serge E. Hallyn
2006-05-02 17:30 ` Andi Kleen
2006-05-03 16:11 ` Serge E. Hallyn
2006-05-03 16:19 ` Serge E. Hallyn
2006-05-05 6:44 ` Herbert Poetzl
2006-05-05 12:17 ` Serge E. Hallyn
2006-05-05 11:02 ` Andi Kleen
2006-05-05 11:43 ` Serge E. Hallyn
2006-05-05 14:31 ` Andi Kleen
2006-05-05 15:55 ` Eric W. Biederman
2006-05-01 19:53 [PATCH 0/7] uts namespaces: Introduction Serge E. Hallyn
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=m14q0895ig.fsf@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=ak@suse.de \
--cc=clg@us.ibm.com \
--cc=dev@sw.ru \
--cc=frankeh@us.ibm.com \
--cc=haveblue@us.ibm.com \
--cc=herbert@13thfloor.at \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@vilain.net \
--cc=serue@us.ibm.com \
--cc=xemul@sw.ru \
/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
Powered by JetHome