Amazon has introduced a couple of new I/O-related offerings in AWS, both aimed at addressing the notoriously poor I/O performance of EBS.

The first is the EC2 High I/O Quadruple Extra Large Instance. This is a standard Quad XL instance with two 1TB SSD-backed volumes directly attached to the instance. Although Amazon does not quote I/O performance on this configuration, it should be quite speedy… under good conditions.

Before you race to deploy your database on this configuration, howver, remember:

  • You are sharing the physical hardware with other users. You don’t get the SSDs all to yourself. How good your performance will be will depend heavily on the other tenants on the hardware.
  • This is ephemeral storage. It does not persist if the instance is shut down, and it can disappear if Amazon reprovisions the hardware. You must set this up with (monitored) streaming replication if you are running PostgreSQL, as you have no strong guarantee as to the integrity of the storage.
  • Of course, you pay for it. A High I/O instance is about 72% more than a standard Quad XL instance, based on on-demand pricing.

The next product offering is Provisioned IOPS on EBS. This allows you to guarantee a certain number of I/O operations per second, up to 1,000 IOP/s. This should go a long way towards reducing the uncertainty around EBS, but it also comes with some caveats:

  • 1,000 IOP/s is based on 16KB blocks, and decreases as that block size increases. This means that 1,000 IOP/s per second is about 16MB/s. That’s about 1/5th the speed of a 7200 RPM SATA drive. Ths is not, shall we say, super-impressive I/O performance. (You can increase this by striping the EBS volumes, at the cost of losing snapshotting.)
  • This costs more, of course. An “EBS-optimized” Quad XL instance is an extra $0.05 per hour. Of course, you pay for the I/O, too.
  • The storage is also 25% more than a standard EBS volume.
  • This offers no latency guarantees (for a 1,000 IOP/s provisioning, the IOP/s guarantee only applies if your I/O queue length is 5 requests or more, that is to say, saturated).

So, these products are far from useless, but they are incremental, not revolutionary.