View project on GitHub

ec2-instances-list

This was a cool project until we found out about ec2instances.info : ) That’s one night of our lives we’ll never get back. Thanks @Savant : )


Trying to find the optimal EC2 instance types for workloads doesn’t automatically mean get the latest/biggest box. You might be able to squeeze more performance out of your dollar if you deploy a multitude of smaller boxes.

Machines that perform 20% slower are for instance priced 40% cheaper. Assuming your budget is finite and your platform scalable, you might be able to gain a higher total performance by using older machines.

At Transloadit we’re considering this life-hack, but with information about Amazon EC2 instances scattered across different pages and different tables within those pages, it’s not exactly easy to compare and discover what (for starters, on paper) offers the best bang for our buck.

So we decided to collect the metrics, add some of our own (like monthly costs or net ephemeral storage) and put them in a community maintained CSV file on GitHub.

With the CSV we can generate a Markdown table, and can then present this sortable HTML table for quick comparisions.

If you want to do deeper analysis, you can import the CSV into your database or favorite spreadsheet editor.

name ecu vcpu ram eph_devices eph_storage network generation family price spot price_mo spot_mo
c1.medium 5 2 1.7 1 x 350 350 100 1 Compute Optimized $0.130 $0.0160 $96.7200 $11.9040
c1.xlarge 20 8 7 4 x 420 1680 1000 1 Compute Optimized $0.520 $0.0600 $386.8800 $44.6400
c3.2xlarge 28 8 15 2 x 80 SSD 160 1000 3 Compute Optimized $0.420 $0.0600 $312.4800 $44.6400
c3.4xlarge 55 16 30 2 x 160 SSD 320 1000 3 Compute Optimized $0.840 $0.1300 $624.9600 $96.7200
c3.8xlarge 108 32 60 2 x 320 SSD 640 10000 3 Compute Optimized $1.680 $0.2600 $1249.9200 $193.4400
c3.large 7 2 3.75 2 x 16 SSD 32 100 3 Compute Optimized $0.105 $0.0160 $78.1200 $11.9040
c3.xlarge 14 4 7.5 2 x 40 SSD 80 100 3 Compute Optimized $0.210 $0.0300 $156.2400 $22.3200
cc2.8xlarge 88 32 60.5 4 x 840 3360 10000 2 Compute Optimized $2.000 $0.2000 $1488.0000 $148.8000
cg1.4xlarge 33.5 16 22.5 2 x 840 1680 10000 1 GPU Instances $2.100   $1562.4000  
cr1.8xlarge 88 32 244 2 x 120 SSD 240 10000 1 Memory Optimized $3.500   $2604.0000  
g2.2xlarge 26 8 15 1 x 60 SSD 60 1000 2 GPU Instances $0.650 $0.0600 $483.6000 $44.6400
hi1.4xlarge 35 16 60.5 2 x 1024 SSD 2048 10000 1 Storage Optimized $3.100   $2306.4000  
hs1.8xlarge 35 16 117 24 x 2048 49152 100 1 Storage Optimized $4.600 $0.1300 $3422.4000 $96.7200
i2.2xlarge 27 8 61 2 x 800 SSD 1600 1000 2 Storage Optimized $1.705   $1268.5200  
i2.4xlarge 53 16 122 4 x 800 SSD 3200 1000 2 Storage Optimized $3.410   $2537.0400  
i2.8xlarge 104 32 244 8 x 800 SSD 6400 100 2 Storage Optimized $6.820   $5074.0800  
i2.xlarge 14 4 30.5 1 x 800 SSD 800 100 2 Storage Optimized $0.853   $634.6320  
m1.large 4 2 7.5 2 x 420 420 100 1 General Purpose $0.175 $0.0161 $130.2000 $11.9784
m1.medium 2 1 3.75 1 x 410 410 100 1 General Purpose $0.087 $0.0081 $64.7280 $6.0264
m1.small 1 1 1.7 1 x 160 160 50 1 General Purpose $0.044 $0.0071 $32.7360 $5.2824
m1.xlarge 8 4 15 4 x 420 1680 1000 1 General Purpose $0.350 $0.0330 $260.4000 $24.5520
m2.2xlarge 13 4 34.2 1 x 850 850 100 2 Memory Optimized $0.490   $364.5600  
m2.4xlarge 26 8 68.4 2 x 840 1680 1000 2 Memory Optimized $0.980   $729.1200  
m2.xlarge 6.5 2 17.1 1 x 420 420 100 2 Memory Optimized $0.245   $182.2800  
m3.2xlarge 26 8 30 2 x 80 SSD 160 1000 3 General Purpose $0.560 $1.0000 $416.6400 $744.0000
m3.large 6.5 2 7.5 1 x 32 SSD 32 100 3 General Purpose $0.140 $0.2000 $104.1600 $148.8000
m3.medium 3 1 3.75 1 x 4 SSD 4 100 3 General Purpose $0.070 $0.1100 $52.0800 $81.8400
m3.xlarge 13 4 15 2 x 40 SSD 80 1000 3 General Purpose $0.280 $0.4500 $208.3200 $334.8000
r3.2xlarge 26 8 61 1 x 160 SSD 160 1000 3 Memory Optimized $0.700 $0.0600 $520.8000 $44.6400
r3.4xlarge 52 16 122 1 x 320 SSD 320 1000 3 Memory Optimized $1.400 $0.1300 $1041.6000 $96.7200
r3.8xlarge 104 32 244 2 x 320 SSD 640 10000 3 Memory Optimized $2.800 $0.2600 $2083.2000 $193.4400
r3.large 6.5 2 15 1 x 32 SSD 32 100 3 Memory Optimized $0.175 $0.0160 $130.2000 $11.9040
r3.xlarge 13 4 30.5 1 x 80 SSD 80 100 3 Memory Optimized $0.350 $0.0300 $260.4000 $22.3200
t1.micro 0.1 1 0.615 N/A 0 10 1 General Purpose $0.020 $0.0031 $14.8800 $2.3064
t2.medium 0.3 2 4 N/A 0 75 2 General Purpose $0.052   $38.6880  
t2.micro 0.1 1 1 N/A 0 75 2 General Purpose $0.013   $9.6720  
t2.small 0.2 1 2 N/A 0 75 2 General Purpose $0.026   $19.3440  

Notes

  • Pricing based on Hosting on Linux in North Virginia (eu-west-1)
  • Spot Pricing fluctuates heavily and so should be seen as an indication at most for now
  • Since used micro type ECUs are variable, we set 0.1, 0.2, 0.3, to still allow somewhat sensible sorting. Welcoming better ideas here.

Networking speed is a megabit estimation based on Amazon’s rather vague “low to moderate” properties. We will need to refine this later, but for now we’re settling for:

  • “very low”: 10
  • “low”: 50
  • “low to moderate”: 75
  • “moderate”: 100
  • “high”: 1000
  • “10 gigabit”: 10000

Todo

  • [ ] Get love by someone who knows how to front-end
  • [ ] List completeness
  • [ ] Automatically update pricing
  • [ ] More accurate network speed estimations
  • [ ] Use Travis to update the page automatically (as Github Pages won’t do the csv->md translation)
  • [ ] Add Reserved Instance prices
  • [ ] Add a separate list for EBS volumes?
  • [x] Investigate if we can automatically update this We can, partly

Contribute Data

If you have improvements you can directly hack on ./ec2-instances-list.csv

At the expense of some extra typing, we prefer a denormalized CSV so it’s easy to distribute and does not require additional dependencies or formulas.

If you prefer hacking locally in SublimeText, the Advanced CSV plugin can be used for sorting and tidying things up (disable Word Wrap).

Contribute to Webpage

Our repository’s README.md is turned into this webpage, sourcing ./ec2-instances-list.md for the table. Overriding CSS can be done in ./stylesheets/app.css and the layout is in ./_layouts/default.html.

If you have Jekyll installed, you can preview changes locally via make preview and navigating to http://127.0.0.1:4000.

Once changes are pushed to the repo, the site will update automatically thanks to GitHub pages. Data changes need a manual make deploy from anyone with push access, so that the csv->md conversion will be done first.

Thanks

A shoutout to tristen for an excellent tablesort, and also the contributors so far: