Christmas Come Early: An AWS EBS Performance Regression Update

3 min read

Two weeks ago we published A Spooky Performance Regression in AWS EBS Volumes that highlighted a performance regression in writes against AWS EBS volumes we saw while benchmarking Dolt and MySQL.

Initially we suspected that a recent self-imposed change to our benchmarking infrastructure resulted in the write performance slow-down, but after numerous tests and sanity checks, we concluded that something outside of our control had changed with the AWS EBS volumes we were using.

Well, today we have an update—a Christmas update! (Since Thanksgiving has come and gone).

Christmas Excitement 2

Soon after our previous blog went out, a user reached out on Discord with this comment:

User GP3

For benchmarking Dolt's performance, we've always used a 30GB gp2 volume. gp2 volumes are general purpose solid state drives (SSDs), which guarantee a minimum of 100 input/output operations per second (IOPS). For these volume types, the IOPS scales linearly with volume size, so if we increased the size of the volume, we'd also increase the provisioned IOPS.

In 2020, AWS released gp3 volumes, a new SSD type that decouples IOPS from volume size allowing users to provision the required performance without provisioning additional block storage capacity. Contrary to gp2 volumes, gp3 provisions a minimum of 3000 IOPS, regardless of volume size. More, of course, can be provisioned, but the volume size does not need to increase in tandem.

So, we went ahead and decided to give the gp3 volumes a shot. The result was the most wonderful, early Christmas gift us Dolt's could have asked for—our Sysbench write performance regression was gone!

Christmas Excitement 3

On the gp2 backed benchmarking hosts we saw MySQL perform worse than Dolt on multiple benchmarks (though both servers saw increased write latency, MySQL's write latency increased significantly more):

write_tests server_name server_version latency_median server_name server_version latency_median multiplier
oltp_delete_insert mysql 8.0.35 7.98 dolt c7b85e8c 6.79 0.9
oltp_insert mysql 8.0.35 3.75 dolt c7b85e8c 3.36 0.9
oltp_read_write mysql 8.0.35 8.43 dolt c7b85e8c 14.46 2.1
oltp_update_index mysql 8.0.35 3.82 dolt c7b85e8c 3.36 0.9
oltp_update_non_index mysql 8.0.35 3.82 dolt c7b85e8c 3.3 0.9
oltp_write_only mysql 8.0.35 5.37 dolt c7b85e8c 7.56 1.4
types_delete_insert mysql 8.0.35 7.7 dolt c7b85e8c 7.3 1.0

Each multiplier of 0.9 means that Dolt was faster on gp2 than MySQL was, but this didn't match our expectation. At best, we expect Dolt to be equally as fast as MySQL.

On gp3 backed hosts, though, we now see write latency down across both servers to pre-Halloween levels, which is what we expect to see from our benchmarking tests:

write_tests server_name server_version latency_median server_name server_version latency_median multiplier
oltp_delete_insert mysql 8.0.35 5.57 dolt 1.29.2 5.99 1.1
oltp_insert mysql 8.0.35 2.81 dolt 1.29.2 2.91 1.0
oltp_read_write mysql 8.0.35 7.3 dolt 1.29.2 14.73 2.0
oltp_update_index mysql 8.0.35 2.86 dolt 1.29.2 3.02 1.1
oltp_update_non_index mysql 8.0.35 2.97 dolt 1.29.2 3.02 1.1
oltp_write_only mysql 8.0.35 4.1 dolt 1.29.2 7.17 1.7
types_delete_insert mysql 8.0.35 5.47 dolt 1.29.2 6.55 1.2

As a result, we've updated our benchmarking infrastructure to now provision gp3 EBS volumes for benchmarking Dolt, and we'll keep an eye out for any other changes to Dolt's performance, especially if it's unexpected.

Conclusion

Big shout out to fernomac for the early gp3 Christmas gift.

Fixing our benchmarking infrastructure only required a one line change to our Terraform code, so that was nice too.

We love having users and blog readers reach out to us on Discord so come by and chat with us about how you're using Dolt.

We still aren't sure what happened with gp2 EBS volumes on Halloween, but if you're experiencing any slowness we'd highly recommend migrating to gp3 as well.

Christmas Excitement 4

Happy Holidays and don't forget to check out each of our different product offerings below, to find which ones are right for you:

SHARE

JOIN THE DATA EVOLUTION

Get started with Dolt

Or join our mailing list to get product updates.