nguvu

VPS performance, Ramnode

Published 3 February 2014.

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% 

VPS Specification

QEMU Virtual CPU version (cpu64-rhel6), 4 cores, 3300Mhz, 6600bogomips, 4096MB cache. 1024MB RAM.

Writing speed

# 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

Unbuffered reading speed

# 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

Buffered reading speed

# 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++ benchmark

# 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

I/O Ping

# 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

I/O Seek test (no cache)

# 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

I/O Seek test (cached)

# 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

I/O seek (sequential)

# 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 Random read test, queue depth = 1

# 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 Random read test, queue depth = 8

# 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%