*BSD News Article 59779


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mel.connect.com.au!munnari.OZ.AU!news.ecn.uoknor.edu!paladin.american.edu!gatech!newsfeed.internetmci.com!vixen.cso.uiuc.edu!sdd.hp.com!hamblin.math.byu.edu!park.uvsc.edu!usenet
From: Terry Lambert <terry@lambert.org>
Newsgroups: comp.unix.bsd.netbsd.misc,comp.unix.bsd.bsdi.misc,comp.unix.solaris,comp.unix.aix
Subject: Re: ISP hardware/software choices (performance comparison)
Date: 16 Jan 1996 18:43:02 GMT
Organization: Utah Valley State College, Orem, Utah
Lines: 102
Distribution: inet
Message-ID: <4dgrjm$rnv@park.uvsc.edu>
References: <4cmopu$d35@vixen.cso.uiuc.edu> <4cu7t0$mg5@engnews2.Eng.Sun.COM> <4cv8j1$59k@park.uvsc.edu> <4d37d4$j0l@gremlin.backfire.mn.org> <DL29Az.Ax2@ftel.co.uk> <bryDL3r9p.2oq@netcom.com>
NNTP-Posting-Host: hecate.artisoft.com
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.netbsd.misc:1993 comp.unix.bsd.bsdi.misc:2143 comp.unix.solaris:57430 comp.unix.aix:68851

bry@netcom.com (Bryan Althaus) wrote:
] The day I hear from someone who uses SunOS 4.1.3 and Solaris 2.5 on
] a regular basis and knows both OS's well and concludes that SunOS
] is  better, is the day I give up UNIX and move to the NT camp. 

I guess you will have to wait for 2.5 to have been out for
some time before you will listen to any argument whatsoever.

Of course this is not a fair comparison, since we should compare
4.1.3 with 2.x, where x is the level of release at the time that
4.1.3 developement was halted.

I say this because the developement fast that point could have
easily bein on either code base, and you are comparing unfairly
otherwise.

] The arguement I loved was the comparison of SunOS 4.1.x threads to
] Solaris 2.x.  SunOS 4.1.x threads are a joke and Sun years ago told
] developers that they would no longer be supported and told our
] company not to use them.  A few programmers wanted to use them and
] you can guess when deadline time came where all the problems were.

I see you have implicitly backed off from claim that LWP and
pthreads are the same thing.

Yes, people who use a facility that will be unsupported soon
are fools.  Before you apply this to a 4.x to 5.x argument, let
me point out that buying fresh bread from a bad recipe will
result in your sandwich tasting worse than if you had used
day-old bread instead.


That you believe that LWP is a joke (it is no more so than the
idea that you can add more processors and multiply performance
on all problems regardless of their geometry) is irrelevant to
whether the 5.x/SVR4 threading mechanism is a joke.

Have you ever built and compared a threaded and non-threaded
version of an application?  For instance, have you ever used
"team" or "ddd" for I/O interleaving on a device?  (as an
aside, "team" fails on an MP Solaris box because of process
scheduling synchronization guarantees failing in the pipe
facility; "ddd", which uses shared memory, does not).

I have.  I worked on the process architecture for the 4.x
NWU (NetWare for UNIX) product.  It was *me* who implemented
interprocess decriptor table sharing system calls on AIX,
Solaris, SunOS, and UnixWare.  It was *me* who implemented
the NWFS attributed file system.  It was *me* who suggested
hot engine scheduling.

Because of the lack of process quantum guarantees and the
base code set being ill-adapted to a shared context model
because of a large amount of global data, sharing of context
on the work-to-do model via the SVR4 thread model was not an
option.

Nor was it a win over sharing global context in a shared memory
segment and sharing an open file table between the various
engines.

For one thing, if you use the idiotic SVR4 model, you must
preallocate the stack at thread creation time.

For another thing, using the SVR4 model precludes the ability
to attach a management utility to the context and manipulate
it.  If it's a shared memeory segment and descriptor table,
I can attach and detach the thing at will.

It's IOTTMCO that n:m mapping for n != m for kernel vs. user
space threads means that some work-to-do engines (such a
model operates on engine anonymity) will suffer starvation
for process quantum.

Obviously, this is only true if the engines perform blocking
operations.  Like I/O to talk to clients.  Or file system I/O.
Like NetWare, Oracle, Sybase, Informix, etc., etc..


] When we ported to Solaris 2.4 and rewrote using real threads,
] the problems all went away.  Wonder why?  


Second system effect?  Assumption that signals are events
instead of persistant conditions?

If you were truly clever, you would have implemented using
async I/O an completion routines.  The aioread, aiowrite,
aiowait, and aiocancel facilities exist on both 4.x and 5.x
and on most other UNIX platforms as well.  This would have
prevented you from orphaning a portion of your market.

You wouldn't get to claim "nifty threads in this product!",
but it is a very rare occurance where a problem can not be
solved as well (or better) using a different technique.


                                        Terry Lambert
                                        terry@cs.weber.edu
---
Any opinions in this posting are my own and not those of my present
or previous employers.