9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
@ 2004-03-02 21:59 Keith Nash
  0 siblings, 0 replies; 45+ messages in thread
From: Keith Nash @ 2004-03-02 21:59 UTC (permalink / raw)
  To: 9fans

On Tuesday 02 March 2004 04:56, ron minnich wrote:
> ... v9fs ...
>
> It works. I don't know why we're not all using it.
>
> ron

Can you do a tarball release?  The last one was in 2002.  Most of the sf site (except CVS?) is out of date.

Keith.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-03-01 10:35         ` Douglas A. Gwyn
  2004-03-01 11:01           ` Geoff Collyer
@ 2004-03-01 19:13           ` Joel Salomon
  1 sibling, 0 replies; 45+ messages in thread
From: Joel Salomon @ 2004-03-01 19:13 UTC (permalink / raw)
  To: 9fans


Douglas A. Gwyn said:
> (Whose "Law" was it that said that file storage always
> expands to fill whatever disk resources are available?
> The same thing seems to apply to CPU cycles.)

I've seen it quoted: "Intel giveth, Microsoft taketh away."

Is interesting to look at various open-source projects and see which ones
get larger & slower with newer versions (gcc, KDE, linux gets larger, but
if Linus is to be believed, they *are* getting faster) and those that
*decrease* in size -- any examples, anyone? Gnome, I *think*, but that's
just because they started of with infinite bloat, nowhere to go but
smaller/faster ;-)

--Joel


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 19:44                 ` Charles Forsyth
  2004-02-28 20:13                   ` Rob Pike
@ 2004-03-01 11:50                   ` viro
  2004-03-01 11:49                     ` dbailey27
  1 sibling, 1 reply; 45+ messages in thread
From: viro @ 2004-03-01 11:50 UTC (permalink / raw)
  To: 9fans

On Sat, Feb 28, 2004 at 07:44:31PM +0000, Charles Forsyth wrote:
> >>For Linux such experiments had been done and results were very clear -
> >>price of TLB flushes was considerable and that's aside of the complexity
> >>of supporting a lot of mappings with partial VM sharing.  For Plan 9 the
> 
> were those real applications or a synthetic test?  i'm curious what it actually did.
> sorry, wrong question.  can you please point me to the paper and/or file that might answer them?

Hmm...  Probably Ingo Molnar would have all details.  IIRC, that was on real
applications, but back then I was dealing with filesystem side of things and
not much else, so that's second-hand information.  I can ask him for details
if you want them; I certainly agree that e.g. presense of shared libraries
changes the picture, so those results do not apply directly to Plan 9 and if
somebody really cares they should try and compare for normal Plan 9 workloads.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-03-01 11:50                   ` viro
@ 2004-03-01 11:49                     ` dbailey27
  0 siblings, 0 replies; 45+ messages in thread
From: dbailey27 @ 2004-03-01 11:49 UTC (permalink / raw)
  To: viro, 9fans


> Hmm...  Probably Ingo Molnar would have all details.  IIRC, that was on real
> applications, but back then I was dealing with filesystem side of things and
> not much else, so that's second-hand information.  I can ask him for details
> if you want them; 

Yes, please.

Don



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-03-01 10:35         ` Douglas A. Gwyn
@ 2004-03-01 11:01           ` Geoff Collyer
  2004-03-01 19:13           ` Joel Salomon
  1 sibling, 0 replies; 45+ messages in thread
From: Geoff Collyer @ 2004-03-01 11:01 UTC (permalink / raw)
  To: 9fans

from a fortune file:

	The steady state of disks is full.  --Ken Thompson

I believe it was Mike O'Dell who asked (approximately) `Why is it that
despite processors getting faster, there never seems to be any
additional cycles available to me?'.  His answer was window systems
and networks, among others.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 13:32       ` boyd, rounin
@ 2004-03-01 10:35         ` Douglas A. Gwyn
  2004-03-01 11:01           ` Geoff Collyer
  2004-03-01 19:13           ` Joel Salomon
  0 siblings, 2 replies; 45+ messages in thread
From: Douglas A. Gwyn @ 2004-03-01 10:35 UTC (permalink / raw)
  To: 9fans

boyd, rounin wrote:
> get real, we're no longer using 1 MIP VAXes, where TLB flushes
> etc were a real problem.  128 users on an 11/780, anyone?

There are a large number of platforms where there are
important constraints imposed by the MMU architecture.
Consider what it means when an OS requires such resources
that it cannot feasibly be implemented on a VAX, yet does
almost nothing more than could have readily been done
(with a different design) on a VAX.  It's nearly as bad
as a 1GHz machine getting so bogged down with GUI code
and poor interface design that some common tasks take
longer to accomplish than on a 1MHz PDP-11 running Unix.
(Whose "Law" was it that said that file storage always
expands to fill whatever disk resources are available?
The same thing seems to apply to CPU cycles.)


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:44     ` Nigel Roles
  2004-02-28 11:08       ` viro
  2004-02-28 13:32       ` boyd, rounin
@ 2004-03-01 10:35       ` Douglas A. Gwyn
  2 siblings, 0 replies; 45+ messages in thread
From: Douglas A. Gwyn @ 2004-03-01 10:35 UTC (permalink / raw)
  To: 9fans

Nigel Roles wrote:
> The performance argument may well still be regarded by Linus as
> stronger, but there are other differences. One is that the stack
> used by the clone, being allocated on the heap, is fixed in size,
> and unprotected from overflow.

That would be a serious flaw on a system with a small address space.
It's problematic anyway in its inefficient use of PTEs for the
process, since far more table entries are needed (extra stack
for each thread).

However, overflow detection can in principle be achieved by
mapping all pages of each thread's private stack region except
for the last page, which allows the MMU to flag any overflow.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-29 21:14             ` boyd, rounin
@ 2004-03-01  4:40               ` Kenji Okamoto
  0 siblings, 0 replies; 45+ messages in thread
From: Kenji Okamoto @ 2004-03-01  4:40 UTC (permalink / raw)
  To: 9fans

By the way, it took half a day for me to read plenty of mails during
these three days while I was knocked down by flu...  Yeah, it was
interesting to read those.

Kenji



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  6:01           ` dbailey27
@ 2004-02-29 21:14             ` boyd, rounin
  2004-03-01  4:40               ` Kenji Okamoto
  0 siblings, 1 reply; 45+ messages in thread
From: boyd, rounin @ 2004-02-29 21:14 UTC (permalink / raw)
  To: 9fans

> I believe the shortsightedness of not imposing a strict type created
> too many possibilities. This creates a bigger problem when dealing
> with libraries imported into a system with no defined interface, and
> you end up with the desire for one.

limbo does this right.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:38   ` Bruce Ellis
  2004-02-28 10:10     ` Charles Forsyth
  2004-02-28 13:28     ` boyd, rounin
@ 2004-02-29 20:59     ` boyd, rounin
  2 siblings, 0 replies; 45+ messages in thread
From: boyd, rounin @ 2004-02-29 20:59 UTC (permalink / raw)
  To: 9fans

> i had trouble believing that the screeds of banter were from linus.
> maybe he has a ghost writer.

this is the bigest kernel (sic) in the southern hemisphere.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 19:44                 ` Charles Forsyth
@ 2004-02-28 20:13                   ` Rob Pike
  2004-03-01 11:50                   ` viro
  1 sibling, 0 replies; 45+ messages in thread
From: Rob Pike @ 2004-02-28 20:13 UTC (permalink / raw)
  To: 9fans

>>> For Linux such experiments had been done and results were very clear
>>> -
>>> price of TLB flushes was considerable and that's aside of the
>>> complexity
>>> of supporting a lot of mappings with partial VM sharing.  For Plan 9
>>> the
>
> were those real applications or a synthetic test?  i'm curious what it
> actually did.
> sorry, wrong question.  can you please point me to the paper and/or
> file that might answer them?
> i wonder about the claimed `complexity'.  then again, i've seen
> signal.h
> not to mention sys/types.h

mike burrows and i talked about this yesterday and concluded that there
is certainly a cost for plan 9's model, since you must, depending on the
MMU, do at least one of:
	- share the TLB among >1 task ids
	- fault in some MMU entries from memory after a context switch,
	  since the root of the MMU tree must be different for each process.
however, there are two mitigating factors.  first, the cost of sharing
the
TLB will be very program dependent.  sometimes it will hurt, but often
it will not.  for typical plan 9 programs with most of the non-main
procs
just doing an i/o loop, the cost will be minimal.  for a program that's
a multithreaded memset or its equivalent, it's probably a measurable
factor but not deal-breaking except in unrealistic pathological
situations.  in any case, this issue
matters more on MIPS-like MMUs than on the x86, i believe.

second, the total
overhead to fault in the TLB path to the pages you're using after a
context switch is something like a couple of microseconds in current
processors, perhaps as high as 10 microseconds for a very bad and
unusual case.  if those few microseconds are a performance issue for
your
program, you should be pretty happy.

if performance is your dominant concern, you could turn these points
into
a condemnation of plan 9's model.  i've never been in that position,
though.  for me, performance is but one factor in the figure of merit
of a system and is often offset by other factors.

-rob



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 18:53               ` viro
@ 2004-02-28 19:44                 ` Charles Forsyth
  2004-02-28 20:13                   ` Rob Pike
  2004-03-01 11:50                   ` viro
  0 siblings, 2 replies; 45+ messages in thread
From: Charles Forsyth @ 2004-02-28 19:44 UTC (permalink / raw)
  To: 9fans

>>For Linux such experiments had been done and results were very clear -
>>price of TLB flushes was considerable and that's aside of the complexity
>>of supporting a lot of mappings with partial VM sharing.  For Plan 9 the

were those real applications or a synthetic test?  i'm curious what it actually did.
sorry, wrong question.  can you please point me to the paper and/or file that might answer them?
i wonder about the claimed `complexity'.  then again, i've seen signal.h
not to mention sys/types.h



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 18:16             ` Nigel Roles
@ 2004-02-28 18:53               ` viro
  2004-02-28 19:44                 ` Charles Forsyth
  0 siblings, 1 reply; 45+ messages in thread
From: viro @ 2004-02-28 18:53 UTC (permalink / raw)
  To: 9fans

On Sat, Feb 28, 2004 at 06:16:50PM -0000, Nigel Roles wrote:

> The question is, does this make Linux 'right' and Plan 9 'wrong',
> which was quite a bit of what touched off the thread?
>
> Neither, I would have thought.

<shrug>

There is only one way to figure out and it had been described upthread.
For Linux such experiments had been done and results were very clear -
price of TLB flushes was considerable and that's aside of the complexity
of supporting a lot of mappings with partial VM sharing.  For Plan 9 the
answer might be different, might be the same, but there's no way to
pull that answer out of thin air.  FWIW, I suspect that full-shared
VM would be a win, but it can only be decided by trying and comparing.
End of story, unless somebody has time for that work and is willing to
do it.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* RE: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 14:14           ` viro
@ 2004-02-28 18:16             ` Nigel Roles
  2004-02-28 18:53               ` viro
  0 siblings, 1 reply; 45+ messages in thread
From: Nigel Roles @ 2004-02-28 18:16 UTC (permalink / raw)
  To: 9fans

9fans-admin@cse.psu.edu wrote:
> Subject: Re: [9fans] Threads: Sewing badges of honor onto a Kernel
>
>
> On Sat, Feb 28, 2004 at 01:40:48PM -0000, Nigel Roles wrote:
>> Whilst writing the email, it occurred to me that you could
>> probably pull stunts with mmap/mremap and catching signals,
>> and get what is wanted.
>
> mmap(2)
>        MAP_GROWSDOWN
>               Used for stacks. Indicates to the kernel VM system that
>               the map- ping should extend downwards in memory.
>
> See mm/mmap.c:expand_stack() for details.
>
> So no signals involved and that's precisely what is used for stack
> anyway - anonymous VM_GROWSDOWN mapping.
>
> Note: from my reading of the calc_vm_flag_bits() there is a problem on
> parisc, what with the stack growing up - no way to get VM_GROWSUP from
> mmap() and that's what would be needed to act as stacks there.  For
> that matter, parisc do_page_fault() looks fishy in that area, but I'm
> not familiar enough with that platform.

Fair point; I had missed the utility of MAP_ANON.

So there it is, Martin. Near enough the same semantics.
It's not pretty, and not obvious, but equivalent. With a helper
function it could be transparent to the user level (i.e. as
easy to deploy as rfork()), and apparently more MMU efficient.
I say apparently because I don't feel qualified to judge.

The question is, does this make Linux 'right' and Plan 9 'wrong',
which was quite a bit of what touched off the thread?

Neither, I would have thought.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 13:40         ` Nigel Roles
  2004-02-28 13:36           ` boyd, rounin
@ 2004-02-28 14:14           ` viro
  2004-02-28 18:16             ` Nigel Roles
  1 sibling, 1 reply; 45+ messages in thread
From: viro @ 2004-02-28 14:14 UTC (permalink / raw)
  To: 9fans; +Cc: Linus Torvalds

On Sat, Feb 28, 2004 at 01:40:48PM -0000, Nigel Roles wrote:
> Whilst writing the email, it occurred to me that you could
> probably pull stunts with mmap/mremap and catching signals,
> and get what is wanted.

mmap(2)
       MAP_GROWSDOWN
              Used for stacks. Indicates to the kernel VM system that the map-
              ping should extend downwards in memory.

See mm/mmap.c:expand_stack() for details.

So no signals involved and that's precisely what is used for stack anyway -
anonymous VM_GROWSDOWN mapping.

Note: from my reading of the calc_vm_flag_bits() there is a problem on
parisc, what with the stack growing up - no way to get VM_GROWSUP from
mmap() and that's what would be needed to act as stacks there.  For that
matter, parisc do_page_fault() looks fishy in that area, but I'm not
familiar enough with that platform.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  5:20   ` Martin C.Atkins
  2004-02-28  9:44     ` Nigel Roles
@ 2004-02-28 13:41     ` David Presotto
  1 sibling, 0 replies; 45+ messages in thread
From: David Presotto @ 2004-02-28 13:41 UTC (permalink / raw)
  To: 9fans

The overhead on fork/exec of having to copy the stack descriptors
into the forked process is pretty minimal compared to the exec.

If you are just forking without execing then getting a new
stack is what you want.

If you are forking and sharing memory twixt the two forked processes,
we do indeed take a hit every time the processes context switch
especially on the x86 where we lose the previous tlb context as
soon as we putcr3().  If the two processes shared the TLB state
(pid on mips, page table on x86) we'ld be able to avoid that.
Not having any private segments would allow us to do it.

If you are serious about caring, throw another bit into rfork
that says dump the stack segment.  You'll also have to find
someplace in all architectures to hide the pointer to the
thread private memory.  Add to the kernel support for sharing
the TLB state.  Then measure the two and tell us how much you
saved in various programs.  If its non-neglibigle, you'll
have a reason argument instead of this endless whining back
and forth.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* RE: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 11:08       ` viro
@ 2004-02-28 13:40         ` Nigel Roles
  2004-02-28 13:36           ` boyd, rounin
  2004-02-28 14:14           ` viro
  0 siblings, 2 replies; 45+ messages in thread
From: Nigel Roles @ 2004-02-28 13:40 UTC (permalink / raw)
  To: 9fans

9fans-admin@cse.psu.edu wrote:
> On Sat, Feb 28, 2004 at 09:44:24AM -0000, Nigel Roles wrote:
>
>> The performance argument may well still be regarded by Linus as
>> stronger, but there are other differences. One is that the stack
>> used by the clone, being allocated on the heap, is fixed in size,
>> and unprotected from overflow.
>
> clone() uses whatever you pass to it; man 2 mmap for further
> inspiration...

To paraphrase Captain Mainwaring, "I wondered if you'd spot that".
Whilst writing the email, it occurred to me that you could
probably pull stunts with mmap/mremap and catching signals,
and get what is wanted.

We are now composing several system calls in some moderately
clever ways to get a behaviour which, whilst not equivalent to
rfork() is as flexible. It's not exactly obvious though is it?
I think I would expect to see a helper function.

Nice to see you on the list again Al.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 13:40         ` Nigel Roles
@ 2004-02-28 13:36           ` boyd, rounin
  2004-02-28 14:14           ` viro
  1 sibling, 0 replies; 45+ messages in thread
From: boyd, rounin @ 2004-02-28 13:36 UTC (permalink / raw)
  To: 9fans

> To paraphrase Captain Mainwaring, "I wondered if you'd spot that".

just "don't panic, don't panic"!!




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:44     ` Nigel Roles
  2004-02-28 11:08       ` viro
@ 2004-02-28 13:32       ` boyd, rounin
  2004-03-01 10:35         ` Douglas A. Gwyn
  2004-03-01 10:35       ` Douglas A. Gwyn
  2 siblings, 1 reply; 45+ messages in thread
From: boyd, rounin @ 2004-02-28 13:32 UTC (permalink / raw)
  To: 9fans

> The performance argument may well still be regarded by Linus as
> stronger, but there are other differences.

get real, we're no longer using 1 MIP VAXes, where TLB flushes
etc were a real problem.  128 users on an 11/780, anyone?



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:38   ` Bruce Ellis
  2004-02-28 10:10     ` Charles Forsyth
@ 2004-02-28 13:28     ` boyd, rounin
  2004-02-29 20:59     ` boyd, rounin
  2 siblings, 0 replies; 45+ messages in thread
From: boyd, rounin @ 2004-02-28 13:28 UTC (permalink / raw)
  To: 9fans

> correct or challenge on any presummption.

any number between 1 and 9 is a pint!!



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:44     ` Nigel Roles
@ 2004-02-28 11:08       ` viro
  2004-02-28 13:40         ` Nigel Roles
  2004-02-28 13:32       ` boyd, rounin
  2004-03-01 10:35       ` Douglas A. Gwyn
  2 siblings, 1 reply; 45+ messages in thread
From: viro @ 2004-02-28 11:08 UTC (permalink / raw)
  To: 9fans

On Sat, Feb 28, 2004 at 09:44:24AM -0000, Nigel Roles wrote:

> The performance argument may well still be regarded by Linus as
> stronger, but there are other differences. One is that the stack
> used by the clone, being allocated on the heap, is fixed in size,
> and unprotected from overflow.

clone() uses whatever you pass to it; man 2 mmap for further inspiration...


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28 10:10     ` Charles Forsyth
@ 2004-02-28 10:28       ` Bruce Ellis
  0 siblings, 0 replies; 45+ messages in thread
From: Bruce Ellis @ 2004-02-28 10:28 UTC (permalink / raw)
  To: 9fans

yeah, it made no sense.  both the froggie and the ps2 ports
have very static page tables.  and the tlb is always right
after a first access.  private stacks?  every thread.

brucee
----- Original Message -----
From: "Charles Forsyth" <forsyth@terzarima.net>
To: <9fans@cse.psu.edu>
Sent: Saturday, February 28, 2004 10:10 AM
Subject: Re: [9fans] Threads: Sewing badges of honor onto a Kernel


> i didn't say this at the time, but now that you mention inferno, i will.
> if someone is seriously worried about TLB flushing on context switches,
> likes setting up the MMU pretty much once-for-all,
> thinks all threads should share all the address space, and absolutely
> disdains user mode, he should be writing in limbo for
> native inferno, where all of that is the usual state,
> and indeed there is no other.  we're all in it together.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  9:38   ` Bruce Ellis
@ 2004-02-28 10:10     ` Charles Forsyth
  2004-02-28 10:28       ` Bruce Ellis
  2004-02-28 13:28     ` boyd, rounin
  2004-02-29 20:59     ` boyd, rounin
  2 siblings, 1 reply; 45+ messages in thread
From: Charles Forsyth @ 2004-02-28 10:10 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 438 bytes --]

i didn't say this at the time, but now that you mention inferno, i will.
if someone is seriously worried about TLB flushing on context switches,
likes setting up the MMU pretty much once-for-all,
thinks all threads should share all the address space, and absolutely
disdains user mode, he should be writing in limbo for
native inferno, where all of that is the usual state,
and indeed there is no other.  we're all in it together.

[-- Attachment #2: Type: message/rfc822, Size: 3045 bytes --]

From: "Bruce Ellis" <brucee@chunder.com>
To: <9fans@cse.psu.edu>
Subject: Re: [9fans] Threads: Sewing badges of honor onto a Kernel
Date: Sat, 28 Feb 2004 20:38:35 +1100
Message-ID: <006201c3fdde$a6339030$8201a8c0@cc77109e>

i had trouble believing that the screeds of banter were from linus.
maybe he has a ghost writer.  when he did the "i don't write
user programs with threads" and thru in some kernel examples,
with obligatory assembly language results - well i thought
what are these guys discussing? gee, i just write in limbo.
threads are fun, linus, when you don't have to do all that crap
to manage them.  i just use "spawn", the only language support
for threads.  the rest is easy - i'm happy.

correct or challenge on any presummption.

brucee
----- Original Message -----
From: "Rob Pike" <rob@mightycheese.com>
To: <9fans@cse.psu.edu>
Sent: Friday, February 27, 2004 4:28 PM
Subject: Re: [9fans] Threads: Sewing badges of honor onto a Kernel


> in case that wasn't clear enough, i have no idea what linus is talking
> about when he says we had 'overhead' that made it 'really stupid'
> 'in practice'.
>
> -rob

^ permalink raw reply	[flat|nested] 45+ messages in thread

* RE: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-28  5:20   ` Martin C.Atkins
@ 2004-02-28  9:44     ` Nigel Roles
  2004-02-28 11:08       ` viro
                         ` (2 more replies)
  2004-02-28 13:41     ` David Presotto
  1 sibling, 3 replies; 45+ messages in thread
From: Nigel Roles @ 2004-02-28  9:44 UTC (permalink / raw)
  To: 9fans

9fans-admin@cse.psu.edu wrote:
> If I understand right, I could summarise (one of) Linus's arguments,
> as follows:
>
> 	The cost of sharing some of VM, but not all (in terms of peformance,
> 	due to less-visible things like TLB flushes, etc), out-weighs having
> 	to write a little bit of assembler wrapping the clone system call
> 	(which only has to be got right once, however horrible it might be).
>
> I haven't seen any argument rebutting this in any way. If it is true,
> then surely a performance hit on all (forked?) processes, is more
> important than having to shim a system call? If it is not true, then
> it would be nice to know!
>
> Tell me where I'm wrong, please?
>

The performance argument may well still be regarded by Linus as
stronger, but there are other differences. One is that the stack
used by the clone, being allocated on the heap, is fixed in size,
and unprotected from overflow.





^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:28 ` Rob Pike
  2004-02-27  6:19   ` Scott Schwartz
@ 2004-02-28  9:38   ` Bruce Ellis
  2004-02-28 10:10     ` Charles Forsyth
                       ` (2 more replies)
  1 sibling, 3 replies; 45+ messages in thread
From: Bruce Ellis @ 2004-02-28  9:38 UTC (permalink / raw)
  To: 9fans

i had trouble believing that the screeds of banter were from linus.
maybe he has a ghost writer.  when he did the "i don't write
user programs with threads" and thru in some kernel examples,
with obligatory assembly language results - well i thought
what are these guys discussing? gee, i just write in limbo.
threads are fun, linus, when you don't have to do all that crap
to manage them.  i just use "spawn", the only language support
for threads.  the rest is easy - i'm happy.

correct or challenge on any presummption.

brucee
----- Original Message -----
From: "Rob Pike" <rob@mightycheese.com>
To: <9fans@cse.psu.edu>
Sent: Friday, February 27, 2004 4:28 PM
Subject: Re: [9fans] Threads: Sewing badges of honor onto a Kernel


> in case that wasn't clear enough, i have no idea what linus is talking
> about when he says we had 'overhead' that made it 'really stupid'
> 'in practice'.
>
> -rob



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27 10:11 ` Douglas A. Gwyn
@ 2004-02-28  5:20   ` Martin C.Atkins
  2004-02-28  9:44     ` Nigel Roles
  2004-02-28 13:41     ` David Presotto
  0 siblings, 2 replies; 45+ messages in thread
From: Martin C.Atkins @ 2004-02-28  5:20 UTC (permalink / raw)
  To: 9fans, Linus Torvalds

If I understand right, I could summarise (one of) Linus's arguments,
as follows:

	The cost of sharing some of VM, but not all (in terms of peformance, due
	to less-visible things like TLB flushes, etc), out-weighs having to
	write a little bit of assembler wrapping the clone system call (which
	only has to be got right once, however horrible it might be).

I haven't seen any argument rebutting this in any way. If it is true,
then surely a performance hit on all (forked?) processes, is more
important than having to shim a system call? If it is not true, then it
would be nice to know!

Tell me where I'm wrong, please?

Martin

--
Martin C. Atkins			martin@parvat.com
Parvat Infotech Private Limited		http://www.parvat.com{/,/martin}


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  4:45 dbailey27
                   ` (3 preceding siblings ...)
  2004-02-27  5:43 ` ron minnich
@ 2004-02-27 10:11 ` Douglas A. Gwyn
  2004-02-28  5:20   ` Martin C.Atkins
  4 siblings, 1 reply; 45+ messages in thread
From: Douglas A. Gwyn @ 2004-02-27 10:11 UTC (permalink / raw)
  To: 9fans

dbailey27@ameritech.net wrote:
> Under the "Kernel Space and User Space" heading:
[very confused description omitted]
> | While this is a clever feat, the downside is that the overhead in maintaining
> | the stacks makes this in practice really stupid to do. They found out too
> | late that the performance went to hell. Since they had programs which used
> | the interface they could not fix it. Instead they had to introduce an additional
> | properly-written interface so that they could do what was wise with the stack
> |  space. ...
I don't think any of that is correct.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:59     ` ron minnich
  2004-02-27  6:07       ` George Michaelson
@ 2004-02-27  7:47       ` boyd, rounin
  1 sibling, 0 replies; 45+ messages in thread
From: boyd, rounin @ 2004-02-27  7:47 UTC (permalink / raw)
  To: 9fans

> > what happens on MP systems?
> >
> not sure what you're driving at.

i do.  they have forgotten their lister and the old (now quick):

    s = splfoo();

    /* critical region */

    splx(s);

usually simplifies things, unlike the lunacy you have to code
on linix >= 2.2 -- i've coded it; it made me sick.



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:47         ` ron minnich
@ 2004-02-27  7:43           ` boyd, rounin
  0 siblings, 0 replies; 45+ messages in thread
From: boyd, rounin @ 2004-02-27  7:43 UTC (permalink / raw)
  To: 9fans

> > So the question to me is, why would you *want* a unified stack?
>
> well, you don't. It makes programming a nightmare and you need assembly
> goo to seperate the stacks after a fork, ...

yup



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:28 ` Rob Pike
@ 2004-02-27  6:19   ` Scott Schwartz
  2004-02-28  9:38   ` Bruce Ellis
  1 sibling, 0 replies; 45+ messages in thread
From: Scott Schwartz @ 2004-02-27  6:19 UTC (permalink / raw)
  To: 9fans

Al Viro once told me that if Plan 9 had shared libraries, rfork wouldn't
work as well.  Apparently they're concerned about page tables when there
are lots of different combinations of sharing going on.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:59     ` ron minnich
@ 2004-02-27  6:07       ` George Michaelson
  2004-02-27  7:47       ` boyd, rounin
  1 sibling, 0 replies; 45+ messages in thread
From: George Michaelson @ 2004-02-27  6:07 UTC (permalink / raw)
  To: 9fans; +Cc: rminnich

On Thu, 26 Feb 2004 22:59:36 -0700 (MST) ron minnich <rminnich@lanl.gov> wrote:

>On Fri, 27 Feb 2004, George Michaelson wrote:
>
>> what happens on MP systems?
>>
>
>
>not sure what you're driving at.

on an MP system, the forked process/thread has chances to be run on a distinct
CPU underneath. I would have thought the complexity of managing a shared stack
was magnified in that circumstance.

process migration -wise?

-George



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:54         ` Rob Pike
@ 2004-02-27  6:01           ` dbailey27
  2004-02-29 21:14             ` boyd, rounin
  0 siblings, 1 reply; 45+ messages in thread
From: dbailey27 @ 2004-02-27  6:01 UTC (permalink / raw)
  To: 9fans


> > I see Linus' logic as more of a negation of both efficiency and
> > reliability.

> i don't understand his logic.

Well, I interpreted his logic that each process, itself, should be the
manager of how data is abstracted into each thread. Further, that
the kernel should not impose an interface on such userspace
processes. When I think in terms of future scalability and dynamic
code design, this *seems* to be a good thing.

However, over time, we've seen that the lack of a conformed
interface has prompted the design of such an interface: pthreads,
etc. So, in the end, the necessity for POSIX compliance (or what ever
compliance you prefer) is perceived as paramount.

Though, this could have been avoided and deemed unnecessary if
these kernels had only implemented an interface in the first place.

I believe the shortsightedness of not imposing a strict type created
too many possibilities. This creates a bigger problem when dealing
with libraries imported into a system with no defined interface, and
you end up with the desire for one.

So, in the end, Plan 9 looks like the better solution. The foresight was
there to see a necessity for conformity where all possible permutations
of a given set tended to yield outcomes meeting at the same axis:
thus an interface.

I duno, that's my two cents, anyway. But, that's dependant on me
getting Linus' logic correct, which is why he was CC'd.

Don (north_)



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:50   ` George Michaelson
@ 2004-02-27  5:59     ` ron minnich
  2004-02-27  6:07       ` George Michaelson
  2004-02-27  7:47       ` boyd, rounin
  0 siblings, 2 replies; 45+ messages in thread
From: ron minnich @ 2004-02-27  5:59 UTC (permalink / raw)
  To: George Michaelson; +Cc: 9fans

On Fri, 27 Feb 2004, George Michaelson wrote:

> what happens on MP systems?
>


not sure what you're driving at.

ron



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:37       ` dbailey27
  2004-02-27  5:47         ` ron minnich
@ 2004-02-27  5:54         ` Rob Pike
  2004-02-27  6:01           ` dbailey27
  1 sibling, 1 reply; 45+ messages in thread
From: Rob Pike @ 2004-02-27  5:54 UTC (permalink / raw)
  To: 9fans

i agree with you. i think the model, although done for reasons of
expediency, has some advantages.  the split stack provides a
unique and powerful memory abstraction: same address, different
value.  (c.f. the up and mp registers in the kernel.)

> I see Linus' logic as more of a negation of both efficiency and
> reliability.

i don't understand his logic.

-rob



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:43 ` ron minnich
@ 2004-02-27  5:50   ` George Michaelson
  2004-02-27  5:59     ` ron minnich
  0 siblings, 1 reply; 45+ messages in thread
From: George Michaelson @ 2004-02-27  5:50 UTC (permalink / raw)
  To: 9fans; +Cc: rminnich


what happens on MP systems?

-George


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:37       ` dbailey27
@ 2004-02-27  5:47         ` ron minnich
  2004-02-27  7:43           ` boyd, rounin
  2004-02-27  5:54         ` Rob Pike
  1 sibling, 1 reply; 45+ messages in thread
From: ron minnich @ 2004-02-27  5:47 UTC (permalink / raw)
  To: 9fans

On Fri, 27 Feb 2004 dbailey27@ameritech.net wrote:

> So the question to me is, why would you *want* a unified stack?

well, you don't. It makes programming a nightmare and you need assembly
goo to seperate the stacks after a fork, else you will be stepping on
each others' stack. As the freebsd users of their official version of
rfork() learned, that meant you hit segv walls very quickly. Ouch.

> I see Linus' logic as more of a negation of both efficiency and reliability.

I don't even understand it.

ron



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  4:45 dbailey27
                   ` (2 preceding siblings ...)
  2004-02-27  5:28 ` Rob Pike
@ 2004-02-27  5:43 ` ron minnich
  2004-02-27  5:50   ` George Michaelson
  2004-02-27 10:11 ` Douglas A. Gwyn
  4 siblings, 1 reply; 45+ messages in thread
From: ron minnich @ 2004-02-27  5:43 UTC (permalink / raw)
  To: 9fans

I did the original rfork for freebsd, and I wrote it so I split the stacks
too. It was lovely, since you just rforked and all was shared save the
stack -- no assembly required. When they did the committed version, after
fork, all was shared.  This sucked. It was quite a mess to fix up your
stack so you weren't walking on each other's stack -- required assembly
goo to make it go. I hated it and stopped using it.

So I like plan 9 rfork quite a bit. I think Linus/Linux are wrong.

ron



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:26     ` Rob Pike
@ 2004-02-27  5:37       ` dbailey27
  2004-02-27  5:47         ` ron minnich
  2004-02-27  5:54         ` Rob Pike
  0 siblings, 2 replies; 45+ messages in thread
From: dbailey27 @ 2004-02-27  5:37 UTC (permalink / raw)
  To: 9fans


> so it's just a detail, a design choice with advantages and disadvantages
> either way.  win some, lose some. yet somehow our code
> is 'stupid' and linux is 'proper', so i guess the snarkiness endures.

What I am mainly confused about, is... We're talking about user
context threading. In user context threading we've got the abstractions
of a BSS, Data, Text, Stack, (etc in some cases) to maintain a sense
of program-persistant-object-classification. As a coder, we know
and can specify (for the most part) where these "objects" will end
up.

So the question to me is, why would you *want* a unified stack?
The only state in which this might be relevant is threads maintained
in ASM where data is passed back and forth via Stack and manipulated
via Registers. Otherwise, things just don't make much sense. In a
land of higher level languages, this semantic seems irrational.

This is mainly what I love about Plan 9's threading implementation, that
it unifies memory in the heap, and not at the stack. I agree that this
creates a powerful tool not only in efficiency, but also in reliability.

I see Linus' logic as more of a negation of both efficiency and reliability.

I'm not interested in starting a flame war, but I *am* interested in
understanding the logic, because I just can't see it clearly from my
point of view.

Don (north_)



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  4:45 dbailey27
  2004-02-27  5:05 ` Scott Schwartz
  2004-02-27  5:06 ` andrey mirtchovski
@ 2004-02-27  5:28 ` Rob Pike
  2004-02-27  6:19   ` Scott Schwartz
  2004-02-28  9:38   ` Bruce Ellis
  2004-02-27  5:43 ` ron minnich
  2004-02-27 10:11 ` Douglas A. Gwyn
  4 siblings, 2 replies; 45+ messages in thread
From: Rob Pike @ 2004-02-27  5:28 UTC (permalink / raw)
  To: 9fans

in case that wasn't clear enough, i have no idea what linus is talking
about when he says we had 'overhead' that made it 'really stupid'
'in practice'.

-rob



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:05   ` dbailey27
@ 2004-02-27  5:26     ` Rob Pike
  2004-02-27  5:37       ` dbailey27
  0 siblings, 1 reply; 45+ messages in thread
From: Rob Pike @ 2004-02-27  5:26 UTC (permalink / raw)
  To: 9fans

this is a peculiar distortion of a peculiar episode.  the original
issue linus
objected to, and rather rudely if i remember right, is that if the
stacks are
distinct, there can be confusing bugs if you pass pointers around that
accidentally happen to refer to stack addresses.  in practice, we never
do this because the thread library makes it all but impossible.  however
this issue really rankled linus,

on the other hand, having a separate piece of address space with
different contents is a powerful idea.  it's called something like
per-thread space, and it's really convenient for many implementation
details in threading.  but the feature is (or was; i really don't know
the
situation any more) hard to provide on linux and in fact the clone
interface used to be really nasty because the two processes returned
from the syscall with two processes sharing the same stack.  i
understand
something has been done to make the code after a clone on linux
easier to write, but when linus was dyspeptic about rfork, the linux
dance was really tricky.

so it's just a detail, a design choice with advantages and disadvantages
either way.  win some, lose some. yet somehow our code
is 'stupid' and linux is 'proper', so i guess the snarkiness endures.

-rob





^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  4:45 dbailey27
  2004-02-27  5:05 ` Scott Schwartz
@ 2004-02-27  5:06 ` andrey mirtchovski
  2004-02-27  5:05   ` dbailey27
  2004-02-27  5:06   ` dbailey27
  2004-02-27  5:28 ` Rob Pike
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 45+ messages in thread
From: andrey mirtchovski @ 2004-02-27  5:06 UTC (permalink / raw)
  To: 9fans

the url is wrong -- s/books/book/

also, you omitted the conclusion from the chapter, which is (imho) the best:

| In fifteen years, I expect somebody else to come along and say, hey, I can
| do everything that Linux can do but I can be lean and mean about it because
| my system won't have twenty years of baggage holding it back. They'll say
| Linux was designed for the 386 and the new CPUs are doing the really
| interesting things differently. Let's drop this old Linux stuff. This is
| essentially what I did when creating Linux. And in the future, they'll be
| able to look at our code, and use our interfaces, and provide binary
| compatibility, and if all that happens I'll be happy.

andrey "just fanning the flames" mirtchovski




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:06 ` andrey mirtchovski
  2004-02-27  5:05   ` dbailey27
@ 2004-02-27  5:06   ` dbailey27
  1 sibling, 0 replies; 45+ messages in thread
From: dbailey27 @ 2004-02-27  5:06 UTC (permalink / raw)
  To: 9fans


> also, you omitted the conclusion from the chapter, which is (imho) the best:

I didn't want to paste *too* much into the email ;-)



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  5:06 ` andrey mirtchovski
@ 2004-02-27  5:05   ` dbailey27
  2004-02-27  5:26     ` Rob Pike
  2004-02-27  5:06   ` dbailey27
  1 sibling, 1 reply; 45+ messages in thread
From: dbailey27 @ 2004-02-27  5:05 UTC (permalink / raw)
  To: 9fans; +Cc: torvalds, sionide, fa1th

> the url is wrong -- s/books/book/

Ah, yep. Can't paste over VNC. Thanks, Andrey

full URL is:
http://www.oreilly.com/catalog/opensources/book/linus.html

Don (north_)



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: [9fans] Threads: Sewing badges of honor onto a Kernel
  2004-02-27  4:45 dbailey27
@ 2004-02-27  5:05 ` Scott Schwartz
  2004-02-27  5:06 ` andrey mirtchovski
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 45+ messages in thread
From: Scott Schwartz @ 2004-02-27  5:05 UTC (permalink / raw)
  To: 9fans; +Cc: torvalds, sionide, fa1th

Beware that this mailing list doesn't permit postings
with more than a few cc-s.

  To: 9fans@cse.psu.edu
  cc: torvalds@osdl.org, sionide@beefed.org, fa1th@beefed.org



^ permalink raw reply	[flat|nested] 45+ messages in thread

* [9fans] Threads: Sewing badges of honor onto a Kernel
@ 2004-02-27  4:45 dbailey27
  2004-02-27  5:05 ` Scott Schwartz
                   ` (4 more replies)
  0 siblings, 5 replies; 45+ messages in thread
From: dbailey27 @ 2004-02-27  4:45 UTC (permalink / raw)
  To: 9fans; +Cc: torvalds, sionide, fa1th


A few of us had a discussion this evening on the state of Linux and
bloat in the Operating System development community. This isn't an
event isolated to this evening, however tonight had a bit of spice.

Andrey gleamed this bit of interesting text on the O'Reilly[1] website.
Let's have a look at a snippet, shall we?

Under the "Kernel Space and User Space" heading:

| ...  Another example of this happened in the Plan 9 operating system.
| They had this really cool system call to do a better process fork--a
| simple way for a program to split itself into two and continue processing
| along both forks. This new fork, which Plan 9 called R-Fork (and SGI later
| called S-Proc) essentially creates two separate process spaces that share
| an address space. This is helpful for threading especially.

| Linux does this too with its clone system call, but it was implemented
| properly. However, with the SGI and Plan9 routines they decided that
| programs with two branches can share the same address space but use
| separate stacks. Normally when you use the same address in both threads,
| you get the same memory location. But you have a stack segment that is
| specific, so if you use a stack-based memory address you actually get
| two different memory locations that can share a stack pointer without
| overriding the other stack.

| While this is a clever feat, the downside is that the overhead in maintaining
| the stacks makes this in practice really stupid to do. They found out too
| late that the performance went to hell. Since they had programs which used
| the interface they could not fix it. Instead they had to introduce an additional
| properly-written interface so that they could do what was wise with the stack
|  space. ...

This commentary from Linus Torvalds on rfork[2] proclaims that a single, unified
stack space for multiple threads is not only beneficial but imperative for proper
thread propagation. What we are wondering is ... why?

What scenario would make a unified stack segment beneficial in a multi-threaded
execution environment. Is this something that should be an optional parameter
on-the-fly in a call to rfork() ? Does clone() in Linux allow you to decide, or, does
it enforce the unified stack segment? Doesn't unification create collisions within
scopes of process namespaces through recursion and non-leaf code vectors?

Since we couldn't figure out the logic behind this Lunix tantra, we thought
trolling the public would be a slick idea. Who has an opinion on (or a defense
for ;-)) this statement?

Also, who is the "They" that "found out too late that the performance went to
hell".

Curious minds are interested.

Don (north_)

References:

[1] http://www.oreilly.com/catalog/opensources/books/linus.html
[2] fork(2)



^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2004-03-02 21:59 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-03-02 21:59 [9fans] Threads: Sewing badges of honor onto a Kernel Keith Nash
  -- strict thread matches above, loose matches on Subject: below --
2004-02-27  4:45 dbailey27
2004-02-27  5:05 ` Scott Schwartz
2004-02-27  5:06 ` andrey mirtchovski
2004-02-27  5:05   ` dbailey27
2004-02-27  5:26     ` Rob Pike
2004-02-27  5:37       ` dbailey27
2004-02-27  5:47         ` ron minnich
2004-02-27  7:43           ` boyd, rounin
2004-02-27  5:54         ` Rob Pike
2004-02-27  6:01           ` dbailey27
2004-02-29 21:14             ` boyd, rounin
2004-03-01  4:40               ` Kenji Okamoto
2004-02-27  5:06   ` dbailey27
2004-02-27  5:28 ` Rob Pike
2004-02-27  6:19   ` Scott Schwartz
2004-02-28  9:38   ` Bruce Ellis
2004-02-28 10:10     ` Charles Forsyth
2004-02-28 10:28       ` Bruce Ellis
2004-02-28 13:28     ` boyd, rounin
2004-02-29 20:59     ` boyd, rounin
2004-02-27  5:43 ` ron minnich
2004-02-27  5:50   ` George Michaelson
2004-02-27  5:59     ` ron minnich
2004-02-27  6:07       ` George Michaelson
2004-02-27  7:47       ` boyd, rounin
2004-02-27 10:11 ` Douglas A. Gwyn
2004-02-28  5:20   ` Martin C.Atkins
2004-02-28  9:44     ` Nigel Roles
2004-02-28 11:08       ` viro
2004-02-28 13:40         ` Nigel Roles
2004-02-28 13:36           ` boyd, rounin
2004-02-28 14:14           ` viro
2004-02-28 18:16             ` Nigel Roles
2004-02-28 18:53               ` viro
2004-02-28 19:44                 ` Charles Forsyth
2004-02-28 20:13                   ` Rob Pike
2004-03-01 11:50                   ` viro
2004-03-01 11:49                     ` dbailey27
2004-02-28 13:32       ` boyd, rounin
2004-03-01 10:35         ` Douglas A. Gwyn
2004-03-01 11:01           ` Geoff Collyer
2004-03-01 19:13           ` Joel Salomon
2004-03-01 10:35       ` Douglas A. Gwyn
2004-02-28 13:41     ` David Presotto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).