Re: A Layered Kernel: Proposal

From: jw schultz
Date: Thu Feb 26 2004 - 01:00:58 EST


On Wed, Feb 25, 2004 at 09:46:59PM +0200, Grigor Gatchev wrote:
>
>
> On 25 Feb 2004, Christer Weinigel wrote:
>
> > Just because there's an academic paper written about something doesn't
> > mean that its right. For once Richard is partially right, unneccesary
> > layering can really ruin a system. Grigor said that in 25 years he
> > has seen few cases of pretty code performing badly, but look at the
> > failure of SysV streams, it's a really pretty layering model, but in
> > practice it turns out to be too slow for most anything useful.
> >
> > It's not too uncommon with drivers that breaks just because the actual
> > hardware won't fit into the model that is exposed via a layer. For
> > example, look at the error recovery of the old Linux SCSI code: it's
> > hard to do proper error recovery, and it is much slower than it needs
> > to because first the low level driver tries to do error recovery and
> > later on the higher layers try to do error recovery too. Multiply a
> > couple of retries in the SCSI middle layer with another couple of
> > retries after a timeout a few seconds at the SCSI controller layer and
> > you have a model where it takes a minute to do figure out that
> > something is wrong, for something that ought to take just a few
> > seconds.
> >
> > Additionally, because of the strict layering it's not always possible
> > to hand up a meaningful error status from the lower layers to the
> > higher layers, it gets lost in the middle just because it didn't fit
> > into the layers model of the world. It can also mean that it's not
> > possible to use the intelligent features of a smart SCSI controller
> > that can do complex error recovery on its own since most layers end up
> > exposing only the "least common denominator".
>
> I may be wrong, but this description seems to me more like an example for
> bad design and implementation rather than for a bad general idea.

It may be both. I don't think the resistance is to layering
as a general idea. The resistance is to rigidly (read
explicitly) defined layers.

The 7 (if my memory serves) layer ISO networking definition is
perhaps a better example. I can't recall hearing of any
implementation with decent performance that conforms to the
ISO definition of the layer boundaries.

What seems a good boundary at one time will likely prove a
poor one later. Or what may be good in the general can slow
down the whole system because of one specific subsection
where it is suboptimal.

The best is to keep layering in mind (which is already the
case) but to remain flexible, functional specific and
mutable.


--
________________________________________________________________
J.W. Schultz Pegasystems Technologies
email address: jw@xxxxxxxxxx

Remember Cernan and Schmitt
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/