RDS EBS Volume striping

0

Hi,

From the doc "Depending on the amount of storage requested, Amazon RDS automatically stripes across multiple Amazon EBS volumes to enhance performance.". This statement is not precise.

Related to very old thread in 2012: https://forums.aws.amazon.com/thread.jspa?messageID=315713

If I create an RDS r5.4xlarge with gp2 (5,334 x 2 GB) of storage, how will the EBS be striped?

Can I see the number of volumes and size RDS decides to provision with ?
What is the current algorithm on how RDS decides to stripe?

Thanks,
Rob

asked 4 years ago279 views
4 Answers
0

I don't know if AWS will respond with details, they haven't historically.

You have an RDS volume that has an expected number of IOPS associated with it. For io1 that is rather explicit. For gp2 it is implied by base + burst. If you have a >1TB gp2 volume it is a straight 3 IOPS per GB. The exact topology is irrelevant as long as it can deliver the expected IOPS.

While RDS had a size limit for gp2 that was less than the size limit for an EBS volume there would have been no obvious reason to stripe. With RDS now having a larger size limit (32TB vs EBS at 16TB) you would obviously have to stripe for volumes greater than 16TB. However, that introduces problems since you have to change the volume topology and rejiggering 16TB is very expensive. So at some pretty modest threshold RDS will either create a volume that is striped over multiple EBS volumes for new creates, or will do the rejiggering when you grow an existing volume that crosses the threshold. This gets you no additional performance, but does allow fast scale operations if you grow the volume beyond 16TB.

I'm not comfortable revealing further details without AWS having done so. Is there a reason that making those details public would be useful?

HalTemp
answered 4 years ago
0

The exact topology matters.

Per EBS page https://aws.amazon.com/ebs/features/, max IOPS for a gp2 volume is 16,000 (achieved at 5,334 GB).

Thus, if you want to provision 2 x 5,334 GB of space, the optimal to go about it is to create 2 EBS volumes and stripe it. This would net twice the IOPS of 32,000 IOPS while not striping it yields 16,000 IOPS.

If I were an AWS RDS team, I would stripe it.

AWS, can you respond? This is important because we want to know what we pay for.

Thanks,
Rob

Edited by: TravellingSalesPerson on Mar 25, 2019 7:24 AM

answered 4 years ago
0

Hi, you are correct volume geometry is an important detail in terms of both throughput and IOPS capacity.
RDS does not expose the volume geometry directly. However you can discover this detail through the Cloudwatch metrics. If you look in the enhanced monitoring metrics there is a "Physical Device I/O" category. From this you can select reads/s, writes/s. This will show per device metrics from which you can infer the number of volumes in your RAID0 stripe.

Understand that when you change the size of the RDS database volume, RDS might change the geometry.

thanks,
-Phil

philaws
answered 4 years ago
0

Thanks Phil@AWS I tried your suggestion out and indeed "Enhanced monitoring" allows us to know how many disks are used.

Rob

answered 4 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions