Last year I did some research and wrote up a couple of posts on Cloud Compute performance. One feature that seems to get left out somewhat is storage I/O performance; the cloud offerings talk about capacity, but rarely reference performance.
Recently, I reviewed the options available from the major providers and found two new storage performance offerings.
- AWS (Amazon Web Services) – Amazon yet again appears to be ahead of the pack with their service offering. Persistent storage volumes (known as EBS or Elastic Block Storage) can be of type Standard or Provisioned IOPS. Standard volumes offer around 100 IOPS with burst capability to a few hundred IOPS. Provisioned IOPS volumes can be scaled up to 2000 IOPS but have a maximum capacity to performance ratio of 10:1, meaning a volume providing 2000 IOPS must be at least 200GB in size, a 1000 IOPS volume must be 100GB or more in size and so on. AWS also recommends combining disks to create an aggregate with more performance. So presumably ten 10GB drives could be combined to create a 100GB aggregate with 1000 IOPS, bursting to thousands of IOPS. I’m not sure what benefit that gives over a performance volume; Provisioned IOPS volumes are more expensive per GB and there’s an additional charge for the IOPS component. Having said that, I’m not a fan of combining volumes from unknown hardware platforms; if a RAID-0 aggregate is created and any underlying volume fails then all the data would be lost.
- Rackspace – Rackspace now provides two options for persistent storage as part of their Cloud Block Storage offering. Standard volumes are based on SATA drives; Performance volumes are based on solid state (SSD) drives. No guarantees or estimates of I/O performance are offered. In fact, Rackspace states in their FAQ: “Both types are priced per gigabyte (GB) of storage and not by input/output operations per second (IOPS), which can be difficult to predict or control.”. Performance volumes are quite expensive; $0.70/GB per month compared to $0.15/GB per month for standard volumes. At some stage I will run a test and see of the IOPS are 5x greater on the SSD devices compared to SATA.
I couldn’t locate any specific storage-performance related offerings from Microsoft/Azure, Terremark, SavvisDirect or HP Cloud, so it seems that QoS for storage within the cloud is still a rare thing (unless of course, you know different).
Why should I care whether my storage doesn’t provide granular IOPS support? Well there are a number of reasons;
- Cost – Rackspace’s SSD offering is 5x more expensive than standard disk – what happens if you only need 2x performance? I’d be looking at only paying 2x the price. At $0.70/GB/month, the costs soon mount up; a 50GB volume (not unreasonable for a single host) would work out at $35/month or $420, way over the cost of a single SSD.
- Differentiation – In some respects related to cost; service providers that can offer a more granular service stand more chance of getting business as the cloud computing landscape becomes more competitive.
- Service-based – lastly it’s not really a reason for caring, but where possible, services shouldn’t be tied to technology (something everyone implementing a storage catalog has been emphasising for years), as technology refreshes can mean retesting against new hardware; specifying against a service means hardware can be replaced/refreshed as long as it continues to deliver the same service level.
QoS on Storage
To my knowledge, today only SolidFire offers a storage array capable of delivering quality of service for I/O. All other devices aim to deliver IOPS as fast as possible, usually with little prioritisation to the results (other than first in, first out). Storage in the cloud needs to be more flexible and more intelligent, potentially using intelligent storage arrays as the underlying hardware platform. As usual, Amazon seem to be taking the lead (even if they are doing it with home-grown solutions), a one surely the others will simply follow, rather than innovate.