Unexpected Similarities in EC2 Spot Price History Between Regions
If you have been following my blog for a while, you may recall a post from earlier this year where I looked at some basic statistical properties of time series behind Amazon EC2 spot price history.
Because EC2 regions are completely separate and independent, you’d think spot price history for each region will have nothing in common. Surprise! Read on and you may change your mind.
Before I begin however, please note that prices throughout this post are once again provided in points ($1 per hour = 1,000 points).
Instead of focusing on time series aspect of spot price history, this time I decided to focus solely on prices as numbers. My hypothesis was that a set of spot prices for each product (represented by region/description/platform tuple) could be divided into 2 subsets: base subset and outlier subset. Base subset is where price would fluctuate most of the time, and outlier subset is where a price would jump in response to an extraordinary event (for example, a big user of AWS infrastructure suddenly needs a lot of capacity).
I obtained the data via API on November 29, 2010 at 4:26pm UTC
- you can download the resulting dataset as JSON from https://gist.github.com/724757. Arrays with 2 items ([x,y]) represent ranges, arrays with 1 item ([x]) represent a single price.
I started looking and noticed something out of ordinary in a place where I didn’t expect to see it (see the table below).
Turns out base subsets are identical or nearly identical for all instance_type/product_description pairs across all EC2 regions except us-east. Additionally, in these regions, pricing algorithm seems to be intentionally hitting as many prices within the base subset as possible (in many cases, base subset is contiguous, without any holes - thus covering every single possible price between min and max of the base subset).
Instance | Region | Base Subset | Outliers Subset |
---|---|---|---|
c1.medium Linux/UNIX | ap-southeast-1 | 76-84 | |
eu-west-1 | 76-84 | ||
us-west-1 | 76-84 | ||
c1.medium SUSE/Linux | ap-southeast-1 | 88-98 | |
eu-west-1 | 88-98 | ||
us-west-1 | 88-98 | ||
c1.medium Windows | ap-southeast-1 | 159-175 | |
eu-west-1 | 159-175 | ||
us-west-1 | 159-175 | ||
c1.xlarge Linux/UNIX | ap-southeast-1 | 304-336 | 1000 |
eu-west-1 | 304-336 | ||
us-west-1 | 304-336 | ||
c1.xlarge SUSE/Linux | ap-southeast-1 | 317-350 | |
eu-west-1 | 316-350 | ||
us-west-1 | 316-350 | ||
c1.xlarge Windows | ap-southeast-1 | 634-700 | 800 |
eu-west-1 | 634-700 | ||
us-west-1 | 634-700 | 750 800 | |
m1.large Linux/UNIX | ap-southeast-1 | 152-168 | |
eu-west-1 | 152-168 | ||
us-west-1 | 152-168 | ||
m1.large SUSE/Linux | ap-southeast-1 | 164-182 | |
eu-west-1 | 164-182 | ||
us-west-1 | 164-182 | ||
m1.large Windows | ap-southeast-1 | 254-280 | 480 |
eu-west-1 | 254-280 | ||
us-west-1 | 254-280 | ||
m1.small Linux/UNIX | ap-southeast-1 | 38-42 | 95 100 |
eu-west-1 | 38-42 | ||
us-west-1 | 38-42 | ||
m1.small SUSE/Linux | ap-southeast-1 | 50-56 | |
eu-west-1 | 50-56 | ||
us-west-1 | 50-56 | ||
m1.small Windows | ap-southeast-1 | 64-70 | |
eu-west-1 | 64-70 | ||
us-west-1 | 64-70 | ||
m1.xlarge Linux/UNIX | ap-southeast-1 | 304-336 | |
eu-west-1 | 304-336 | ||
us-west-1 | 304-336 | ||
m1.xlarge SUSE/Linux | ap-southeast-1 | 316-350 | |
eu-west-1 | 316-350 | ||
us-west-1 | 316-350 | ||
m1.xlarge Windows | ap-southeast-1 | 506-560 | |
eu-west-1 | 506-560 | ||
us-west-1 | 506-560 | ||
m2.2xlarge Linux/UNIX | ap-southeast-1 | 532-588 | |
eu-west-1 | 532-588 | ||
us-west-1 | 532-588 | ||
m2.2xlarge SUSE/Linux | ap-southeast-1 | 468-517 | |
eu-west-1 | 468-517 | ||
us-west-1 | 468-517 | ||
m2.2xlarge Windows | ap-southeast-1 | 696-770 | |
eu-west-1 | 696-770 | ||
us-west-1 | 697-769 | ||
m2.4xlarge Linux/UNIX | ap-southeast-1 | 1064-1112 1114 1116 1118-1176 | |
eu-west-1 | 1064-1176 | ||
us-west-1 | 1065-1102 1104-1127 1129-1153 1155-1176 | ||
m2.4xlarge SUSE/Linux | ap-southeast-1 | 924-946 948-965 967-977 980-987 989-1000 1002 1004 1006 1008 1010 1012 1014 1016 1018 1020 | |
eu-west-1 | 924-1000 1002 1004 1006 1008 1010 1012 1014 1016 1018 1020 1022 | ||
us-west-1 | 925-982 985-1000 1002 1004 1006 1008 1010 1012 1014 1016 1018 1020 | ||
m2.4xlarge Windows | ap-southeast-1 | 1394-1430 1432-1435 1437-1442 1444-1446 1449 1451 1456-1464 1466 1468-1471 1473-1487 1489-1496 1498-1540 | |
eu-west-1 | 1394-1540 | ||
us-west-1 | 1394-1444 1446-1447 1449-1491 1493-1495 1497-1535 1537-1540 | ||
m2.xlarge Linux/UNIX | ap-southeast-1 | 228-252 | |
eu-west-1 | 228-252 | ||
us-west-1 | 228-252 | ||
m2.xlarge SUSE/Linux | ap-southeast-1 | 240-266 | |
eu-west-1 | 240-266 | ||
us-west-1 | 240-266 | ||
m2.xlarge Windows | ap-southeast-1 | 304-336 | |
eu-west-1 | 304-336 | ||
us-west-1 | 304-336 | ||
t1.micro Linux/UNIX | ap-southeast-1 | 9-12 | 20 40 |
eu-west-1 | 9-11 | 15 40 | |
us-west-1 | 10 | 20-21 40 | |
t1.micro SUSE/Linux | ap-southeast-1 | 15-17 | |
eu-west-1 | 15-17 | ||
us-west-1 | 15-17 | 20 | |
t1.micro Windows | ap-southeast-1 | 15-18 | 21 25-26 35 |
eu-west-1 | 15-18 | 20-21 25 1000 | |
us-west-1 | 15-17 | 25 | |
Read other posts on my blog tagged amazon-ec2-spot.