7

We recently moved to Amazon Web Servers and are still learning our way around. Our EC2 Web instance and our RDS MySQL instance (right now we only have 1 of each) seem to be chugging along okay. But I was wondering if we could get even better performance out of them.

We do run a very small site, but certain pages still take awhile to load because of lots of aggregation on the MySQL side.

Here is what our current stats look like:

EC2 Webserver Usage (c3.large) UE2 Usage

RDS (MySQL) Usage (db.m1.large) RDS Usage

Of these, only the DB (db.m1.large) is "Provisioned IOPS Optimized".

  1. Do non-"PIOPS Optimized" instances still benefit from Provisioned IOPS? Or should we consider a different instance type for our EC2 Webserver?

  2. With these stats, do we even need Provisioned IOPS? Would we see any benefit?

  3. If Provisioned IOPS will help, how do I know how much I need? How could I test this?

4

Do non-"PIOPS Optimized" instances still benefit from Provisioned IOPS?

Yes. You benefit from the PIOPS volumes being SSDs under the hood. Optimized instances have dedicated network to the EBS servers, so they get consistent performance. Non-optimized instances interact with EBS along with the rest of their network traffic, so heavy bandwidth use on the physical host can slow you down.

http://aws.typepad.com/aws/2012/08/fast-forward-provisioned-iops-ebs.html

As a point of reference, a standard EBS volume will generally provide about 100 IOPS on average, with the ability to burst to hundreds of IOPS on a best-effort basis.

With this in mind, I suspect you'll see performance improvements from PIOPS on the RDS, as you're averaging 50-100 writes and 200-400 reads on the RDS volume - you're likely in that best-effort burst state most of the time.

Your web server is doing zero IOPS from the charts, so I'd guess everything's already living happily in RAM and not hitting the disk. Do check that it doesn't have a secondary volume you should be looking at instead, though.

  • EC2 doesn't have a secondary volume. So for RDS, about what amount of IOPS do I need? (And how do I arrive at that figure on my own for future reference?) Thanks. – DOOManiac Mar 7 '14 at 22:28
  • @DOOManiac That depends a bit on your setup. We see our DB servers sit at about 400 IOPS, so we provisioned 600 - lets us burst to 50% average usage without performance hits. If we had burstier traffic we might've gone higher. – ceejayoz Mar 7 '14 at 22:44
  • So from the above graph, I have about 125 peak Write IOPS and 500 peak Read IOPS. How do I calculate how much IOPS I need? – DOOManiac Mar 10 '14 at 21:58
  • For RDS, with PIOPS whatever you provision 50% goes to writes and 50% goes to read. Also PIOPS need to be provisioned in blocks of 1K PIOPS so the next level up would be 2K PIOPS. This will give you 1K IOPS for write and 1K for read. – Benson Wong Mar 23 '14 at 18:32
  • 2
    PIOPS is rarely going to be as cost effective as getting the same IOPS via a large SSD. That feature was not available at the time this answer was written. – Brian Mar 10 '17 at 19:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.