Ruby & Scalable Architectures
Three companies recently collaborated to use DTrace, a powerful open source process introspection tool to find and fix a substantial Rails latency issue.
Teams from Joyent and Twitter and DTrace developer Bryan Cantrill from Sun joined forces to spend a day looking in detail at how Ruby processes behave within a Rails production environment. The purpose of the collaboration was to use the dynamic tracing framework to fix a latency issue observed in Twitter. DTrace is one of the components of the open source project OpenSolaris. It is designed for forensic investigation of processes, and as such is perfectly suited for the inspection and monitoring of Ruby processes running Rails applications.
During their analysis, the joint team discovered that the raising and catching of particular set of exceptions within Rails caused large amounts of CPU time to be consumed generating back-traces hundreds of frames long. Through the detection and removal of these exceptions, the latency of a particular class of Rails request-response cycles was substantially improved.
Joyent CTO and co-founder Jason Hoffman is vocal about the benefits of DTrace:
We use DTrace all the time in identifying performance issues in our customer's and in our own applications.
However, he believes that there is still room for improvement, and that the introspection into Ruby processes that DTrace offers is still not deep enough. Patches for versions 1.8.5 and 1.8.6 of Ruby are currently being worked on that will afford DTrace with an even greater ability to peer inside Ruby's internals. Jason also believes that DTrace will continue to generate a tremendous amount of insight into production Rails and Ruby processes. With ports in development for FreeBSD and planned for OS X Leopard, DTrace is no longer an exclusive tool for Solaris users.
Interestingly, not only is this a success story for open source tools being used to improve open source frameworks, it is also a success story for the process of open source software development. Within 11 hours of a ticket being filed, it had been accepted by Rails creator David Heinemeier Hansson himself, and incorporated into the latest version of Rails for immediate use.
Speaker: Jason Hoffman
Jason A. Hoffman is a founder and the CTO of Joyent, an on-demand infrastructure and cloud computing company that serves billions of page views and traffics hundreds of millions of emails per month.
Joyent is dedicated to the singular mission that developers should be able to start at a small scale and flex to a global scale with minimal friction. Joyent is among the world's largest OpenSolaris installations and while supporting all unix-based languages and data stores, Joyent's products have included the first production support of Ruby on Rails, inclusion of the ZFS file system, and Joyent's DTrace-enabled Ruby ships on MacOS X Leopard and soon on OpenSolaris.
Jason is a systems scientist with BS and MS degrees from UCLA, and a PhD from UCSD, and is an expert in scalable architectures. He has applied his knowledge and experience from the Web to Games to Computational Chemistry, Proteomics and Cancer biology.
Google Tech Talks
July, 17 2008