This is a guest blog post by Alex Zhitnitsky. Alex works at Takipi - "God mode in production code, helping Java and Scala developers solve bugs in production."
When Takipi first began designing, they decided to test the upload/download speed between different AWS regions to get a feel for the differences in speed when transmitting data between EC2 and S3 buckets in different regions. They were particularly interested in the penalty physical distance has on performance. These are their findings.
How do different AWS regions compare to one another? A benchmark of transferring data from EC2 instances to S3 buckets
Many developers choose to host their data and code in the Amazon Web Services cloud, but when it comes to choosing a region it’s not that clear how to choose between the different options. To help shed some light on this, we’ve tested the upload/download speeds between the 8 available AWS regions – in the US, Asia, South America, Europe and Australia. We wanted to learn about the tradeoffs between regions and what kind of speeds to expect.
To add more insight, we then compared the results to a similar test we ran last year, which helped shed some light into the changes Amazon has made since. An interesting side effect of this was that we saw how physical infrastructure changes affect the results. For example, the deployment of an optical fiber from one point to another has improved the upload time by almost 3x.
2014
2013 [caption id="attachment_935" align="alignnone" width="885"]
Average upload time of 10MB in seconds from EC2 server locations to S3 locations.[/caption]
Combined upload times by EC2 regions
Australia is the slowest uploader to the rest of the world, or simply down and under. Unless your only focus is Australia, you wouldn’t want to place your first EC2 instance there. On the bright side, new infrastructure developments from Singapore to Australia had a dramatic impact compared to last year, a stunning 36x faster – from more than 3 minutes (!) to 5 seconds.
Sorry Australia, we’ll need to take a closer look without you:
California is the best place to upload from. Second year straight, the fastest average upload time was recorded in California. If you’re considering in which region to place your next EC2 instance, it’s the best bet even if you’re not necessarily uploading to US servers.
It’s still kind of tough to upload to Brazil’s S3. The fastest upload time to Brazil’s S3, excluding it’s own EC2, was over 5 seconds. An improvement from last year (8.83s) but still trailing behind. It’s also the weakest link for Singapore, Japan and Australia. A new fiber optic cable connecting Brazil directly with Europe is planned to arrive, so the future looks brighter.
If we’re excluding uploads to Brazil’s S3, Japan gets 2nd best upload times after California. Yes, even better than Oregon and Virginia. In fact, for a global reach, instances in Japan and Ireland provide a pretty good worldwide coverage, averaging a 2.77s upload time.
Australia beats any other option in same location uploads. Transferring data from EC2 to S3 in the same region is 1.3x to 8x faster than any other location. In this category, Australia takes the lead from Oregon, which was the fastest last year, and is now last (See the diagonal on the results table).
California’s S3 is also the best to upload to from other EC2 locations. The average upload time to California was 5.39s, with Singapore as the runner up with a 5.69s average. In addition, compared to last year’s results, uploading to California improved by a whopping 58.78%. Take uploads to Brazil for example, from 28sec in the 2013 benchmark to 6sec today.
Slowest upload speeds from EC2 to S3 in each region
It’s faster to upload from Virginia to Singapore than from Oregon to Virginia. In fact, if we’re looking only at the slowest upload times in each region, Virginia is the fastest among them and even outperforms California. Putting up 2 servers at these locations and expecting them to communicate fast is not such a good idea.
The direct upload path from one point to another might not be the fastest one. Uploads from Australia to Brazil takes 61.24s. However, if you take the same path through Singapore, it will take you 22.56s, almost 3x faster. I wonder what Dijkstra would say.
Average upload times from EC2 locations to S3 buckets in 2014 compared to 2013
Amazon Web Services are getting faster. Overall, we see an average 32% improvement in individual upload speeds compared to our results from last year. 54 of the 64 average upload times had become faster. So even if you’re using one of the slower regions, cheer up – it could have been worse.
The Groundwork
To run this test we’ve set up EC2 instances and S3 buckets in all Amazon AWS regions currently available and timed how long it would take to transfer 10MB in each direction. We went for a dozen rounds, removing best and worst scores before averaging. This left us with 10 valid scores to average, which seems to us like a fair number. There are currently 8 available AWS regions – three in the U.S (Oregon/California/Virginia), one in South America (Brazil), one in Europe (Ireland), two in Asia (Singapore/Japan) and one in Australia. The new region in China is not publicly available yet so it wasn’t included in the test (although there’s a limited preview you can access here).
The test was built using the AWS Java SDK and is available on GitHub. You’re welcome to fork, clone, review or run the experiment yourself to compare results.
Conclusion
We want to thank Alex for providing the results of Takipi's speed tests of transferring data from EC2 instances to S3 buckets. If you have any questions feel free to ask in our comments or get in touch with Alex on twitter. You can find the original article on the Takipi Blog.