*BSD News Article 59428


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!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!howland.reston.ans.net!usc!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: 11 Jan 1996 22:35:41 GMT
Organization: Utah Valley State College, Orem, Utah
Lines: 225
Distribution: inet
Message-ID: <4d43bt$es8@park.uvsc.edu>
References: <4cmopu$d35@vixen.cso.uiuc.edu> <4crnbe$8a@olympus.nwnet.net> <4cs2kn$kfg@cynic.portal.ca> <4cu7t0$mg5@engnews2.Eng.Sun.COM> <4cv8j1$59k@park.uvsc.edu> <4cvjpk$rpf@durban.vector.co.za>
NNTP-Posting-Host: hecate.artisoft.com
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.netbsd.misc:1912 comp.unix.bsd.bsdi.misc:2060 comp.unix.solaris:57041 comp.unix.aix:68558

gavin@durban.vector.co.za (Gavin Maltby) wrote:
]
] Terry Lambert (terry@lambert.org) wrote:
] 
] : Personally, I intentionally associate because I don't think
] : that SunOS 5.x is worthy of the name SunOS.
] 
] Nonsense!

No, it's true: that's what I think!  8-).


] : It is generally inferior in almost all respects (save MP).
] 
] Further crud.  I could fill a few pages of benefits over SunOS 4.

I could do the same going the other direction.  I might even be
able to drag certain former high level Sun employees screaming
into the debate.  8-).


] : I could argue thread scheduling, NFS, and VM with you until
] : I am blue in the face.  8-).
] 
] It is easily agreed that SunOS 5 is the hands-down winner over SunOS 4
] in the departments you mention.  Do you think otherwise?  SunOS 4 has
] no real multithreading to speak of,  it's NFS is a *lot* slower and
] is not multithreaded, and it's VM alogorithms are practically a subset
] of SunOS 5 (which just continues to refine those algorithms).

I think otherwise.

The SunOS 4.x LWP mechanism is better than the threading
mechanism in SunOS 5.x because it optimizes the benefits
threads are intended to have over processes: minimization
of overhead associated with IPC and context switching.

Specifically, the n:m mapping of user space to kernel threads
in SunOS 5.x means that you *must* have a kernel thread for
each potential blocking operation initiated by a user thread.

The result is that the threaded process is n threads mapped
onto m process quantums, and the process quanta are not fully
consumed.

The LWP scheduling mechanism (which I reimplemented in mid 1994
in FreeBSD using the University of Washington papers) was a
superior mechanism, since it translated blocking operations
into non-blocking operations plus a context switch.

The ideal threading mode would be a hybrid of the two, but given
only a choice between them, I choose LWP.  I can accomplish n:m
mapping context sharing for n == m (a requirement for work-to-do
model servers) *without* resorting to the complication of having
a stack that I can't automatically grow per thread.

You could argue that the non-LWP model is better scalable to MP,
but then I already ceded you MP.  8-).



The SunOS 4.x NFS is slower than the 5.x because the 4.x
implementation did not violate the reliability guarantees with
regard to not doing client or server caching without a commit
roll-forward facility (such as you get from PrestoServe or some
other NVRan facility, and such a facility would be equally
applicable to 4.x as well as 5.x).



I agree that kernel multithreading is a win, so that file system
multithreading can be used to overlap isosynchronous metadata
operations for multiple outstanding operations with non-overlapping
locality of reference.  In fact, in UnixWare, we measured the
UP performance increase at 160%, without additional changes.

It turns out that there is no topological distinction between
this type of mutlithreading and interleaved I/O as a result of
"Delayed Ordered Writes".  This is proven out by the similar
gains, *without* multithreading, of the VIVAFS (University of
Kentucky).


This leaves networking, which I think we can both agree is hurt
by the streams implementation replacing the monolithic TCP/IP
implementation of traditional BSD.  The 3Mbit/S limit on the
network performance under SunOS 4.x was a limitation imposed
by the driver's misuse of the AMD Lance chipset buffers, not
an inherent "SunOS 4.x problem".


As to the VM mechanism, the SLAB allocator has some significant
drawbacks with regard to MP.  As you point out, the implementation
is largely shared between 4.x and 5.x, so a claim of superiority
on that basis is broken.  Both would, in the MP case, be better
off with a per processor preallocation page pool (like Sequent
uses).  See:

	UNIX Internals: The New Frontiers
	Uresh Vahalia
	Prentice Hall/Simon & Schuster
	ISBN: 0-13-101908-2

There are also significant problems with traversal of mmap'ed
files thrashing the buffer cache (the infamous SVR4 "linker
cause X to go all funny" problem).

The correct fix to the problem isn't to use alternate scheduling
classes (cv: UnixWare).  It's to prevent the thrashing.  You
could do that rather trivially by implementing per vnode working
set quotas that could be overridden with an madvise() call, or
you could have a slightly better fix with a lot more work by
imposing per process working set restrictions.


] : Almost everyone (except SunSoft) pretty much feels the same way,
] : it seems.
] 
] Perhaps everyone *you* speak to, and that sounds like a decidely
] inexperienced and unknowledgable crowd.

Bzzt.  I "hang out" with kernel hackers who don't necessarily
modify their world views to conform to policy statements.  You
can pass as many laws as you want, but PI will never be 3.  8-).


] : Sun had to back-port 4.1.3 to the new hardware because some
] : of the Japanese OEM's (Hitachi, Tatung, from memory) threatened
] : to do their own BSD port because they hated Solaris so much.
] 
] Featurewise, Solaris has many times more to offer an application.

Yet you don't deny the back-port claim.  8-).

One of the "offerings" it has is SVID non-compliance with the
getitimer(RT)/setitimer(RT)/gettimeofday(RT)/select(RT), which
taken together imply that the timers must have a resoloution
of the system clock frequency, as seperate from the system
clock update frequency.  Don't worry, SVR4 has the same SVID
non-compliance.  It's why the validation suite doesn't check
for it.

In order to get a high resoloution select(), where the timer
resolution matches that implied by its parameters in the man
page, you have to go to a select(2) rather than a select(3)
implementation -- meaning you have to use the 4.x compatability
libraries, or suffer with a 10ms timeout resoloution (the same
as poll(2), which select(3) is implemented on.

Can we say "double click" and "mpeg_play"?  8-).

I'll give you credit, since the select(2) *was* added in Solaris
2.3 compatability aBI for 4.x to allow binary compatability
with statically linked 4.x applications (a feature missing before).


] No developer looks at Solaris 2 and say "I am glad none of those
] features are in SunOS 4".

Well, maybe they look at streams and the look at process group
signal notification that way; there are other more esoteric
"features" than these.

Most of the features (like loadable kernel modules) could be
shoe-horned in as loadable devices anyway, using the init/deinit
on a pseudo device to wedge in things not supported by the
loadable module interface in 4.x directly.

I don't see a single *big* feature, other than marketability on
government contracts because of the additional checkbox items
that don't affect real product functionality.  That makes it
change for change sake, in my book.


] OK so having to use the SVID etc in development might not
] be what everyone would love,  but I suspect that a lot of
] people like the BSD enviroment just because that is what
] they *know* and they refuse to adapt and learn the intracies
] of the new interface.

That may be true of some people.  On the other hand, there are
others (like me) who feel that the academic origin of the BSD
code as opposed to the SVR4 code means that it had a 2-4 year
develeopement horizon, whereas the SVR4 code was limited to 6
month to 1 year cycles because of commercial performance review
scheduling caused peoples intellectual integrity to be compromised
when it came to making a choice between money and doing the right
thing the right way.

The end result is that we think BSD "hangs together" better than
SVR4.  Some of us (me included) have tried to fix SVR4 at various
times in our careers.


] : Sun tries to hide the fact that there's a difference using
] : labelling, but we all know the difference between BSD and SVR4,
] : and we prefer BSD.
] 
] Solaris = SVR4 + a lot of features!  What you are really bitter
] about is that BSD style UNIX did not win out or reach critical
] mass over SVR4.

Do you really want to get into a comparative analysis of what
constitutes "critical mass"?

The end result of such a discussion is the question "why isn't NT
the default OS for Sun hardware?".


] That's something you just have to deal with---it happened and
] isn't about to unravel.  I am sure that there are those at
] SunSoft who preferred the BSD way, but there was just no way
] to stay with it.  Sun would be a small niche-market workstation
] player if they had not overhauled SunOS 4 to SunOS 5/Solaris 2.

What is Sun now?  The big fish in the shrinking proprietary
hardware pond.  A politically incorrect statement, I admit.


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