I was glad to see that Eric took the time to address my previous rebuttal to his previous comments. I welcome good technical discussions like this, in the open, without rude flames by anyone. It's fun, and lots of people get to understand things a bit better about the topic

That being said, I'd first like to address his closing comment, which was regarding my comment about Linux not going anywhere:
For some reason, all Linux advocates have an "us or them" philosophy. In the end, we have exactly what I said at the beginning of my first post. Solaris and Linux have different goals and different philosophies. Solaris is better at many things. Linux is better at many things.
I agree completely. I wasn't trying to put up any "us vs. them" type attitude, I was merely trying to explain in my message the reasons why the Linux kernel has or does not have those different features that Eric was discussing. My comment at the end was a bit glib, I agree, I was merely trying to state that Linux isn't going anywhere, and will welcome all Sun users and developers if they decide that Linux will work for them.

Ok, on to the technical stuff:

First off, thanks for giving specifics about your points of reliability, serviceability, observability, and resource management. Let's address these points.
  • Reliability - Of course reliability is more than "better than Windows." Geesh, what a low bar to shoot for these days. Linux had better be able to handle hardware failures where ever possible, when ever it can be detected. Ah, that last part is the biggest issue. Linux most often runs on hardware where such errors can not be detected, as we run on a zillion different platforms (although not as many as NetBSD). For systems that we can detect these kinds of errors, we do (like PCI error reporting on the PPC64 platforms for example.) The hardware that Solaris usually runs on also has that kind of error reporting capabilities, and so the OS takes advantage of it. So Linux and Solaris are pretty equal here. As for the claims that the ZFS people are stating, I think that Linux filesystems like Lustre and SSD do pretty much the same thing (automatic error correction for large collection of disks all without the application needing to fix it up.)
  • Serviceability - Sure, things go wrong all the time. That's why enterprise distros add the crash dump, kernel debuggers, and dprobes code to their kernels in order to be able to help service their customers. Nothing different from Solaris there (although you mentioning the ability to have a firmware dump of hardware errors is pretty cool, but again, that's a hardware feature, not an OS one.)
  • Observability - DTrace does sound like the all-singing, all-dancing solution to everything that a kernel could possibly report to a user. And if so, I commend you all for creating such a wonderful tool. As for Linux, if you want much the same functionality, use the LTT code, or the dprobes code. Again, many enterprise related Linux distros ship their kernels with these features added to them, as their customers ask for it.
  • Resource Management - That sounds pretty much exactly what the CKRM project does for the Linux kernel. Again, enterprise distros ship it, so their customers can have it. And this feature is getting fixed up to be acceptable for the mainline kernel, and will probably get merged into it within a year or so (but again, if you want that option, it's available to you.)
As for the comment about Solaris having these features "more polished" than Linux's, I will not disagree. But they are getting better over time, as companies realize they want these features in Linux, and address any shortcomings that these features may have.

Binary compatibility. You state:
We have customers paying tens of millions of dollars precisely because we claim backwards compatibility.
You have customers paying that much money for driver compatibility? Geesh, I didn't know drivers were that expensive... Seriously, for Linux, this argument doesn't even register. A customer does not have to worry about the huge investment they just made in hardware, and the fact that the driver they have for it better work for any future version, as they have the source to it (it's in the kernel tree.) They know that it will work with all future versions of Linux, and if something goes wrong, they can either fix it themselves, or hire someone else to fix it for them, for far less than "millions of dollars."

I really need to write a article/essay about why Linux does not have driver api stability. I touched on it in my previous post, but in reading your response, and the responses by others, you all seem to miss the main points. It's not that we don't know how to create a binary api with padding structures out, and offering up new functions, it's the fact that because we have the source to all of our drivers, we do not have to.

One minor comment though, the fact that we have the source to everything changes all of the old rules that operating systems had to live by. Backwards compatibility is no longer necessary, enabling us to move faster, and be more flexible than ever. As proof of that, look at the huge range of machines that Linux runs very well on. Everything from this tiny little gumstick, up to a 512 way ia64 box. And our drivers work on all of those platforms, with no changes needed.

So, let me bring up a few other points about where Linux is better than Solaris:
  • Device support - As I mentioned before, and as you mentioned, Linux's device support is unmatched anywhere else. We support, out-of-the-box, more devices than any other operating system. We also support them on every platform that Linux is supported on (somewhere over 21 unique architectures with lots of minor arches last I looked). That's power and flexibility that enables customers to start out with a small Linux box (running on a cheap i386 clone) and if needed, they can go out and buy a ia64, or amd64 box, and use the same investment in devices (disk controllers, etc.) and with no changes to their applications (other than a recompile) and "just work". This also enables customers to not have to rely on any one specific hardware vendor, preventing any "lock in". They can pit HP vs. IBM vs. Dell vs. the whitebox dealer down the street, or just build machines themselves (like a lot of places do, Google for example), in order to get the best service and price and support for their specific situation. That's incredibly powerful for the customer/user, and very scary for the big companies that previously had relied on the cost that a customer had spent already to tie them to that company for a long time.
  • Speed - Last I looked, Linux beat the pants off of any other operating system on the same exact hardware configuration. Both in microbenchmarks like lmbench, and in macrobenchmarks like specweb and TPC numbers. I've seen loads of unpublished results at a lot of different companies for these macrobenchmarks backing this up (unpublished usually due to the cost of publishing them, and for political reasons because the company also sold other operating systems on the same hardware, and didn't want to loose those customers in large numbers.) And, I'm sure the fact that we don't have to keep around old, broken apis, or have padded structures to keep binary compatibility might have a little to do with this speed advantage :)
  • Flexibility - I touched on this up above in the device support point, but Linux scales from very tiny to very huge systems, all based on the exact same kernel code base. We support mmuless embedded devices, and NUMA systems. No other operating system can claim that kind of flexibility that I know of (ok, maybe NetBSD, but it doesn't support the range of devices that we do...) But aside of the system flexibility, Linux's main flexibility is that if it doesn't do something you want it to do, then you can change it to do it yourself. If you are a customer, and really like Solaris, but happen to want to use it to put it into your barcode scanner, you can either try to convince Sun to do this for you, and pay them a whole lot of money, or you can find a os that can do this. Sure, I know you will say that Solaris isn't in that market, and that they are only going for the enterprise, which is a completely valid response. It's just that Linux meets the needs of everyone, not just a single market segment. It's this point that will ensure that any feature that is missing from Linux, will allow it to be easily added.
So, that's the three main points that I think Linux beats every other operating system out there on. Combine those points, and you have a very powerful system, for a huge range of people.

I welcome any responses to this post.

posted Sun, 26 Sep 2004 in [/diary]


My Linux Stuff