Streams performance (was Re: real kernel bloat )

Tim Wright (timw@sequent.com)
Thu, 27 Jun 1996 09:35:19 PDT


In message <199606270853.JAA26530@snowcrash.cymru.net>,Alan Cox writes:
[...]
> > I read your answer to Alexey regarding STREAMS. I am sure, you
> > are right that it's slower than sockets, but it does not matter.
> > If someone recompiles or starts developing an application for
> > Linux because of this feature, it will benefit Linux much more
> > than a better benchmarks with no applications to use.
>
> Its important to implement stuff right. Like streams in a way that doesnt
> slow the socket performance down (and Linux has a lot of users purely for
> performance reasons on small hardware, as does FreeBSD). There is a
> difference between "not supporting" and "supporting the right way".
>
Just to back up, 100%, what Alan has to say about STREAMS. Sequent have
a parallel implementation of streams which is widely regarded as one of
the best. Our next generation TCP/IP & LAN software will use "Fastlan"
rather than STREAMS interfaces, precisely because System V STREAMS are
fundamentally far too inefficient for the high bandwidth cards coming out
(e.g. 100-baseT, FDDI, ATM etc.)

It matters not one iota how "nice" streams are to program, (and as one who
has done so I'd argue with you on this point as well :-), they are simply
too inefficient for general use.

As to the frequently trotted out line of "Oh, but you can reuse the modules
and push an e.g. encryption module anywhere" - Phooeey !
There are extraordinarily few real world examples to back this assertion up.
The *only* module that seems to have somewhat decent re-use is ld/ldterm (the
tty streams module). The modules have to be written by someone (not a
simple prospect), and built into the kernel. Given the general lack of
resilience of many streams modules to bad control/data messages, I, as
a system administrator, am unlikely to countenance adding such a module,
since it now means any user can push it onto any stream, and I have found
that I can crash most SysV type systems by simply by pushing the vendor
supplied streams modules in interesting places :-(

Again, as Alan pointed out, STREAMS in System V are not the same clean idea
that ~dmr added to 8th Edition UNIX. They are an extremely bloated mess.

Anybody thinking about adding STREAMS to Linux should think very long and
very hard about what this will achieve.

t

--
Tim Wright, Worldwide Technical Services,         |  Email: timw@sequent.com
Sequent Computer Systems Inc., 15450,             |
SW Koll Parkway, Beaverton, Oregon 97006          |  Phone: +1-503-578-3822
"Nobody ever said I was charming, they said "Rimmer, you're a git!"" RD VI