*BSD News Article 78251


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!nntp.coast.net!news.sprintlink.net!news-peer.sprintlink.net!arclight.uoregon.edu!usenet.eel.ufl.edu!news.mathworks.com!newsfeed.internetmci.com!in1.uu.net!news.artisoft.com!usenet
From: Terry Lambert <terry@lambert.org>
Newsgroups: comp.unix.bsd.freebsd.misc,comp.unix.solaris,comp.os.linux.misc
Subject: Re: Benchmarking different Unix Operating Systems
Date: Fri, 13 Sep 1996 10:38:35 -0700
Organization: Me
Lines: 64
Distribution: inet
Message-ID: <32399C1B.7EC4FD4F@lambert.org>
References: <aak2.842008017@Isis.MsState.Edu> <50p41e$1ie@nnrp1.news.primenet.com> <5120jc$qh5@panix.com>
NNTP-Posting-Host: hecate.artisoft.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.01 (X11; I; Linux 1.1.76 i486)
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.freebsd.misc:27231 comp.unix.solaris:82470 comp.os.linux.misc:129017

Bryan Althaus wrote:
] Not once they tried Solaris in an Ultra-Sparc ;^)  Actually for
] me what seals the deal is SunSoft's Visual Worksop C++.  I'm
] moving to HP-UX (again!) and am not looking forward to HP's
] SoftBench development system.  I asked about it in comp.sys.hp.hpux
] and most repsonses were negative. Also from a programmers point
] of view, the lack of thread support is another minus.

From a systems engineering point of view, the SVR4/Solaris
threading model is broken.

The basic model is "bind N user space threads to M kernel space
threads".

If N > M, then (M - N) threads have CPU starvation, since any
blocking operation will block the kernel thread making it
unavailable to do real work.

Even if N == M, the CPU quantum is given away to another kernel
thread/process in the case of a blocking operation.  That is a
potential process context switch overhead, and is minimally kernel
thread context switch overhead.  Since you can't preferentially
give away the processor to kernel threads within your process
(since completion of blocking tasks by a thread before all other
threads in your process have run would starve other processes),
your own wins with kernel threading are:

1)	SMP scalability
2)	Competition for quantum of N threads a M processes with
	other processes/kernel threads on the system

The first is a real win; the second is a pseduo-win, since the
same effect can be achieved with priorities.

In my opinion, once the scheduler gives me a quantum, it is *MY*
quantum; I should not have to be penalized for making a system
call, when another process could use up its full quantum without
penalty by not calling the system.

Probably the correct way (as opposed to the Solaris/SVR4 suggested
method of implementing a new scheduling class) would be to have
a cooperative scheduler in user space an convert all blocking
kernel calls to non-blocking calls plus a user space thread
context switch.


The gist of this is that your comparison is invalid: the lack
of Solaris/SVR4 threading is no great loss in the non-SMP case.
Its sole value for non-SMP lies in enabling the use of a more
complex architectural model, at the expense of increased context
switch overhead -- a loss which would not be there with the
pthreads model.  Better to use a pthreads implementation and
consume your entire quantum, and achieve the same architectural
complexity in a POSIX-draft compliant way, without the overhead.

And pthreads runs on HP.


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