user warning: Duplicate entry '827686' for key 1
query: INSERT INTO dr_accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('latency', 'taxonomy/term/78', '', '38.107.191.88', 0, '6embtud40on8btpkpfo7jdofd4', 232, 1268788597) in /usr/local/apache/htdocs/includes/database.mysql.inc on line 172.
Thu, 03/06/2008 - 04:42 by Jarod Jenson
I am not just talking about MacOS X or FreeBSD here. DTrace works great for Solaris versions prior to Solaris 10 as well. In fact, it works great for Linux and Windows too.
Got your attention? I have to admit, I might be taking a little bit of a liberty by stating it the way I did, but I commonly get the same coment over and over when we talk about the glory that is DTrace - "Sounds wonderful, but I don't run my application on Solaris 10." First of all, I am very sorry. If there is any way I can get you to Solaris 10 - just let me know. Secondly, it doesn't really matter.
For many applications, there is a modest to significant portion of the application that will behave almost exactly the same regardless of the operating system on which it runs. This is the "userland" component of the application and the compiler (or JVM) is going to play a bigger role in determining the behaviour of the application than the OS. If you write the C code for traversing a linked list, the OS will make no difference (ignoring preemption of course) as to the performance of this on identical hardware.
What does this mean? If you have an application that is on a prior version of Solaris (or any OS for that matter), we can profile it under Solaris 10 to find potential performance inhibitors. You can then eliminate these inhibitors and have a better performing application on Solaris 10, or, if you so desire, run it on the original platform. Even if the application makes significant demands of the OS, we can better understand and quantify those demands to have a well rounded picture of the application runtime profile. This data can allow one to make platform specific optimizations based on act and not supposition.
How well does this work? Extremely well. Even before Solaris 10 shipped, we were oing this type of analysis. Since no one was running Solaris 10 in production yet, all of the applications made their way back to their original home with significant gains (well, a few brave folks stayed on pre-release Solaris).
I could list a few examples, but I think the most representative one is the JavaOne DTrace performance challange we did from 2005 until 2007. This challenge (referenced here for the 2005 debut) talks a bit about what we were doing. The interesting fact that isn't stated there is that of the applications we profiled that first year, only one - yes one - of those applications had ever run on Solaris prior to the challenge. This speaks both to the portability of Java and to the power of DTrace to act as a serious weapon in diagnosing performance problems regardless of an application's currently deployed OS. Over the three years, only a handful were actively deployed on Solaris (at that time - I heard from a few afterward that they intended on changing that).
If you are not fortunate enough to be running your application on Solaris 10, don't think that this negates your ability to run DTrace. I have VMWare Fusion on my Mac with a couple of Solaris 10 instances, and I have used it to profile a few applications when there was no other choice.
Just don't stay on the crutches too long. Solaris 10 in your production environment will allow you to use DTrace where it matters most - observing the running software that is paying the bills.