Having spent sometime benching Linode and Digital Ocean, I wanted to see what one of the often talked about favourites was about. I’m not going to write a lot as I believe the results speak for themselves. I’ve added some more of the historic data I had from previous tests as I may use this spreadsheet if I review any other VPS solutions in future.
Ramnode is coming in at around $15 per month (with online voucher), gives Linode a run for its money whilst being slightly cheaper. You still can’t beat Digital Ocean for performance per pound/dollar though.
All the data below as usual.
Test | Digital Ocean 512 | Linode | DO 512 (3/1/14) | DO 2048 (3/1/14) | Ramnode 1024 |
---|---|---|---|---|---|
Sysbench CPU (1 thread) (s) | 52.82 | 30.31 | 25.67 | ||
Sysbench CPU (# threads) (s) | (8) 4.2 | (4) 6.91 | |||
Sysbench memory (1 thread (MB/s) | 1150.80 | 237.25 | 1696.54 | ||
Sysbench memory (threads = cores) | 3070.43 | ||||
Internet connectivity (mbps) | 410/107 | 609/231 | Dronten @ 811/241 | ||
Writing speed (MB/s) | 269 | 1200 | 426 | 291 | 1877.33 |
Unbuffered read (MB/s) | 335 | 533 | 874 | 650 | 825.66 |
Buffered read (MB/s) | 383 | 986 | 545 | 4983 | 813 |
Bonnie read (MB/s) | 328 | 670 | 622 | 692 | 761.51 |
Bonnie write (MB/s) | 154 @ 44% | 558 @ 99% | 371 @ 64% | 322 @ 76% | 1008.56 |
Bonnie Update (MB/s) | 155 @ 61% | 424 @ 61% | 335 @ 65% | 229 @ 52% | 322.70 |
Bonnie random seek | 5756 | +++++ | 13361 | 9613 | 13587 |
IO seek (no cache) | - | - | 8524 IOPS, 33.3 mb/s | 8718 IOPS, 34.1 mb/s | 13025 IOPS, 50.9 MB/s |
IO seek (cached) | - | - | 214825 IOPS, 839.2 mb/s | 221504 IOPS, 865.2 mb/s | 703909 IOPS, 2749.6 MB/s |
IO reads (sequential) | - | - | 2805 IOPS, 701.2 mb/s | 2691 IOPS, 672.7mb/s | 4024 IOPS, 1006.0 MB/s |
FIO / Queue Depth = 1 | |||||
Completion Latency (usec) | 233 | 114 | 115 | 106 | 79 |
Bandwidth (MB/s) | 16.2 | 31.57 | 32.01 | 35.71 | 48.11 |
IO request complete @250usec | 95.00% | 99.97% | 99.54% | 99.57% | 99.97 |
CPU Utilisation | 52% | 27% | 48.85% | 39.72% | 18.49% |
FIO / Queue Depth = 8 | |||||
Completion Latency (usec) | 476 | 162 | 324 | 235.69 | 117.47 |
Bandwidth (MB/s) | 61.0 | 173.40 | 103.89 | 124.26 | 238.06 |
IO request complete @250usec | 15.26% | 92.5% | 58.67% | 70.31% | 99.93% |
CPU Utilisation | 63% | 80% | 78.19% | 69.94% | 95.17% |
QEMU Virtual CPU version (cpu64-rhel6), 4 cores, 3300Mhz, 6600bogomips, 4096MB cache. 1024MB RAM.
# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.576174 s, 1.9 GB/s
# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.612257 s, 1.8 GB/s
# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.587962 s, 1.8 GB/s
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.23105 s, 872 MB/s
# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.27047 s, 845 MB/s
# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.41287 s, 760 MB/s
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.30829 s, 821 MB/s
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.32922 s, 808 MB/s
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.32633 s, 810 MB/s
# bonnie++ -d /tmp -r 4096 -u root
Using uid:0, gid:0.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
localhost 8G 1211 99 1032767 61 330451 26 +++++ +++ 779789 33 13587 170
Latency 14827us 68200us 62416us 9670us 12296us 65851us
Version 1.96 ------Sequential Create------ --------Random Create--------
localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 2904us 254us 3623us 2330us 14us 2975us
1.96,1.96,localhost,1,1391469941,8G,,1211,99,1032767,61,330451,26,+++++,+++,779789,33,13587,170,16,,,,,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,14827us,68200us,62416us,9670us,12296us,65851us,2904us,254us,3623us,2330us,14us,2975us
# ioping /tmp -c 10
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=1 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=2 time=0.3 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=3 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=4 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=5 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=6 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=7 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=8 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=9 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c): request=10 time=0.2 ms
--- /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c) ioping statistics ---
10 requests completed in 9003.4 ms, 4755 iops, 18.6 mb/s
min/avg/max/mdev = 0.2/0.2/0.3/0.0 ms
# ioping /tmp -RD
--- /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c) ioping statistics ---
20579 requests completed in 3000.1 ms, 13025 iops, 50.9 mb/s
min/avg/max/mdev = 0.1/0.1/7.7/0.1 ms
# ioping /tmp -RC
--- /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c) ioping statistics ---
43484 requests completed in 3000.1 ms, 703909 iops, 2749.6 mb/s
min/avg/max/mdev = 0.0/0.0/0.1/0.0 ms
# ioping /tmp -RL
--- /tmp (ext4 /dev/disk/by-uuid/6d32e65e-8f41-4885-9c3f-672081b4595c) ioping statistics ---
9003 requests completed in 3000.1 ms, 4024 iops, 1006.0 mb/s
min/avg/max/mdev = 0.2/0.2/16.4/0.2 ms
# fio rand-read-test
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 1.59
Starting 1 process
Jobs: 1 (f=1): [r] [-.-% done] [51699K/0K /s] [12.7K/0 iops] [eta 00m:00s]
random-read: (groupid=0, jobs=1): err= 0: pid=3840
read : io=131072KB, bw=49238KB/s, iops=12309 , runt= 2662msec
clat (usec): min=59 , max=2245 , avg=78.96, stdev=17.32
lat (usec): min=59 , max=2245 , avg=79.15, stdev=17.34
bw (KB/s) : min=48016, max=50840, per=100.07%, avg=49273.60, stdev=1128.73
cpu : usr=1.80%, sys=16.69%, ctx=32771, majf=0, minf=26
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued r/w/d: total=32768/0/0, short=0/0/0
lat (usec): 100=97.35%, 250=2.62%, 500=0.03%, 1000=0.01%
lat (msec): 4=0.01%
Run status group 0 (all jobs):
READ: io=131072KB, aggrb=49238KB/s, minb=50419KB/s, maxb=50419KB/s, mint=2662msec, maxt=2662msec
Disk stats (read/write):
vda: ios=32690/0, merge=0/0, ticks=1960/0, in_queue=1956, util=71.02%
# fio rand-read-test-aio
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio 1.59
Starting 1 process
random-read: (groupid=0, jobs=1): err= 0: pid=3853
read : io=131072KB, bw=243176KB/s, iops=60794 , runt= 539msec
slat (usec): min=2 , max=160 , avg=11.34, stdev= 6.57
clat (usec): min=47 , max=330 , avg=117.47, stdev=19.24
lat (usec): min=62 , max=335 , avg=129.32, stdev=18.97
bw (KB/s) : min=243776, max=243776, per=100.25%, avg=243776.00, stdev= 0.00
cpu : usr=21.56%, sys=73.61%, ctx=1491, majf=0, minf=29
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued r/w/d: total=32768/0/0, short=0/0/0
lat (usec): 50=0.01%, 100=16.41%, 250=83.51%, 500=0.07%
Run status group 0 (all jobs):
READ: io=131072KB, aggrb=243176KB/s, minb=249012KB/s, maxb=249012KB/s, mint=539msec, maxt=539msec
Disk stats (read/write):
vda: ios=24135/0, merge=0/0, ticks=1924/0, in_queue=1908, util=79.84%