Linode VS Digital Ocean Performance Comparison

DigitalOceanVsLinode-460x300

 

With Linode just recently doubling down on ram I wanted to revisit the performance between these 2 VPS providers and see just how Linode doubling their ram on all VPS has affected performance. I have benchmarked these 2 in the past and it was always Digital Ocean that came out on top. Linode doubling it’s ram on all plans is going to force all of the major providers to rethink their offerings and come up with a counter offer, or they are going to lose a significant amount of their customers to Linode. I mean 2GB for $10 … really?! Considering Ram is probably the most limiting resource for most when it comes to a VPS this is huge.

I kept things simple and just used serverbear for the benchmarks as it’s assortment of tests give a pretty accurate review of the overall VPS performance. Both VPS are running Centos 7 x64.

 

Linode Benchmarks ($10/mo plan 2GB Ram, 1 CPU Core, SSD)

I have trimmed the data down to make it shorter, you can download the full text if you want at the bottom of this section.

VPS Resources

CPU Info
Processor 0
Vendor_id GenuineIntel
Cpu family 6
Model 63
Model name Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
Stepping 2
Microcode 0x1
Cpu MHz 2499.976
Cache size 30720 KB
Total used free shared buff/cache available
Mem 2.047.352 79.648 1.550.448 9.592 417.256 1.911.252
Swap 262.140 0 262.140
DD
dd 1Mx1k fdatasync 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied 1.91898 s 560 MB/s
dd 64kx16k fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied 1.16299 s 923 MB/s
dd 1Mx1k dsync 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied 2.23166 s 481 MB/s
dd 64kx16k dsync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied 10.1958 s 105 MB/s
IOPING
4096 bytes from . (ext4 /dev/root) request=2 time=0.4 ms
4096 bytes from . (ext4 /dev/root) request=3 time=0.3 ms
4096 bytes from . (ext4 /dev/root) request=4 time=0.3 ms
4096 bytes from . (ext4 /dev/root) request=5 time=0.4 ms
4096 bytes from . (ext4 /dev/root) request=6 time=0.3 ms
4096 bytes from . (ext4 /dev/root) request=7 time=0.3 ms
4096 bytes from . (ext4 /dev/root) request=8 time=0.3 ms
4096 bytes from . (ext4 /dev/root) request=9 time=0.4 ms
4096 bytes from . (ext4 /dev/root) request=10 time=0.3 ms
(ext4 /dev/root) ioping statistics
10 requests completed in 9004.8 ms 3213 iops 12.6 mb/s min/avg/max/mdev = 0.1/0.3/0.4/0.1 ms
IOPing seek rate 15898 requests completed in 3000.1 ms 8469 iops 33.1 mb/s min/avg/max/mdev = 0.1/0.1/6.9/0.1 ms
IOPing sequential 6073 requests completed in 3000.4 ms 2560 iops 639.9 mb/s min/avg/max/mdev = 0.2/0.4/5.0/0.1 ms
IOPing cached 44499 requests completed in 3000.0 ms 367293 iops 1434.7 mb/s min/avg/max/mdev = 0.0/0.0/0.0/0.0 ms

FIO


FIO random reads:
randomreads: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
randomreads: Laying out IO file(s) (1 file(s) / 1024MB)
randomreads groupid=0, jobs=1, err= 0, pid=14653, Fri Jun 24 13:30:42 2016

read io=1024.3MB bw=239623KB/s iops=59905 runt= 4377msec
cpu usr=6.24% sys=67.94% ctx=14993 majf=0 minf=69
IO depths 1=0.1% 2=0.1% 4=0.1% 8=0.1% 16=0.1% 32=0.1% >=64=100.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.1% >=64=0.0%
issued total=r=262207/w=0/d=0 short=r=0/w=0/d=0
Run status group 0 (all jobs)
READ io=1024.3MB aggrb=239622KB/s minb=239622KB/s maxb=239622KB/s mint=4377msec maxt=4377msec
Disk stats (read/write) ios=257045/0 merge=0/0 ticks=79166/0 in_queue=79046 util=83.87%
FIO random writes (g=0): rw=randwrite bs=4K-4K/4K-4K ioengine=libaio iodepth=64
Randomwrites (groupid=0 jobs=1) err= 0 pid=14657 Fri Jun 24 13:30:48 201


fio-2.0.9
Starting 1 process

Write io=1024.3MB bw=196926KB/s iops=49231 runt= 5326msec
Cpu usr=5.99% sys=80.47% ctx=22342 majf=0 minf=7
IO depths 1=0.1% 2=0.1% 4=0.1% 8=0.1% 16=0.1% 32=0.1% >=64=100.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.1% >=64=0.0%
Issued total=r=0/w=262207/d=0 short=r=0/w=0/d=0
Run status group 0 (all jobs)
WRITE io=1024.3MB aggrb=196926KB/s minb=196926KB/s maxb=196926KB/s mint=5326msec maxt=5326msec
Disk stats (read/write) ios=0/252537 merge=0/2 ticks=0/64924 in_queue=64790 util=90.74%

 

Unix Bench


BYTE UNIX Benchmarks (Version 5.1.3)
System: li238-8.members.linode.com: GNU/Linux
OS: GNU/Linux -- 4.5.5-x86_64-linode69 -- #3 SMP Fri May 20 15:25:13 EDT 2016
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz (5001.3 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
13:41:27 up 13 min, 1 user, load average: 0.11, 0.06, 0.05; runlevel 3
Benchmark Run: Fri Jun 24 2016 13:41:27 - 14:09:33
1 CPU in system; running 1 parallel copy of tests

Benchmark Result
Dhrystone 2 using register variables 28806333.1 lps (10.0 s – 7 samples)
Double-Precision Whetstone 3627.3 MWIPS (9.8 s – 7 samples)
Execl Throughput 3783.5 lps (29.6 s – 2 samples)
File Copy 1024 bufsize 2000 maxblocks 870853.9 KBps (30.0 s – 2 samples)
File Copy 256 bufsize 500 maxblocks 262760.9 KBps (30.0 s – 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1441438.5 KBps (30.0 s – 2 samples)
Pipe Throughput 1815725.5 lps (10.0 s – 7 samples)
Pipe-based Context Switching 347910.6 lps (10.0 s – 7 samples)
Process Creation 9944.0 lps (30.0 s – 2 samples)
Shell Scripts (1 concurrent) 4968.3 lpm (60.0 s – 2 samples)
Shell Scripts (8 concurrent) 687.0 lpm (60.0 s – 2 samples)
System Call Overhead 2020813.5 lps (10.0 s – 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 28806333.1 2468.4
Double-Precision Whetstone 55.0 3627.3 659.5
Execl Throughput 43.0 3783.5 879.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 870853.9 2199.1
File Copy 256 bufsize 500 maxblocks 1655.0 262760.9 1587.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 1441438.5 2485.2
Pipe Throughput 12440.0 1815725.5 1459.6
Pipe-based Context Switching 4000.0 347910.6 869.8
Process Creation 126.0 9944.0 789.2
Shell Scripts (1 concurrent) 42.4 4968.3 1171.8
Shell Scripts (8 concurrent) 6.0 687.0 1145.0
System Call Overhead 15000.0 2020813.5 1347.2

========
System Benchmarks Index Score 1296.3
========


Benchmark Run: Fri Jun 24 2016 14:09:33 - 14:37:40
1 CPU in system; running 1 parallel copy of tests

Benchmark Result
Dhrystone 2 using register variables 28957232.4 lps (10.0 s – 7 samples)
Double-Precision Whetstone 3651.5 MWIPS (9.8 s – 7 samples)
Execl Throughput 3931.1 lps (29.7 s – 2 samples)
File Copy 1024 bufsize 2000 maxblocks 917306.8 KBps (30.0 s – 2 samples)
File Copy 256 bufsize 500 maxblocks 271890.6 KBps (30.0 s – 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1506475.1 KBps (30.0 s – 2 samples)
Pipe Throughput 1763204.0 lps (10.0 s – 7 samples)
Pipe-based Context Switching 349750.7 lps (10.0 s – 7 samples)
Process Creation 10705.1 lps (30.0 s – 2 samples)
Shell Scripts (1 concurrent) 4800.3 lpm (60.0 s – 2 samples)
Shell Scripts (8 concurrent) 656.8 lpm (60.1 s – 2 samples)
System Call Overhead 2011102.5 lps (10.0 s – 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 28957232.4 2481.3
Double-Precision Whetstone 55.0 3651.5 663.9
Execl Throughput 43.0 3931.1 914.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 917306.8 2316.4
File Copy 256 bufsize 500 maxblocks 1655.0 271890.6 1642.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 1506475.1 2597.4
Pipe Throughput 12440.0 1763204.0 1417.4
Pipe-based Context Switching 4000.0 349750.7 874.4
Process Creation 126.0 10705.1 849.6
Shell Scripts (1 concurrent) 42.4 4800.3 1132.1
Shell Scripts (8 concurrent) 6.0 656.8 1094.7
System Call Overhead 15000.0 2011102.5 1340.7

========
System Benchmarks Index Score 1312.1
========

 

Digital Ocean Benchmarks ($10/mo plan 1GB Ram, 1 CPU Core, SSD)

 

VPS Resources

CPU Info:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz
stepping : 7
microcode : 0x1
cpu MHz : 1999.999
cache size : 15360 KB

 

Free:
total used free shared buff/cache available
Mem: 1016920 45620 519212 6596 452088 818308
Swap: 0 0 0

 

DD

dd 1Mx1k fdatasync: 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.63621 s, 407 MB/s
dd 64kx16k fdatasync: 16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 1.97848 s, 543 MB/s
dd 1Mx1k dsync: 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 6.13247 s, 175 MB/s
dd 64kx16k dsync: 16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB) copied, 25.9791 s, 41.3 MB/s

 

IOPING

IOPing I/O: 4096 bytes from . (ext4 /dev/vda1): request=1 time=0.2 ms
4096 bytes from . (ext4 /dev/vda1): request=2 time=0.4 ms
4096 bytes from . (ext4 /dev/vda1): request=3 time=0.3 ms
4096 bytes from . (ext4 /dev/vda1): request=4 time=0.4 ms
4096 bytes from . (ext4 /dev/vda1): request=5 time=0.4 ms
4096 bytes from . (ext4 /dev/vda1): request=6 time=0.4 ms
4096 bytes from . (ext4 /dev/vda1): request=7 time=0.4 ms
4096 bytes from . (ext4 /dev/vda1): request=8 time=0.3 ms
4096 bytes from . (ext4 /dev/vda1): request=9 time=0.6 ms
4096 bytes from . (ext4 /dev/vda1): request=10 time=0.3 ms

— . (ext4 /dev/vda1) ioping statistics —
10 requests completed in 9005.3 ms, 2772 iops, 10.8 mb/s
min/avg/max/mdev = 0.2/0.4/0.6/0.1 ms
IOPing seek rate:
— . (ext4 /dev/vda1) ioping statistics —
12619 requests completed in 3000.2 ms, 6737 iops, 26.3 mb/s
min/avg/max/mdev = 0.1/0.1/4.1/0.1 ms
IOPing sequential:
— . (ext4 /dev/vda1) ioping statistics —
5284 requests completed in 3000.1 ms, 2274 iops, 568.5 mb/s
min/avg/max/mdev = 0.2/0.4/5.4/0.2 ms
IOPing cached:
— . (ext4 /dev/vda1) ioping statistics —
43264 requests completed in 3000.0 ms, 443956 iops, 1734.2 mb/s
min/avg/max/mdev = 0.0/0.0/0.1/0.0 ms

 

FIO

FIO random reads:
randomreads: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process
randomreads: Laying out IO file(s) (1 file(s) / 1024MB)

randomreads: (groupid=0, jobs=1): err= 0: pid=13097: Fri Jun 24 11:02:17 2016
read : io=1024.3MB, bw=243800KB/s, iops=60950 , runt= 4302msec
cpu : usr=16.18%, sys=50.34%, ctx=3042, majf=0, minf=83
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.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.1%, >=64=0.0%
issued : total=r=262207/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=1024.3MB, aggrb=243800KB/s, minb=243800KB/s, maxb=243800KB/s, mint=4302msec, maxt=4302msec

Disk stats (read/write):
vda: ios=253275/0, merge=0/0, ticks=175099/0, in_queue=175003, util=97.50%
Done
FIO random writes:
randomwrites: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.0.9
Starting 1 process

randomwrites: (groupid=0, jobs=1): err= 0: pid=13101: Fri Jun 24 11:02:38 2016
write: io=1024.3MB, bw=50040KB/s, iops=12509 , runt= 20960msec
cpu : usr=5.01%, sys=15.91%, ctx=10129, majf=0, minf=18
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.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.1%, >=64=0.0%
issued : total=r=0/w=262207/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
WRITE: io=1024.3MB, aggrb=50039KB/s, minb=50039KB/s, maxb=50039KB/s, mint=20960msec, maxt=20960msec

Disk stats (read/write):
vda: ios=0/262095, merge=0/6, ticks=0/1233461, in_queue=1233538, util=99.59%

 

Unix Bench

System: benchy: GNU/Linux
OS: GNU/Linux — 3.10.0-327.18.2.el7.x86_64 — #1 SMP Thu May 12 11:03:55 UTC 2016
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPU 0: Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz (4000.0 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
11:05:26 up 6 min, 1 user, load average: 0.04, 0.23, 0.13; runlevel 3

————————————————————————
Benchmark Run: Fri Jun 24 2016 11:05:26 – 11:33:16
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 25636009.7 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3017.9 MWIPS (8.5 s, 7 samples)
Execl Throughput 3347.5 lps (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 703775.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 190036.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1520498.9 KBps (30.0 s, 2 samples)
Pipe Throughput 1260489.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 278497.7 lps (10.0 s, 7 samples)
Process Creation 11590.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4746.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 634.8 lpm (60.1 s, 2 samples)
System Call Overhead 1842772.1 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 25636009.7 2196.7
Double-Precision Whetstone 55.0 3017.9 548.7
Execl Throughput 43.0 3347.5 778.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 703775.4 1777.2
File Copy 256 bufsize 500 maxblocks 1655.0 190036.8 1148.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 1520498.9 2621.5
Pipe Throughput 12440.0 1260489.0 1013.3
Pipe-based Context Switching 4000.0 278497.7 696.2
Process Creation 126.0 11590.2 919.9
Shell Scripts (1 concurrent) 42.4 4746.0 1119.3
Shell Scripts (8 concurrent) 6.0 634.8 1057.9
System Call Overhead 15000.0 1842772.1 1228.5
========
System Benchmarks Index Score 1138.4

————————————————————————
Benchmark Run: Fri Jun 24 2016 11:33:16 – 12:01:20
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 26285753.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3088.9 MWIPS (10.0 s, 7 samples)
Execl Throughput 3433.5 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 718196.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 186783.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1594826.3 KBps (30.0 s, 2 samples)
Pipe Throughput 1199311.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 269572.7 lps (10.0 s, 7 samples)
Process Creation 11970.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4396.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 624.3 lpm (60.1 s, 2 samples)
System Call Overhead 1892630.2 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 26285753.3 2252.4
Double-Precision Whetstone 55.0 3088.9 561.6
Execl Throughput 43.0 3433.5 798.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 718196.1 1813.6
File Copy 256 bufsize 500 maxblocks 1655.0 186783.9 1128.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 1594826.3 2749.7
Pipe Throughput 12440.0 1199311.7 964.1
Pipe-based Context Switching 4000.0 269572.7 673.9
Process Creation 126.0 11970.4 950.0
Shell Scripts (1 concurrent) 42.4 4396.1 1036.8
Shell Scripts (8 concurrent) 6.0 624.3 1040.5
System Call Overhead 15000.0 1892630.2 1261.8
========
System Benchmarks Index Score 1139.2

 

Linode VS Digital Ocean Breakdown

Price To Resource Ratio (Both Cost $10/mo)

Linode Digital Ocean
CPU – 1 Core @2.5GHz CPU: 1 Core @2GHz
Ram – 2 Gb 1GB
SSD – 24 GB 30 GB
Transfer 2TB/mo Transfer 2TB/mo

Performance Stats

DD War

Linode  Digital Ocean
560 MB/s 407 MB/s
923 MB/s 543 MB/s
481 MB/s 175 MB/s
105MB/s 41.3 MB/s

Winner: Linode

IOPS WAR

Linode  Digital Ocean
Random Read IOPS 59905 60950
Random Write IOPS 49231 12509

Winner: Linode

Unix Bench WAR

Linode  Digital Ocean
1296.3 1138.4
1312.1 1139.2

Winner: Linode

As you can see at this time Linode clearly holds the edge in performance because of CPU and the additional GB of ram doesn’t hurt as well!

Ramwars

I at first thought this move by Linode would not really effect Digital Ocean not to mention the VPS industry as a whole. But after thinking about it I think i was wrong. Digital Ocean and the rest of the industry will need to come up with an answer for this, and it could very well be the beginning of ramwars 2016. This will be a great thing for all of us 🙂

1 thought on “Linode VS Digital Ocean Performance Comparison”

Leave a Reply