Skip to content

Instantly share code, notes, and snippets.

@updateing
Last active March 22, 2021 06:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save updateing/37edccc17265e2173c187ca936dafef0 to your computer and use it in GitHub Desktop.
Save updateing/37edccc17265e2173c187ca936dafef0 to your computer and use it in GitHub Desktop.
OpenSSL aes-256-gcm & chacha20-poly1305 Performance Collection

Also see this thread for tests on a greater range of devices.

Test Command

for i in chacha20-poly1305 aes-128-gcm aes-192-gcm aes-256-gcm; do openssl speed -evp "$i"; done
for i in chacha20-poly1305 aes-128-gcm aes-192-gcm aes-256-gcm; do openssl speed -multi $(nproc) -evp "$i"; done

Test Results

AMLogic S905D (Phicomm N1)

Single thread:

OpenSSL 1.1.1d  10 Sep 2019
built on: Mon Apr 20 20:23:01 2020 UTC
options:bn(64,64) rc4(char) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-yRQ4F5/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DVPAES_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305    41878.22k    91181.85k   184606.48k   215040.34k   227065.86k   228745.85k
aes-128-gcm      60793.25k   179355.12k   378418.09k   532355.00k   596041.73k   601616.10k
aes-192-gcm      59544.51k   172985.06k   345410.73k   492964.90k   547127.30k   552069.57k
aes-256-gcm      57466.32k   166671.17k   331055.52k   451610.62k   508608.13k   509356.71k

Multi thread:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305    168410.50k   361107.07k   728362.84k   852470.78k   902591.83k   901797.21k
aes-128-gcm     236437.66k   704174.31k  1500298.92k  2102226.26k  2370237.78k  2375264.94k
aes-192-gcm     232604.51k   682347.37k  1385946.03k  1944189.27k  2171423.40k  2185177.77k
aes-256-gcm     223260.57k   657349.99k  1318890.67k  1795389.44k  2007621.63k  2019895.98k

Mediatek MT7621

Marvell Armada 3720 (ESPRESSObin v7)

Cavium OCTEON CN7020

Cavium OCTEON CN7240

This device has no support for chacha20-poly1305.

Single thread:

OpenSSL 1.0.2s  28 May 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(ptr,char) des(idx,cisc,2,int) aes(partial) blowfish(ptr)
compiler: mips64-octeon-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_SMALL_FOOTPRINT -DOPENSSL_NO_ERR -mabi=64 -DTERMIOS -Os -pipe -mno-branch-likely -march=octeon -mabi=64 -fno-caller-saves -fpic -ffunction-sections -fdata-sections -fomit-frame-pointer -Wall -DBN_DIV3W -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-gcm      13068.60k    14159.13k    14482.52k    14565.38k    14587.22k
aes-192-gcm      12160.67k    13095.38k    13370.03k    13443.75k    13464.92k
aes-256-gcm      11296.55k    12109.89k    12346.28k    12405.76k    12421.80k

Multi thread:

aes-128-gcm      104509.47k   112763.31k   114560.77k   115457.71k   115960.49k
aes-192-gcm      97318.42k   103089.64k   106573.91k   106963.63k   107151.36k
aes-256-gcm      89299.35k    96432.53k    98405.89k    98747.39k    97632.26k

Intel Atom C3558

Single thread:

OpenSSL 1.1.1f  31 Mar 2020
built on: Wed Dec  2 14:52:44 2020 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-OIe5k7/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   109261.88k   238878.95k   327913.81k   355238.23k   364718.76k   365363.20k
aes-128-gcm     174592.35k   448996.80k   737718.44k   881799.85k   924969.64k   928792.58k
aes-192-gcm     165500.99k   426340.27k   685058.99k   799281.15k   835488.43k   839035.56k
aes-256-gcm     156889.62k   399585.34k   639350.27k   734821.72k   763445.25k   766694.74k

Multi thread:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   433371.80k   955142.93k  1311117.31k  1420334.76k  1458342.57k  1460906.67k
aes-128-gcm         696022.75k  1789738.26k  2950064.90k  3528646.31k  3696140.29k  3712712.70k
aes-192-gcm         661402.52k  1704518.38k  2739171.93k  3196008.45k  3346997.25k  3358698.15k
aes-256-gcm         627507.69k  1598095.94k  2554443.61k  2939327.49k  3052284.59k  3066505.90k

Intel Core i3-8100 (WSLv1)

Single thread:

OpenSSL 1.1.0l  10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/x86_64-linux-gnu/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   278627.85k   520121.07k  1103699.88k  2033975.30k  2151555.07k  2157456.04k
aes-128-gcm     603928.07k  1501558.14k  2850397.10k  4651070.46k  5880414.21k  5973595.48k
aes-192-gcm     556153.62k  1468938.39k  2567462.61k  3999724.54k  4840224.09k  4907646.98k
aes-256-gcm     510923.73k  1405910.25k  2379631.79k  3452614.66k  4079129.94k  4138543.79k

Multi thread:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   724267.75k  1565407.03k  2691981.82k  4807415.47k  5045835.09k  5055376.04k
aes-128-gcm     1405534.70k  3008528.70k  6280893.10k  9253919.06k 11844324.01k 12099949.91k
aes-192-gcm     1366381.00k  2951754.73k  5938452.82k  8166096.55k  9808347.14k  9947551.06k
aes-256-gcm     1280290.77k  2817154.69k  5739576.41k  7223393.84k  8335187.97k  8375058.43k

Intel Core i5-9400

Single thread:

OpenSSL 1.1.1  11 Sep 2018
built on: Wed Feb 17 12:35:54 2021 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-KRAtHS/openssl-1.1.1=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   310510.58k   595589.78k  1204885.25k  2196923.05k  2341964.46k  2347368.45k
aes-128-gcm     600196.49k  1512564.29k  3050648.49k  4797396.31k  6020931.58k  6140532.05k
aes-192-gcm     570656.90k  1461219.73k  2762523.48k  4135288.49k  5038110.04k  5114494.98k
aes-256-gcm     531465.64k  1415756.35k  2545274.28k  3694216.87k  4348275.37k  4409322.15k

Multi thread:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305  1792858.45k  3460969.24k  6863706.71k 11701282.13k 12712214.53k 12886267.22k
aes-128-gcm        2802833.24k  7463964.67k 16511346.01k 26409253.89k 32994874.71k 33547261.27k
aes-192-gcm        2678443.81k  7267204.69k 15294117.12k 23616896.34k 28073915.73k 29329369.77k
aes-256-gcm        2975499.63k  7868931.29k 14598329.69k 20666313.47k 25199531.35k 25409465.00k

AMD Ryzen 7 5800X (stock settings, WSLv1)

WSLv2 performs a tiny bit lower than v1.

Single thread:

OpenSSL 1.1.0k  28 May 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/x86_64-linux-gnu/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
chacha20-poly1305   419848.90k   731487.34k  1776848.21k  3080595.80k  3232855.38k  3267209.90k
aes-128-gcm     899066.58k  2168198.66k  4361315.07k  5699653.63k  6285369.34k  6366276.27k
aes-192-gcm     840283.91k  2105852.86k  4141370.03k  5410947.41k  6013733.59k  6105475.75k
aes-256-gcm     786008.83k  2041702.78k  4041288.53k  5162102.44k  5844986.54k  5899632.64k

Multi thread:

chacha20-poly1305   4021605.43k  8422630.80k 16074189.59k 28769427.46k 30021436.15k 29928595.52k
aes-128-gcm         6698461.99k 15999291.71k 34088402.09k 42856590.34k 47528657.83k 47717504.34k
aes-192-gcm         6374886.04k 15790713.84k 32958526.79k 40809875.57k 45145715.73k 45625815.02k
aes-256-gcm         6094515.82k 15428671.90k 31079299.10k 39277711.38k 43239088.13k 43703475.76k
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment