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!spool.mu.edu!howland.reston.ans.net!newsfeed.internetmci.com!xmission!news.cc.utah.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: 15 Jan 1996 20:15:10 GMT Organization: Utah Valley State College, Orem, Utah Lines: 197 Distribution: inet Message-ID: <4decke$6nh@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> <4da5nl$8l5@news.voicenet.com> <bryDL5wtq.4Fo@netcom.com> <4dc00a$j2f@park.uvsc.edu> <bryDL7E84.LG3@netcom.com> NNTP-Posting-Host: hecate.artisoft.com Xref: euryale.cc.adfa.oz.au comp.unix.bsd.netbsd.misc:1839 comp.unix.bsd.bsdi.misc:1971 comp.unix.solaris:56608 comp.unix.aix:68179 bry@netcom.com (Bryan Althaus) wrote: ] True. What I really was trying to say is that SunOS 4.1.x had ] pthreads slapped into it where as Solaris (among other OS's) ] was designed from the start to support threads with support ] throughout the kernel. Standard pthreads (per Chris Provenzo's work and the CompuServe code for 386BSD) is a different animal than LWP. If you really meant pthreads and not LWP, then yes, it was a slap-in, mainly because it wasn't part of the OS at all. If you meant LWP, I think you are mistaken (though the University of Washington papers are the source of LWP, not Sun). ] Also designed in from the being with Solaris was support for ] SMP. SMP support is relative. For low grain support, a small scheduler hack and startup code are all that's needed -- that an a kernel entrancy mutex. For fine grain parallelism (where several processors are in the kernel at the same time), you need to be able to support kernel reentrancy. And yes, I realize that this is exactly analogous to the problem of kernel preemption, and it's a small step from there to kernel multithreading. ] I always here people say "Other than SMP .." as if it's trivial ] to have an OS support SMP. If it was so easy Linux and *BSD ] would have it. Linux has it. FreeBSD has had it since 28 Oct 1994. I have it on an ASUS dual P90 box not three feet away from me. Do you mean that it would be integrated into the source tree instead of available as patches? That's a different problem. I have a lot of FS work that you could make the same claims about. Including kernel patches for the first non-commercial NFS locking implementation. This is the problem with a public rather than a commercial project: people work with you (or don't) because the want to (or don't), not because they are paid to do so. ] Once you have SMP, all sorts of race conditions come into play ] and since your a kernel hacker (I'm not) you know this. Yeah. It's relatively trivial to use a variable granularity locking mechanism to "push down" the threading issues so that they can be dealt with on a per subsystem basis. The first step is pushing down the interrupt and trap code from a single reeentrancy lock, and then going from there. Yes, it's a problem. Problems can be solved. If you want to argue quality of implementation, I'll take the VFS vncalls layer implementation in Unisys's MP kernel over the per FS crap in the Solaris kernel any day for allowing third parties to actually write file system components. ] Add support for kernel threads as does Solaris and I'm ] surprised you don't have more respect for the job Sun has ] done with Solaris. This is trivial once you have kernel preemption; you just need to make a choice of which kernel thread read to run is allowed to run -- basically, you add preemption points. If you have ever done a streams implementation, choice of preemption points (generally derived from profiling information unavailable on a system without a high granularity clock or special hardware, like an ICE) is rather trivial. ] Oh, add support for soft real-time classes in if the task is ] too easy. I admit this is harder. On the other hand, the soft real-time support in Solaris is event rather than deadline based. I would be much more impressed with a deadlining mechanism. To support RT requires only the ability to kernel preempt, and either internal preemption points or a good timer mechanism (that SVR4 doesn't have, BTW) for reschedulable one-shots. Then you just need multiple run queues giving priority to the "RT" queue. You handle priority inversion the simplest way possible: extend the resource blocking mechanism and implement basic priority lending. Voila. ] Do you really think had Sun taken SunOS 4.1.x and band-aided ] SMP & kernel threads into the OS that the OS would be better ] than what they currently have with Solaris 2.5? No. But you are presupposing a "band-aid" approach to the task, so my answer can only *be* "no". Sequent didn't seem to have a problem with BSD, though they switched over to SVR4 (and lost FS multithreading at the same time) for the same government contract reasons predating the fall of the defense industry. I think if they did a reasoned implementation, your question would have a "yes" answer. ] I've heard/read that SunOS 4.1.x was starting to bust at the ] seems and was in need of a rewrite. Maybe, maybe not. SVR4's in the same boat, but no one is rewriting it, so it really soen't make sense to replace 4.x technology with 5.x if that's your main argument for doing so. ] Haven't you ever worked on application code that was written ] 10 years ago, by numerous people, most who are no longer around, ] that was designed to do a certain task but over the years has ] been added to until your at the point that a complete rewrite ] is needed. A well, thought out from the beginning, this is ] what the application now needs to do rewrite? Yeah. I worked on kernel code in SVR4 SMP at Novell USG. I'd say that describes the SVR4 SMP code pretty well. ] I just see Sun as coming to that conclusion when they came ] out with Solaris. Buying technology from a third party doesn't make it new. And much of the SVR4 technology came out of Sun/BSD anyway, not the other way around. ] The idea that Solaris was just a marketing attempt just ] doesn't hold water. SunOS already had alot of SYSV in it ] for the Wall St/Fortune 500 types. Wrong. SVID compliance was a prerequisite for bids on govenment contracts. DEC protested on the basis of VMS, but they lost. The origin of the SVR3 changeover at SCO was the SCO Federal Systems Group for the Desktop III and AFCAC-451 RFP's basic requirements documents. I have to assume that you weren't around in the industry in 1989 and 1990? I happen to know about the Desktop III and AFCAC 451 requirements because at the time I worked for a company that was one of the few who received "sole-source justification"... we were on the bids of every major player on those contracts. [ ... Solaris ... ] ] : It is *not* "state of the art"; even if you limit yourself to ] : discussing only commercially sold UNIX platforms, there's AIX, ] : which has a lot of features that Solaris doesn't (and is a good ] : example of "design up front"). ] ] Which version of AIX? Is AIX better than SunOS 4.1.x? FreeBSD? ] Just trying to get a handle since I know your a bright person but ] your bias for OS's is quite strong. SunOS & FreeBSD are you fav's ] and I know you were high on UnixWare for awhile, so just *exactly* ] what can Sun do to make Solaris better? Seriously. And name the ] features AIX has ( I've heard AIX is nice ) that Solaris lacks ] *maybe* they'll get in there. AIX features that are more modern than equivalents in Solaris: 1) Dynamically sized kernel structures. Solaris has made some headway in this direction, but AIX beats *everyone* else cold. 2) Motif environment shipped with system by default. 3) Clone devices for PTY's, not limited by range. 4) Full utilization of a device file system paradigm. 5) Sample FS source code available in supplementary documentation. 6) Sample device driver source code available in suplementary documentation. 7) Well documented kernel interface for kernel subsystems, including kernel level file I/O (no locking facilities, but that's easy to hack given the header file structures and knowledge of the gnode interface). 8) Thread stacks are not required to be preallocated at some limited size; they will be grown as needed, just like regular process stacks (UnixWare has support for this as well, but does not make use of the VM facility). 9) Unified system management interface, including API's for SNMP (IBM's code accompanied the SNMP II RFC). 10) A kernel that is *never* recompiled by the customer. A lot of people don't like AIX -- for amny, it's "too alien". But a good idea is a good idea, no matter where it comes from. Regards, Terry Lambert terry@cs.weber.edu --- Any opinions in this posting are my own and not those of my present or previous employers.