First impression at face value may often result in a response being “yes, more is better.” However, say you are a car enthusiast looking to buy a new sports car to autocross on the track…is simply having more horsepower better?
Though you could also answer “yes” to the horsepower question, a more appropriate answer in both cases would be “it depends” or “not necessarily.” If your purpose for the car is for road racing you would also need to consider: At what RPM band does the car generate its peak HP? How well does the car handle or use fuel? What does the power-to-weight ratio, torque curve and lateral acceleration look like? Etc.
Likewise, if the reason you’re looking for more IOPS is because you need faster response times from your high transaction OLTP application for example, you may also need to look at the app’s I/O Signature. Are the transactions mostly random or sequential, synchronous or asynchronous? Or are they accessed in relatively small or large block sizes?
Answers to these questions will no doubt help characterize your application environment, but where are all these high IOPS specs coming from? We’re pelted daily with specs from storage vendors’ marketing teams claiming high IOPS numbers, some astronomical. Yet when you evaluate or deploy these solutions, they only perform at a fraction of what their datasheet claimed. Why? The Big “L” for Latency.
On reads, latency is the delay between when you asked for the data until it’s flowing out of the drive. As rotating drives are electromechanical there are two components of latency. The biggest component is the time it takes the read-write head to move across the drive to the proper track (seek latency); the other component is the delay waiting for the rotating platter to move under the head (rotational latency). Both these times are glacial when compared to everything else in the system. Even the fastest rotating drives take .004 seconds on average to deliver the first Byte of data on random accesses.
As we discussed in a previous entry, “Not All IOPS Are Created Equal“, there’s no doubt that if you configure enough disk spindles in an array, you can achieve a potentially high amount of IOPS. Typically, these high IOPS numbers for disk arrays can only be obtained with an I/O Signature that is very sequential in nature, never random. Sequential access is really what disks do best, but is not usually the exclusive component of an I/O Signature that most production systems have. As soon as you put a random “curve” into the mix, performance of these disks tend to fall far below their rated specs. Therefore, having a high amount of IOPS that can only be achieved under these circumstances will not be better for an application whose I/O Signature requires faster performance for more small random transactions.
DRAM SSDs have always provided the fastest performance of any open storage system technology. They are the quickest way to retrieve persistent, mission-critical data by providing the lowest access latency from any storage devices available. Performance is never limited by the access pattern and will perform nearly identically for both random and sequential read or write transactions. We say SSDs have the speed of memory with more reliability and persistence of disk. The issue becomes a bit convoluted as disk vendors and Flash SSD vendors try to market their solutions with performance numbers that try to rival DRAM SSDs. So on paper, they claim more and more IOPS performance to “appear” competitive to DRAM SSDs when in reality, they simply are not.
So if your storage subsystem still has the big “L” on its forehead, it may be time to take The Inside Line to DRAM SSDs…