A couple of days ago, I blogged about CPU performance counters (aka CPC's) and the Solaris tools cpustat(1M) and cputrack(1M). That post was actually a prelude to this post. Jon Haslam has recently putback the code for the DTrace cpc provider.
Every now and then, I get in one of those moods where I vent against some abomination of programming that just kills performance. One of my more routine rants was against cond_broadcast()/pthread_cond_broadcast()/notifyAll() - depending on your language and platform of choice.
Maurice Wilkes, an early computer science pioneer that invented macros and libraries, stated in 1949: "As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered.
In the mid-80s after leaving a team at AT&T Bell Labs working on the design and implementation of a modern Mach like operating system, I made a minor career change from software engineer to trainer. I created Digital Equipment Corporation's first UNIX class and later taught many VMS folks UNIX/Shell scripting/C programming classes for about 8 years.
DTrace can be used to find the root cause of a BAD TRAP Solaris 10 system crash. Most BAD TRAP panics are caused by one kernel module clobbering kernel memory containing a pointer. When this now bad pointer gets used later, the result is a BAD TRAP kernel panic. One possible way to find the root cause of this type of system crash is to turn on kernel memory auditing through the kmem_flags kernel tunable. Common memory access bugs that can be detected with these flags are:
I do my best to go "Green", but seeing as how I tend to get on a plane more frequently than I would like; I probably have a much larger carbon footprint than most (especially since I get on MD-80’s frequently). That being said, it is not exactly what I meant by the term "Environmentalist".