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.
Posted at 10:40AM Sep 09, 2005 by jjc in Solaris | Comments[12]
Who am I?
I want to start my blog by introducing myself, so everyone knows who I am, what I do, and my background.....
I am a kernel developer working in the Solaris kernel group and have worked at Sun in this group since 1995. My current group is mostly focused on Solaris kernel performance. Within our charter, my focus is improving Solaris performance on asymmetric processor and memory architectures such as Chip Multi-Threading (CMT) and Non Uniform Memory Access (NUMA). Consequently, most of my expertise is in scheduling and memory management. Maybe I'll get to play with I/O more eventually too.
Before I worked on NUMA and CMT, I helped develop the 64-bit version of the Solaris operating system (on SPARC) and spent some time working on our original two level thread library.
Prior to joining Sun, I worked at Stanford University on a couple of research projects (DASH and FLASH) to build NUMA machines, at Carnegie Mellon University on the Mach project, and at a small startup that built computer workstations in the late 70's and early 80's. For my education, I studied math and computer science at UC Berkeley until my head hurt. (;-)
When I'm not working, I enjoy sleeping, good food, travelling, the outdoors, exercise (running, working out, etc.), and spending time with my family and friends.
Posted at 03:08PM Jun 13, 2005 by jjc in General | Comments[1]