Learn how to engage the MPSS feature of the Solaris 9 Operating System and how to analyze the performance effect. Elsewhere, this first of a two-part series about planning and implementing Sun Fire 15K/12K server Dynamic Reconfiguration provides an introduction to Sun Fire 15K/12K server DR and details the planning phase.
Supporting Multiple Page Sizes in the Solaris OE
2004-06-07 Solaris 3 Comments
This is one of the things that I really like about Solaris, compared to many other OSes – It’s very easy to obtain extremely accurate profiling information about an application, and to take steps to correct it. I know Linux got “HugeTLB” support in 2.6, but I don’t think you can adjust a process’s pagesizes at runtime; from reading vm/hugetlbfs.txt, it looks like the app has to be compiled Linux-specific flags to syscalls, and large TLB pages are limited to mmap() and shared memory function.
Way to go Sun! I wonder if this will be improved in Solaris 10 at all? Would DTrace let you get some of the information that trapstat provides?
Definitely worth reading and thnking about.
I am 100% with the above poster, plus I am very optimistic about DTrace. I just wonder how well it will be implemented in Solaris x86?
To answer the second question first: DTrace is completely implemented on Solaris x86. Indeed, most of our initial DTrace development is/was on Solaris x86. (And 99% of all public DTrace demos have been on Solaris x86 — the only exception was when I demo’d DTrace on our production 12-way/40 gig/1000+ user SPARC NFS/cal/mail server to an audience of skeptical customers to prove that we were confident that it could be used on production systems. The demo went off without a hitch, but I’ll confess to holding my breath a couple of times…)
And in terms of the first question: getting at the information that trapstat provides via DTrace is quite tricky. Although it may seem surprising, the mechanism behind trapstat is actually quite delicate. In particular, when interposing on the operating system’s TLB miss handler, one may not take TLB misses from the interposing TLB miss handler (of course). This is one context in which DTrace still can’t venture — it’s just too constrained. As a compromise, I have thought about providing this for user-level traps only, where we can obtain a slightly less constrained context for DTrace to play in. Unfortunately, this isn’t a small or straightforward body of work — and the ship date of Solaris 10 isn’t that far off. (And we still have lots of DTrace add-ons in the works — stuff that’s probably more exciting to more people.)
And for whatever it’s worth, I actually have an academic paper in the works on the dynamic trap table interposition mechanism that is the basis for trapstat. Unfortunately, it suffers from being a little more detail-oriented than academia is accustomed to; while I would like to publish it in a conference, it may just end up being published as a whitepaper. But if you’d like a copy, drop me an e-mail and I’ll send it your way…
Finally, as to your optimism about DTrace: you should download Solaris Express and give it a try yourself. It’s here:
We think you’ll find that your optimism is warranted…