Following yesterdays published VPS performance data and reading some of the feedback relating to testing virtualised servers I received, I wanted to add and compare Digital Oceans 2 core, 2048MB droplet performance to see what impact the increased specification may have on the results. I chose this spec as it is offered at $20, the same price as Linodes base spec machine which benchmarked so well yesterday.
The test details are below but to save you scrolling through all the data to get to them, I’ve put the summary table at the top.
Test | Digital Ocean 512 | Linode | Dig Ocean 512 (3/1/14) | Dig Ocean 2048 (3/1/14) |
---|---|---|---|---|
Writing speed (MB/s) | 269 | 1200 | 426 | 291 |
Unbuffered read (MB/s) | 335 | 533 | 874 | 650 |
Buffered read (MB/s) | 383 | 986 | 545 | 4983 |
Bonnie read (MB/s) | 328 | 670 | 622 | 692 |
Bonnie write (MB/s) | 154 @ 44% | 558 @ 99% | 371 @ 64% | 322 @ 76% |
Bonnie Update (MB/s) | 155 @ 61% | 424 @ 61% | 335 @ 65% | 229 @ 52% |
Bonnie random seek | 5756 | +++++ | 13361 | 9613 |
IO seek (no cache) | - | - | 8524 IOPS, 33.3 MB/s | 8718 IOPS, 34.1 MB/s |
IO seek (cached) | - | - | 214825 IOPS, 839.2 MB/s | 221504 IOPS, 865.2 MB/s |
IO reads (sequential) | - | - | 2805 IOPS, 701.2 MB/s | 2691 IOPS, 672.7MB/s |
FIO / Queue Depth = 1 | ||||
Completion Latency (usec) | 233 | 114 | 115 | 106 |
Bandwidth (MB/s) | 16.2 | 31.57 | 32.01 | 35.71 |
IO request complete @250usec | 95.00% | 99.97% | 99.54% | 99.57% |
CPU Utilisation | 52% | 27% | 48.85% | 39.72% |
FIO / Queue Depth = 8 | ||||
Completion Latency (usec) | 476 | 162 | 324 | 235.69 |
Bandwidth (MB/s) | 61.0 | 173.40 | 103.89 | 124.26 |
IO request complete @250usec | 15.26% | 92.5% | 58.67% | 70.31% |
CPU Utilisation | 63% | 80% | 78.19% | 69.94% |
Its pretty obvious looking at the results that both these droplets are much more competitive with Linodes numbers from yesterday. However, I still noticed an increased standard deviation on Digital Oceans servers which holds back the final results. Hopefully this is something Digital Ocean can tweak to improve.
# 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, 3.56429 s, 301 MB/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, 3.66344 s, 293 MB/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, 3.83381 s, 280 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.50434 s, 714 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.652 s, 650 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.83096 s, 586 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, 0.235686 s, 4.6 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, 0.213416 s, 5.0 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, 0.223325 s, 4.8 GB/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
testing 8G 598 99 330718 76 234768 52 2201 98 709220 81 9613 265
Latency 26201us 783ms 528ms 32834us 135ms 4731us
Version 1.96 ------Sequential Create------ --------Random Create--------
testing -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 24115 83 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 669us 445us 735us 209us 26us 306us
1.96,1.96,testing,1,1391452904,8G,,598,99,330718,76,234768,52,2201,98,709220,81,9613,265,16,,,,,24115,83,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,26201us,783ms,528ms,32834us,135ms,4731us,669us,445us,735us,209us,26us,306us
root@testing:~# ioping /tmp -c 10
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=1 time=0.1 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=2 time=0.3 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=3 time=0.3 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=4 time=0.3 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=5 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=6 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=7 time=0.3 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=8 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=9 time=0.2 ms
4096 bytes from /tmp (ext4 /dev/disk/by-label/DOROOT): request=10 time=0.3 ms
# ioping /tmp -RD
--- /tmp (ext4 /dev/disk/by-label/DOROOT) ioping statistics ---
7211 requests completed in 3000.1 ms, 8718 iops, 34.1 mb/s
min/avg/max/mdev = 0.1/0.1/0.7/0.0 ms
# ioping /tmp -RC
--- /tmp (ext4 /dev/disk/by-label/DOROOT) ioping statistics ---
29435 requests completed in 3000.0 ms, 221504 iops, 865.2 mb/s
min/avg/max/mdev = 0.0/0.0/0.2/0.0 ms
# ioping /tmp -RL
--- /tmp (ext4 /dev/disk/by-label/DOROOT) ioping statistics ---
5781 requests completed in 3000.2 ms, 2691 iops, 672.7 mb/s
min/avg/max/mdev = 0.3/0.4/6.3/0.1 ms
# fio random-read-test
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
fio 1.59
Starting 1 process
random-read: Laying out IO file(s) (1 file(s) / 128MB)
Jobs: 1 (f=1): [r] [-.-% done] [37019K/0K /s] [9037 /0 iops] [eta 00m:00s]
random-read: (groupid=0, jobs=1): err= 0: pid=1236
read : io=131072KB, bw=36348KB/s, iops=9087 , runt= 3606msec
clat (usec): min=64 , max=3525 , avg=106.37, stdev=44.56
lat (usec): min=64 , max=3525 , avg=106.64, stdev=44.59
bw (KB/s) : min=33616, max=39480, per=100.83%, avg=36651.43, stdev=1860.41
cpu : usr=8.43%, sys=31.29%, ctx=32578, majf=0, minf=24
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=33.86%, 250=65.71%, 500=0.33%, 750=0.06%, 1000=0.02%
lat (msec): 2=0.02%, 4=0.01%
Run status group 0 (all jobs):
READ: io=131072KB, aggrb=36348KB/s, minb=37220KB/s, maxb=37220KB/s, mint=3606msec, maxt=3606msec
Disk stats (read/write):
vda: ios=32588/0, merge=0/0, ticks=2332/0, in_queue=2312, util=62.96%
root@testing:~# fio random-read-test-aio
random-read: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio 1.59
Starting 1 process
Jobs: 1 (f=1)
random-read: (groupid=0, jobs=1): err= 0: pid=1264
read : io=131072KB, bw=125789KB/s, iops=31447 , runt= 1042msec
slat (usec): min=3 , max=3317 , avg=15.28, stdev=26.24
clat (usec): min=46 , max=3807 , avg=235.69, stdev=114.89
lat (usec): min=71 , max=3815 , avg=251.92, stdev=116.22
bw (KB/s) : min=103728, max=150768, per=101.16%, avg=127248.00, stdev=33262.30
cpu : usr=14.99%, sys=54.95%, ctx=2477, 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=0.75%, 250=69.55%, 500=26.38%, 750=3.02%
lat (usec): 1000=0.19%
lat (msec): 2=0.08%, 4=0.02%
Run status group 0 (all jobs):
READ: io=131072KB, aggrb=125788KB/s, minb=128807KB/s, maxb=128807KB/s, mint=1042msec, maxt=1042msec
Disk stats (read/write):
vda: ios=29013/0, merge=0/0, ticks=3700/0, in_queue=3704, util=75.60%