user warning: Duplicate entry '827686' for key 1
query: INSERT INTO dr_accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('Throughput vs. Latency', 'node/114', '', '38.107.191.85', 0, '6embtud40on8btpkpfo7jdofd4', 277, 1268788431) in /usr/local/apache/htdocs/includes/database.mysql.inc on line 172.
Pit crews are responsible for acting quickly to fix and maintain race cars as they pull into the pit lane. Efficiency is their top priority. This makes me think of Forsythe and Sun: utilizing Sun’s amazing Dtrace tool helps our clients reduce the time and money needed for finding and fixing problems.
I've written before about achieving a 300x performance improvement. While that sounds impressive, it was effectively in a lab situation, so it doesn't really count. But now I've done even better than that, and in this case, it was a real-world improvement.
As a longtime fan of the Indy Racing League (IRL), I know that pit crews have always been intrinsic to a team's success. It’s easy for me, then, to compare the pit crew/race team relationship to that of Forsythe and Sun and our clients. A successful pit crew has to be able to adapt quickly to the needs of the race car as it pulls into the pit lane.
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.
Modern CPUs provide performance counters that let you look at certain aspects of the performance of the system. For example, CPUs generally give you counters to track the number of instructions executed and the number of elapsed clock cycles. Given these two, you can calculate the CPI for an application – the number of cycles per instruction. Ideally, this ratio is very small, with one or even less than one being very good. This means that the application is being as efficient as possible, getting the most work done as quickly as possible.
I remember first running across SIGBUS in an introductory programming course some years ago. You'll get a SIGBUS when you have a misaligned memory access. For example, if you're on a 32-bit processor, an integer is going to be 4-byte aligned, i.e., the address to access that integer will be evenly divisible by 4.