A Comparison of Solaris, Linux, and FreeBSD Kernel
v1x writes "An article at OpenSolaris examines three of the basic subsystems of the kernel and compares implementation between Solaris 10, Linux 2.6, and FreeBSD 5.3.
From the article: 'Solaris, FreeBSD, and Linux are obviously benefiting from each other. With Solaris going open source, I expect this to continue at a faster rate. My impression is that change is most rapid in Linux. The benefits of this are that new technology has a quick incorporation into the system.'"
If only they could compare the NT kernel along with them
*sigh*
perpetually dwelling in the -1 pits
Solaris 10, Linux 2.6, and FreeBSD 5.3... all have strengths, weaknesses, features, and deficiencies... so why hasn't the OSI succeeded in the cross-pollination of these three great OS's? If they're really going to benefit from each other, why not get some linux kernels with SMF or better SMP out there? When will apt finally replace /usr/ports in FreeBSD? And when will Soalris' TCP stack not suck by implementing code from Linux or BSD? I hug all three of these OS's on a daily basis, but if open source is really working why can't we seem to make an OS out of these three that flat out rocks?
Does anybody know why ReiserFS 3 hasn't been ported to any of the BSDs yet? ReiserFS 4 looks as though it's pretty revolutionary, if distributions settle on that as a default, I can see that giving quite an advantage to Linux compared with the other kernels.
I noticed that the article didn't mention LUFS. This alone allows for tremenduous possibilities, not least of which is rapid development of filesystems. Do any other systems (besides GNU HURD) have userspace filesystems?
Bogtha Bogtha Bogtha
Interesting comparison between the Linux and Solaris kernels from someone who used to work SunSoft in the kernel group.
http://www.ultralinux.org/faq.html#q_1_15
For hyperthreaded CPUs, FreeBSD has a mechanism to help keep threads on the same CPU node (though possibly a different hyperthread). Solaris has a similar mechanism, but it is under control of the user and application, and is not restricted to hyperthreads (called "processor sets" in Solaris and "processor groups" in FreeBSD).
I am positive that the 2.6 kernel understands hyperthreading and does something similar to FreeBSD. Why wasn't that mentioned? Did the author not know that?
Overall through, it was interesting. I'd read it as a longer series, if they had one. This is an area that I'm interested in. I read kernel-traffic, and subscribe to LWN (you should to!) almost entirely to read the kernel page. I've learned so much about operating systems and computers from reading about the improvements in the Linux kernel, why the old version wasn't good enough, etc. While I no longer use Linux since I got my Mac (OS X fills all my needs), I continue to learn a large amount about computer architecture and operating system concepts from it.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
1. The SELinux kernel wasn't mentioned; it's security model is different, perhaps better in the final analysis than OpenSolaris.
2. The concept of Solaris containers is nearly science fiction. Building them and then watching them through dtrace is a work of art, as in the Sistine Chapel. LVM is a different school of thought that gets to a similar conclusion; this all skewed by the beauties of VMWare and multiple instance/clustering management possibilities.
3. The licenses-- very important differences in licenses-- are glossed==> ignored. There's all that messy intermingling of licensing trivia that's somehow an invisible characteristic of all of this. Fooey.
4. While Sun can speak anytime Sun wants, at least there were other citations mentioned early. This is Sun propaganda. Remember that. Well thought out propaganda, but propaganda, not a third party examination of the facts and implications.
5. There are other *nixes missing. Consider that real-time OS and embedded OS considerations are real, and while BSD and Linux has made progress there, Solaris is essentially missing, unless you consider weird programming profiles still based on non-Solaris OS.
These are just the extemporaneous thoughts. Take this article with a grain of salt, although it's not bad for a vendor-hosted view.
---- Teach Peace. It's Cheaper Than War.
You are. Solaris has a microkernel. Two peice static core and everything else is dynamically loaded. IMHO a far superior model to using modprobe.
Dynamically loaded kernel modules != microkernel, retard. Solaris is not a microkernel.
This is where you should take advantage of one of FreeBSD's greatest assets, it's documentation. The SMP Project has a lot of info...
http://www.freebsd.org/smp/
I find it quite interesting that (at least according to the article) Solaris (which supports a few x86, and mostly Sun's Sparc line) has a full abstraction, while Linux (which supports some large number processor architectures) goes with less abstraction; with FreeBSD somewhere in the middle. It certainly does yield higher performance for Linux, and makes sense in that respect...It's just interesting that the OS that seemingly runs on fewer processor architectures and has been controlled by an incorporated company would take the abstraction route, while the OS that runs on a far greater number of processor architectures and is not tied to corporate funding (directly, at least) is more focussed on less abstraction & fewer layers.
P.S. Sorry to repeat myself on that...just not sure how best to say it.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
For the typical user app, profiling is the answer. A program bottleneck, such as a file being read over and over, will be revealed in profiling. A bottleneck in the kernel needs to be resolved in the kernel, not in userspace.
This is not meant to disparage Solaris dev tools. This is merely to point out that Linux has its own, very powerful developer-oriented tools.
Well, it's good that you said "AFAIK", because what YK turns out to be out of date. Browse the Solaris source code right here.
OK, here's the directory with the dispatcher stuff and here's thread.c specifically.
Now this is where Ports and Portage, IMHO, really suck. When I uninstall a package from my system I want it gone. apt-get remove --purge and a properly packaged deb will do that for you. Ports and Portage will leave "package cruft" on your system.
I don't know about portage, but ports don't leave cruft behind. When you remove a port, you effectively remove a package. FreeBSD does not differentiate between ports and package deinstallation. Portinstall/upgrade tools, share the same command for package removal, whether it was built from ports or installed as a binary package. pkg_deinstall -rd fooo* will recursively deinstall every fooo* package and those packages that depend on it. Not only that, but it will remove the directory as well - unless you modified some files by hand, in which case if will tell you which files it couldn't remove (because they didn't match original checksum). Ports leaves "cruft behind" is a myth - or sounds to me like superstition or something. ALL installed files by a port or package are recorded in the plist, and all those files will be removed on deinstall - unless you changed them manually, in which case you will notice (and probably don't want to delete them anyway before making a backup).
Ports (and Portage) does Rock, but only if all you ever care about is package installation and not package management (package building, installation and uninstallation).
WTF? The reason I use ports is because I care about package management. I have to take care of a small lab with old computers. 3 of them run freebsd+blackbox+opera/gaim/irc combo (and a simplified menu so all can use it). What makes the whole setting really nice is that I can compile every installed package (there aren't that many - ~ 110) optimized for that hardware on my home puter. Than I can point portupgrade -PP to my ftp repo, and don't have to worry about dependencies and whatnot: everything will be upgraded/installed in the right order (and removed if I wish to). Yes, this is possible with deb and rpm as well, it is just not that easy. Forgot putting a required package in the repo? You can create binary packages with pkg_create -b pkgname from a package installed on your system. It doesn't matter if it was installed from source using ports or from a package. Package management knows of every file belonging to that package and the proper paths, and it will create a binary package for you, which will similar to any .deb: it will register all the required dependencies as well (unlike slack .tgz). Again, how could you do that if package management would not accurately keep track of everything? In other words - you pull this "cruft" stuff out of your ass (don't know about gentoo though) - ports doesn't leave any cruft behind (no more than apt does).
Ok, so as a USER, why would you care about MySQL? Because as a SYSTEM ADMINISTRATOR, what I really care about is stability and easy of administration. Once performance reaches "good enough", I could give a shit about improved performance. Hardware is cheap, a $5,000 1U MP system can blast down just about anything I'm going to care about.
It's fair to say then, you obviously have very modest requirements.
Unless your technology depends on Windows (I feel for you if it does) any of the *nixes out there are "good enough" to do just about anything up to the very high end. (Linux/BSD/Solaris/AIX/OSX/etc)
Wrong (sadly).
Even at the very high end, it's unlikely the choosing the "worst" OS will cost more than switching to the "best" OS!
Also wrong, there is a huge difference, though the gap varies depending on the role.
For example, Mac OS X - which I love dearly - is the slowest operating system this side of 'Slowaris' (which has that nickname for a reason), and is many times slower than Linux (on the same hardware). It's embarrassingly slow at some things. If it was a person, it would be part of a 'Care in the Community' program. It's as close to being 'autistic' as an operating system can be.
However, it has some really great features, including the quartz UI and really good multitasking for user software, which are what make the poor performance otherwise very bearable.
We have lots of FreeBSD systems here, while there are no issues with lower end systems (where there are multiple systems in a load balanced group not doing very much) they don't live up to our needs under stress, you start finding bugs with software under high load (often these are not always the fault of the OS - but exist none the less). You can also run up against kernel limitations (and find FreeBSD doesn't like really large file shares, or it buckles under certain types of load, or it behaves in a way that is not agreeable with some existing software you need to use).
This is especially with multiple CPU dual HT systems IME, even with just regular dual CPU HP DL360/DL380 systems. You can certainly coax better performance out of the FreeBSD systems but for a whole host of tasks (mail, web, dns, proxies, databases, etc) even after significant time doing manual optimisation of your software and multiple kernel recompiles (to determine optimum settings) Linux wins hands down every time IME, not least because more developer hours are spent optimising and testing those applications (and libraries) on Linux.
So [package uninstaller] on [OS] completely removes that package. Golf clap. A properly packaged (your words) application will work that way on any OS, not just Debian.
I love Debian, and have used it for years. It's great. However, the real admin nightmare comes when you decide you want some non-standard feature supported systemwide. On FreeBSD, for example, if I want LDAP support then I install the OpenLDAP client port (or let it get brought in as a dependency when I request LDAP support in some random program). Et voila, ports compiled from then on get LDAP support where appropriate. Gentoo fans: yeah, I know you have this too. Portage earns its name, I'll give you that.
Debian, on the other hand, requires you to hand-roll special locally-built versions of every application you want to have LDAP support - when a new version comes out, it's hand building time again. Yay! If LDAP is too common to be a good example, check out Kerberos. Debian/unstable has OpenSSH 4.2p1. Nice! If you want a version with Kerberos support, though, plan on rolling back to OpenSSH 3.8.1p1 and losing all of the other features you might have liked to use, or cranking up gcc and your beloved packaging tools.
As I said, I like Debian. Still, I can't pretend that it doesn't have several critical issues that make its administration a lot harder than need be. If the official packages cover all your needs, then it's a dream. If not, things get ugly quickly. You might not like the tradeoffs that FreeBSD and Gentoo have made, but they're there for a reason and are exactly what many of us want and need.
Dewey, what part of this looks like authorities should be involved?