By Stefan Hinker-Oracle on Jun 07, 2010
You never stop learning. As a reply to my last blog entry, it was pointed out to me that with Solaris 10, microstate accounting is always enabled, and prstat supports this with the option "-m". This option removes the moving average lags from the values displayed, and is much more accurate. I wanted to know more about the background. Eric Schrock was kind enough to provide it on his blog. Here's a short summary.
The legacy output of prstat (and some of the other monitoring commands) represents moving averages based on regular samples. With higher CPU frequencies, it is more and more likely that some scheduling events will be missed completely by these samples. This makes the reports more and more unreliable. Microstate accounting collects event statistics for every event, when the event happens. Thanks to some implementation tricks introduced with Solaris 10, this is now efficient enough to be turned on all the time. If you use this more precise data with prstat, a CPU hog will show up immediately, showing 100% CPU on all threads involved. In this way, you're much more precise, and you need'nt convert from the number of CPUs in the system to the corresponding %-age as in the example in my blog entry. A singlethreaded process will be visible instantly. This is easier do to, easier to understand, less error prone and more exact.
I've also updated the presentation to represent this.
Thanks for the hint - you know who you are! It's from things like this that I notice that I've been using prstat and the likes (successfully) for too long . It's just like Eric mentioned in his blog: This great feature slipped past me, with all the more prominent stuff like containers, zfs, smf etc. Thanks again!