Sun + Intel + OpenSolaris + 2 Years = The Year of Core

Today is the second anniversary of the Sun and Intel joint agreement to optimize the Solaris operating system for Intel Xeon processors. Like last year, when I wrote this summary of our work, I decided to recap where we are to date.

Like last year’s edition, this is pretty much off the top of my head.

    • Solaris and OpenSolaris shipped commercial, supported OS’s with optimizations specifically for Intel’s new Core microarchitecture (formerly known as Nehalem). Our internal measurements show this to be roughly 3 – 15% performance boost on many of the workloads we run in the lab. (Your mileage of course may vary).

    • We added support in libc and the kernel to use new Intel instructions for some operations when they are available and when they give a benefit.

    • We consulted on changes to the kernel to use ACPI tables to determine the NUMA configuration of the running system.

    • We contributed PowerTOP, an application to monitor power use and diagnose watt waste. This is based on the kernel’s DTrace support to collect the data. PowerTOP is now at version 1.1

    • We contributed a new framework for deep C-state support, to be integrated into the new Power Aware Dispatcher.

    • We contributed support for the IOMMU, an application of our VT-D technology, to strengthen device driver reliability in the system.

    • We added support for the X2APIC, new in Core, which allows you to expand system addressability from 256 processors to 4 billion (minus 1)

    • We consulted on support for performance counters for the 4-processor Dunnington (Intel Xeon 7400 series processor) system and the new Core microarchitecture.

    • We contributed to support in the Fault Management Architecture for the location of failed memory components in our servers, we did fault injection to validate the software, and added support for Core’s new Corrected Machine Check Interrupt.

    • We consulted on support for the new SSE4.1 and 4.2 instructions for the tool chain

    • We contributed a driver for the Intel 5100 Series Wireless controller, formerly codenamed “Shirley Peak”, which is the foundation component of the new Intel Centrino2 processor-based laptops. We also did a major update to the Intel 4965 wireless driver.

    • We contributed graphics drivers for a whole host of controllers including the 845, 915, 965 etc. Pretty much all of the current generation of graphics chips, like on the Centrino2. This includes great 3D support.

    • Our friends in the LAN Access Division of Intel contributed drivers for the Zoar and Oplin NICs.

    • We consulted on work for I/O Acceleration Technology, and we’re contributing to updates to this.

    • We continue to regularly measure changes in performance and root cause issues and address them. We’re starting to up-level our performance work to more sophisticated workloads.

    • Our Xen team has contributed to the Sun xVM server project, to support VT-x and VT-x2 technologies. We’re contributing heavily to support device assignment with our VT-D technologies as well.

    • Our Threading Building Blocks team added a port of the TBB product to Solaris, bringing help to C++ programmers to add threading to their code.

And, as if all that were not enough, we have tried to promote the overall OpenSolaris open source project, through a series of 5-minute videos on various technology topics with OpenSolaris, done blogging, and participated in the OpenSolaris developers’ summits. We have also spoken at a number of the Sun Tech Days worldwide, to share the good news about our work.

Looking forward to 2009, the team is hard at work in a number of areas: preparing for the next generation of Intel servers, working ahead at enabling features in future roadmap processors, further developing in our key areas of power, virtualization, performance and reliability. And of course, a raft of new device drivers.

I still feel like this project has been some of the most fulfilling work I have done. I work with a great Intel team and great partners at Sun and in the OpenSolaris community. Thanks all to making this a really fun job!

For more complete information about compiler optimizations, see our Optimization Notice.


Raf Schietekat's picture

New attempt for the URL:

anonymous's picture

I've seen his contributions in the makefiles to allow compilation in Solaris for ia32 and Intel 64 architectures but not for SPARC processors.

Did Raf provide a patch for SPARC to Solaris or has he made it available online to all?

robert-reed's picture

Raf Shietekat, one of TBB's regular community contributors, has provided some makefile hooks to recognize several non-Intel architectures including Sparc and set appropriate compiler flags, but so far that's the extent of Sparc support that's been released. Some additional atomic and fencing support may be a part of Raf's atomic support contributions, which are under consideration for a future release, but the only TBB libraries Intel distributes for Solaris are for the Intel IA-32 and Intel® 64 architectures. Currently there are no plans to offer support for Sparc at the level provided for Solaris on Intel architecture.

anonymous's picture

Thanks David,

Much appreciated.


anonymous's picture

James - I will check around to see if there is an owner for the SPARC support.

It may be that Sun is owning this directly. Since TBB is open source, it might make more sense for them to own the SPARC support rather than us.

anonymous's picture


One question....
"Our Threading Building Blocks team added a port of the TBB product to Solaris, bringing help to C++ programmers to add threading to their code."

I know it's not an Intel priority but I do need to know for protability reasons if this also will be ported to Sparc.

The release notes for 20080709 open-source release state that it was ported to Sparc but I'm fairly sure they meant to write Solaris for ia32 and em64t.

"20080709 open-source release

Changes (w.r.t. previous open-source release):

- operator=() was added to the tbb_thread class according to the current
working draft for std::thread
- recognizing SPARC* based systems in makefiles for Linux* and Sun Solaris*

Bugs fixed:

- 127 - concurrent_hash_map::range fixed to split correctly.

Open-source contributions integrated:

- fix_set_midpoint.diff by jyasskin
- SPARC* support in makefiles by Raf Schietekat"

ps: I'm trying to post this on the forums but there are problems logging in at the moment. I've submitted a report to tech support.

anonymous's picture

I knew there something about the way Solaris 8, 9, 10 and all the derivatives performed in comparison to AMD based machines. I am thinking, Intel did work way before this so that Solaris performs almost as fast as does on SPARC. My next hardware upgrade, I am going to get an Intel since Solaris 5/08 runs extremely well on my Pentium 4 3.0G 32bit machine.

anonymous's picture

Great job ! Hope to see optimizations for Nehalem !

anonymous's picture

I just built a new system, and I chose Intel specifically because of their commitment to OpenSolaris and price/performance ratio. I have been very happy with my Intel-based systems every since I switched from AMD-based ones; you've certainly made a believer out of me.


Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.