Recently devops guy from our company told me that our local mysql stage environment are much faster than aws, because local disk has 10k iops, but our aws rds has only 500 iops.

As far as I understand aws iops states for throughout capacity, not the disk speed. And still ssd disk io same 10k iops or more? And considering that the load is less than 500 iops, rds might be much faster?

  • "DevOps guy told me [...]" - I'd suggest you add more concrete data about the issue to get more meaningful answers. What kind of IO operations? How many are you trying to send to storage? How big are they? How consistent is the workload? All this (and much more!) matter - optimizing storage performance is not a trivial task. – Bruno Reis May 30 at 16:17
  • It is mysql io operations. I can't tell you more details. At the stage environment there are no significant load. The thing is that I suspect that that devops guy told me bullshit, and I decided to ask to be sure that my assumptions are right. – ogbofjnr May 30 at 17:26
  • That could be the case, yeah. Usually, DevOps teams aren't expert in IO performance. Not that they can't be, it's just that it's a very different domain. – Bruno Reis May 30 at 17:28
  • MySQL does I/O in 16KB blocks for InnoDB tablespaces by default, up to 16KB for transaction log (see: innodb_write_ahead_size), and variable length blocks for replication and relay logs. You will have to actually measure how your workload meshes with the underlying storage stack and adjust your tuning and choice of file systems accordingly. – Gordan Bobic May 30 at 18:07
  • I think AWS also writes 6 copies of each block to 2 physical locations -- providing superior reliability. – Rick James Jun 3 at 4:25

AWS limits the IOP size to a maximum of 16KB, so whatever IOPS you buy, you will get throughput capped at 16KB times that number. So if you buy 1,000 IOPS on EBS, this will max out at 16MB/s.

If your application does random I/O using smaller blocks that aren't adjacent, e.g. 8KB, you will get maximum throughout of 8MB/s from the same EBS volume.

Historically, IOPS on spinning disks were limited by the rotational speed of the disk. In a 7200rpm disk, the correct sector comes around only 120 times per second.

A real NVMe SSD can handle much faster throughout at lower latencies than AWS EBS.

AWS is slow and expensive - learn to live with it. That is the price you pay for the convenience of not having to host and maintain your own hardware. How much slower cloud and VMs are than bare metal? This will depend to some extent on the nature of your workload, but in general, for equal spec, VMs are often much slower than bare metal.

| improve this answer | |
  • So does the performance of 500 iops and 10k iops instances will be different in terms of disk speed under the load of 100 iops? Or another way do I understand it correctly that aws iops stand only for the max limit of operations, but not the phisical disk speed that could be measured with fio. – ogbofjnr May 30 at 12:49
  • If you never do more than 100 IOPS, you won't be able to tell the difference between 500 IOPS and 10,000 IOPS, but if you have bursty workload, then those bursts will feel very slow on the 500 IOPS setup. The AWS IOPS cover both I/O operations and throughput because they are intrinsically linked. 500 of AWS IOPS will give you at most 8MB/s of throughput. You most definitely will be able to measure a difference between 10,000 IOPS and 500 IOPS using fio. – Gordan Bobic May 30 at 13:15
  • 1
    A warning: this answer is filled with inaccuracies and a general lack of understanding not only about the specifics of how EBS works, but also with general concepts of cloud computing. – Bruno Reis May 30 at 16:11

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.