Historically, when a vendor delivers a new operating system version, it often means no performance gains from software functions or, worse, feature creep and function bloat, which actually requires customers to move to new iron or face performance penalties.

This isn’t always the case, particularly for mature platforms that do not change much from release to release and version to version. But it is very unusual for an operating system to see substantial performance increases on a variety of real-world workloads from software alone, and in this regard Solaris 10 is bucking the historical trend.

Solaris 10 is now the most advanced Unix operating system on the planet, and it is also the industry’s cheapest upgrade, says Tom Goguen, the new vice president of marketing for Solaris, who is back in that job after a stint at Apple. While Solaris 10 has some 600 new features (many of which we have detailed as part of the Software Express beta program for Solaris 10 over the past year), the performance benefits and the fact that is free will probably make Solaris 10 the most widely used Solaris release in short order.

We think Solaris 10 will have the fastest adoption of any release from Sun to date, mainly because people can save money today by moving, said Jonathan Schwartz, president and COO of Sun, at the Solaris 10 launch a few weeks ago.

John Loiacono, who recently took over Sun’s Software Group, says that customers used to complain about the performance of Solaris, giving it the pejorative term Slowlaris, and Sun took this to heart. So he set up performance teams as Solaris 10 was in development, and the software engineers looked at each facet of the Solaris stack and tried to push performance. Sun has written over 200 different benchmarks to tune Solaris features and test Solaris 10 performance against prior Solaris versions and releases – a practice it calls microbenchmarking.

The performance of the Solaris libraries, for instance, has been boosted by up to 400%, and some features have seen their performance increase by as much as a factor of 31. On average, the 200 features Sun has benchmarked see a performance improvement of 20% to 50%, and that’s driving the overall performance boosts that Solaris shops can expect to see if they just move to the new operating system on their existing Sparc or x86 iron.

The performance increases that Sun customers will see by moving to Solaris 10 will vary, depending on where they come from, mainly because Solaris 9 also had a bunch of performance tweaks. Most of the customers who move to Solaris 10 will be coming from Solaris 8, the version Sun was shipping during the dot-com boom, when it was selling servers like hotcakes. (It was not a coincidence that Sun’s popular 1U server was code-named Flapjack, after all.)

It is hard to say how many Solaris 8 licenses are out there, but it is probably definitely in the several millions. Schwartz claims that Sun has shipped about 6.5 million Solaris licenses, and Goguen says that Sun has shipped more than 4 million copies of Solaris 8, 9, and 10. Given those numbers and its financial situation, Sun must have been sorely tempted to charge for the Solaris 10 upgrade. But Sun would rather give Solaris 10 away and get a big portion of its base on the new version, and then make up the money in services. Given the cost of Solaris 9, which cost $249 for a two-way server and $400,000 for a 128-way box, this is probably a smart strategy – provided Sun can get a big number of customers to sign up for Sun Solaris or Sun Spectrum (hardware and software) support.

While the performance of individual Solaris features is interesting, what customers want to know is how their own workloads will benefit. According to Goguen, on Web services workloads, Solaris shops moving from Solaris 8 to Solaris 10 should see a 40% improvement, on average, for these applications, just from upgrading the operating system.

A big part of that performance boost can be attributed to the new Fire Engine TCP/IP stack, which, Sun says, is the fastest in the industry. For Java applications, customers in 32-bit environments on Solaris 8 should see a 90% improvement, while those in 64-bit environments will see 158% performance. For online transaction processing workloads, customers moving from Solaris 9 to Solaris 10 will see a 15% to 20% performance boost, while those moving from Solaris 8 will see a 40% to 50% bump.

None of these performance increases include the use of the new DTrace (which is short for dynamic tracing facility). With DTrace, system administrators and developers will be able to poke around the Solaris kernel as it is running and see what is going on inside the system through some 30,000 probes in the Solaris operating environment. These probes are software, not hardware, and the probes capture data that can be captured by simple C programs or system administration tools.

The data gathering of DTrace is non-invasive, says Sun, which means running traces on active machines cannot cause them to crash. Once this information is gathered, customers can identify pieces of their own application code that are eating a disproportionate amount of resources or causing bottlenecks, and then tweak their code so it stops doing that.

As an example of the kind of real-world performance Solaris shops are seeing, Goguen pointed to a stock exchange in the US (which he did not name) that has an application running on a Sun Fire 6800 with 12 processors and a Sun Fire 4800 with four processors. The exchange moved from Solaris 8 to Solaris 10 and saw performance boost by a factor of four, without changing any of its code or its underlying iron. After running DTrace and examining the bottlenecks in its application code, the exchange got another performance boost of 85%.

What will help Sun customers feel comfortable about jumping to Solaris 10 is the binary code compatibility guarantee that Sun is giving on Sparc iron. Sun says that any application written for Solaris 2.51 (launched eight years ago) through Solaris 9 will run, unmodified, on Solaris 10. In the jump from Sparc to x86 iron, Sun cannot give a binary compatibility guarantee (because Sparc and x86 architectures are, obviously, different), but the company is offering a guarantee of source code compatibility. As Sun often puts it, Solaris 10 is bug for bug compatible with prior versions of its Unix platform.

Incidentally, Sun is not guaranteeing compatibility of Solaris 2.5 or earlier because of undocumented APIs in Solaris 2.5 and earlier releases. With Solaris 2.6, Sun forced customers to stay away from those APIs and prop up their applications a little higher above the iron so Sun could ensure future compatibility. Sometimes, being too clever about tuning performance down near the iron is stupid in the long run.