In a recent guest post entitled “Performance at Scale: SSDs, Silver Bullets and Serialization” for High Scalability, Aaron Sullivan, a Principal Engineer at Rackspace, took a close look at the problem of trying to increase performance across software and hardware systems. Let’s say that you want to increase the performance of your application by 10X. That turns out to be monumentally difficult and requires a comprehensive fine-tuning of all the components that contribute to performance.
A common strategy to boost machine and application performance is to throw a bunch of SSDs into the equation to boost data throughput. Sometimes it works and sometimes it doesn’t. Rackspace frequently uses SSD drives across its infrastructure and sees great results, but as Aaron points out:
“If I were to split the outcomes that I see with Rackspace customers who start using SSDs, the majority of the outcomes fall under two scenarios. The first scenario is a silver bullet—adding SSDs creates near-miraculous performance improvements. The second scenario (the most common) is typically a case of the bullet being fired at the wrong target—the results fall well short of expectations. A common phenomena at the heart of the disappointing SSD outcomes is serialization.”
Serialization, even in a parallel processing world, turns out to be everywhere. A server may have processors, memory systems and storage systems that are parallel, it may be running multithreaded software, but transactions must still happen in a specific order. Step 1. Then step 2. Then step 3. That’s serialization.
Some systems may be capable of receiving and processing thousands of discrete requests simultaneously in one part, only to wait behind some other, serialized part.
Software developers and systems architects have dealt with this in a variety of ways. Multi-tier web architecture was conceived, in part, to deal with this problem. More recently, database sharding also helps to address this problem. But making some parts of a system parallel doesn’t mean all parts are parallel. And some things, even after being explicitly enhanced (and marketed) for parallelism, still contain some elements of serialization.
Check out Aaron’s full article, in which he provides:
- Data visualizations of serialized and parallelized components against response time
- Cumulative strategies to increase application and component performance
A comprehensive understanding of application and system performance is just one of the benefits of engaging with the Managed Cloud specialists. For a fresh look at the issue of scaling, see Rackspace Product Director Ev Kontsevoy’s recent post “OnMetal: The Right Way to Scale.”
Photo courtesy of Dan DeChiaro via Flickr.