I have been meaning to document a couple key items to consider when looking at EBS volume performance. Here is a brief example from 4 volumes attached to an EC2 instance, in which the application in the OS was equally distributing the data across all four volumes.
Each volume is 40 GB. To determine the IOPs, you simply
multiply the volume size by 3, giving each volume 120 IOPs.
To calculate bandwidth, it is IOPs multiplied by I/O size. In the metrics you can see it’s averaging about 100 KB for each write to the volume. So 120 IOPs X 100KB = 12,000 KB = 1200 MB/s of bandwidth available for each volume. From the graph, we can see the average is 2500 KBs which equals 250 MBs.
Also to note, latency and queue are fine. Queue length is basically how much work is waiting to be done, which you actually don’t want it to be zero as that would mean the volumes stand around with nothing to do. Too much work though and the latency goes up.
So, the per volume bandwidth average of 250 MBs is not maxing out the 1200MBs. However, The IOPs are being maxed out as you can see from the graph, where it keeps bursting above 120 and dropping back down.
- Application data = amount of traffic leaving their house driveway
- Data block size = the width of each vehicle
- Compute speed = how fast traffic gets from driveway to on ramp
- Queue depth = how many vehicles are currently lined up waiting on the ramp to the freeway
- Volume IOPs = how many vehicles can be on the freeway at once / quantity of freeway lanes
- I/O size = the width of each lane
- Volume bandwidth in MiB/s = total width of freeway
- Latency = time for vehicles to reach destination after entering freeway (this would be a combincation of length of destination
No comments:
Post a Comment