How do the various VPS vendors compare? I decided to find out. I'm going to run a series of benchmark tests on VPSes provided by a bunch of different cloud providers. Also included are results from my Raspberry Pi 3.
I will update this post as I run more benchmark tests.
OpenSSL Speed Tests (RSA)
Command: openssl speed rsa
Azure
Spec: Standard A1 (1 core, 1.75 GB memory)
sign verify sign/s verify/s
rsa 512 bits 0.000127s 0.000009s 7864.4 106226.3
rsa 1024 bits 0.000417s 0.000025s 2397.6 39664.3
rsa 2048 bits 0.002855s 0.000081s 350.3 12282.8
rsa 4096 bits 0.019681s 0.000304s 50.8 3292.4
DigitalOcean
Spec: $5 Droplet (1 core, 512 MB memory)
sign verify sign/s verify/s
rsa 512 bits 0.000079s 0.000006s 12660.4 177734.0
rsa 1024 bits 0.000232s 0.000018s 4316.9 55457.6
rsa 2048 bits 0.001531s 0.000047s 653.3 21220.3
rsa 4096 bits 0.010604s 0.000166s 94.3 6022.0
Scaleway
Spec: VC1S (2 cores, 2 GB memory)
sign verify sign/s verify/s
rsa 512 bits 0.000202s 0.000015s 4944.4 66974.1
rsa 1024 bits 0.000694s 0.000043s 1441.2 23023.3
rsa 2048 bits 0.005071s 0.000148s 197.2 6752.7
rsa 4096 bits 0.036268s 0.000556s 27.6 1798.1
Bandwagon Host
Spec: 5G Promo V2 (1 core, 512 MB memory)
sign verify sign/s verify/s
rsa 512 bits 0.000139s 0.000009s 7201.2 111387.3
rsa 1024 bits 0.000406s 0.000025s 2465.1 40161.1
rsa 2048 bits 0.002881s 0.000086s 347.1 11575.8
rsa 4096 bits 0.020938s 0.000322s 47.8 3104.0
Raspberry Pi 3
Spec: Pi 3 Model B (4 cores, 1 GB memory)
sign verify sign/s verify/s
rsa 512 bits 0.000769s 0.000066s 1300.3 15056.3
rsa 1024 bits 0.003927s 0.000198s 254.7 5041.6
rsa 2048 bits 0.025000s 0.000705s 40.0 1418.7
rsa 4096 bits 0.172203s 0.002684s 5.8 372.6
OpenSSL Speed Tests (AES-256-CBC)
Command: openssl speed -evp aes-256-cbc
Azure
Doing aes-256-cbc for 3s on 16 size blocks: 7035747 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 64 size blocks: 1914087 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 488292 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 1024 size blocks: 310851 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 38127 aes-256-cbc's in 2.99s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 37649.48k 40833.86k 41806.94k 106103.81k 104460.33k
DigitalOcean
Doing aes-256-cbc for 3s on 16 size blocks: 56063358 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 12943502 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 4071276 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 905658 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 126984 aes-256-cbc's in 3.00s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 299004.58k 276128.04k 347415.55k 309131.26k 346750.98k
Scaleway
Doing aes-256-cbc for 3s on 16 size blocks: 33162225 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 11397585 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 3302439 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 857138 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 108679 aes-256-cbc's in 3.00s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fdebug-prefix-map=/build/openssl-wIGtVG/openssl-1.0.2g=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 176865.20k 243148.48k 281808.13k 292569.77k 296766.12k
Bandwagon Host
Doing aes-256-cbc for 3s on 16 size blocks: 64041849 aes-256-cbc's in 2.93s
Doing aes-256-cbc for 3s on 64 size blocks: 17847712 aes-256-cbc's in 2.94s
Doing aes-256-cbc for 3s on 256 size blocks: 4568741 aes-256-cbc's in 2.95s
Doing aes-256-cbc for 3s on 1024 size blocks: 1137072 aes-256-cbc's in 2.94s
Doing aes-256-cbc for 3s on 8192 size blocks: 143645 aes-256-cbc's in 2.94s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 349716.58k 388521.62k 396473.80k 396041.40k 400251.65k
Raspberry Pi 3
Doing aes-256-cbc for 3s on 16 size blocks: 5547024 aes-256-cbc's in 2.96s
Doing aes-256-cbc for 3s on 64 size blocks: 1609019 aes-256-cbc's in 2.96s
Doing aes-256-cbc for 3s on 256 size blocks: 426448 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 107881 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 8192 size blocks: 13519 aes-256-cbc's in 3.00s
OpenSSL 1.0.1t 3 May 2016
built on: Fri Sep 23 22:38:09 2016
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 29983.91k 34789.60k 36390.23k 36946.54k 36915.88k
VPSBench
Command: bash <(wget --no-check-certificate -O - https://raw.github.com/mgutz/vpsbench/master/vpsbench)
Azure
CPU model: AMD Opteron(tm) Processor 4171 HE
Number of cores: 1
CPU frequency: 2094.674 MHz
Total amount of RAM: 1675 MB
Total amount of swap: MB
System uptime: 8 days, 5:50,
I/O speed: 40.9 MB/s
Bzip 25MB: 12.74s
Download 100MB file: 31.3MB/s
DigitalOcean
CPU model: Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz
Number of cores: 1
CPU frequency: 2399.998 MHz
Total amount of RAM: 488 MB
Total amount of swap: MB
System uptime: 22:51,
I/O speed: 185 MB/s
Bzip 25MB: 6.30s
Download 100MB file: 94.7MB/s
Scaleway
CPU model: Intel(R) Atom(TM) CPU C2750 @ 2.40GHz
Number of cores: 2
CPU frequency: 2393.902 MHz
Total amount of RAM: 2002 MB
Total amount of swap: MB
System uptime: 1:25,
I/O speed: 124 MB/s
Bzip 25MB: 13.71s
Download 100MB file: 87.6MB/s
Bandwagon Host
CPU model: Intel(R) Xeon(R) CPU L5639 @ 2.13GHz
Number of cores: 1
CPU frequency: 2133.382 MHz
Total amount of RAM: 512 MB
Total amount of swap: MB
System uptime: 28 days, 4:01,
I/O speed: 134 MB/s
Bzip 25MB: 9.23s
Download 100MB file: 20.7MB/s
Raspberry Pi 3
Note: Download speed is limited by the speed of my home internet connection
CPU model: ARMv7 Processor rev 4 (v7l)
Number of cores: 4
CPU frequency: MHz
Total amount of RAM: 925 MB
Total amount of swap: 99 MB
System uptime: 7 days, 7:52,
I/O speed: 9.2 MB/s
Bzip 25MB: 30.49s
Download 100MB file: 8.45MB/s