Storage is typically sold, and you typically buy it, based on capacity and IOPS. But those two numbers don’t tell the whole story. Let’s take a look at these common storage specs and how they translate into usable metrics for your environment.
Usable capacity is a pretty common metric used when evaluating storage systems.
Say you buy a shelf of 24 300GB drives; you know you’re not getting 7.2TB of space. First there is some amount of space you don’t get to use because of RAID parity and hot spares. Then there is some space the storage system uses for its internal tables and configurations. You may choose snapshots or replication or some other high availability capability that uses space. There’s often a “loss” of space purely based on marketing numbers rounding to the nearest 0 while storage systems are based on 1024s.
So those 24 300GB drives end up providing closer to 5TB of usable space, and all but the most novice system administrator knows this when purchasing storage.
What we don’t talk about with respect to storage systems is the usable performance. When we look at performance numbers, it’s never quite as straightforward as capacity. Here are some of the things that typically comprise quoted storage performance:
- The theoretical total throughput the processors in the storage system can handle
- The generally acceptable IOPS numbers per drive (for example, a 150 IOPS/10K drive)
- The “write penalty” for RAID, used along with the read-write ratio of the data set
- The block size and random or sequential nature of the I/O
That aside, there is a major ingredient missing in our traditional discussions around performance: latency.
The analogy I like to use is that at my house, we almost never order dinner to be delivered because it takes too long. We live near several great restaurants and could get an excellent three-course gourmet meal delivered. The problem is that delivery is unpredictable, and it often takes over an hour, which is not very valuable to us.
IOPS and latency work the same way — consider a storage system that can provide 200,000 IOPS for a database application (a fine meal!), but those IOPS take 3 seconds to be delivered (way past dinner time!). That storage system is basically useless. Those are not “usable IOPS.” Or, what if the same storage system sometimes delivered the IOPS in 10ms and sometimes in 100ms? Those are also not “usable IOPS.”
Evaluating the performance of storage in an environment requires an understanding of not just the classic components that comprise the performance calculation (like RAID type and read/write ratio) but also of latency.
Good storage can deliver IOPS with a specific response time ceiling guaranteed. For example, “100,000 IOPS at or below 30ms.” Those are usable IOPS.
Great storage can deliver IOPS within a few standard deviations of a specific response time: “100,000 IOPS between 10ms and 20ms.” Those are very usable IOPS. That is a measurement of IOPS that can help you size your environment correctly, deliver to applications at a particular SLA, and plan for growth the most easily.
Providing more usable IOPS from your storage system is a big goal of ours here at Infinio. We may be known for offloading workload from backend storage, resulting in reduced response time. However, Infinio also provides more consistent response time — latency that is more stable and predictable. In short, we increase the usable performance for storage systems.
Sheryl is Director of Product Marketing at Infinio