Friday Sep 09, 2005

4 steps to NUMA heaven

It's been awhile since I last blogged....

To continue from where I left off, I'm going to explain a little more about the work that I have been doing for optimizing Solaris to perform well on NUMA machines....

First, how should we refer to all of our Solaris NUMA optimizations? I'd just call it our Solaris NUMA feature, but our marketing guys didn't want to use "NUMA" in the name. So, they came up with Memory Placement Optimization or MPO for short since we love acronyms here at Sun. (;-)

Second, I actually put together an overview of MPO and posted it on our OpenSolaris performance community web page awhile back, but didn't get around to blogging about it until now. The overview is a relatively short but sweet 33 slide presentation that explains the following:

  • Motivation for MPO
  • Goals
  • Abstraction introduced to help understand which CPUs and memory are near each other
  • Architecture of MPO framework
  • Optimizations done for NUMA
  • APIs
  • Tools
  • Performance results
  • Status (what is in which release)

I highly recommend looking through these slides if you're interested in what Solaris does to optimize for NUMA machines. You can get a pretty good introduction by looking at the first 15 slides. The rest the presentation is good too, especially if you want to understand MPO well enough to use it, analyze performance, or develop software for NUMA.

Third, Solaris is *open* for business now, so take a look at the OpenSolaris site. We have a great OpenSolaris performance community started there where we doing open development of Solaris CMT and NUMA optimizations. This is a good forum to ask questions, discuss issues, and participate in anything related to performance on OpenSolaris. You can look at our OpenSolaris performance community discussion archives and subscribe to the email alias at the OpenSolaris discussions web page.

Last but not least, I want to point at the OpenSolaris NUMA web page. It has the overview and more, including the MPO observability tools that we are currently working on. There are man pages, source, binaries, and a detailed example of how to use the tools to understand, observe, and control STREAM using the tools.

If you have any questions, please feel free to contact me or send email to perf-discuss@opensolaris.org.