第3世代 Xeon (Cooper Lake)を搭載する「m6i」インスタンスのOpenSSL性能を測定してみた

2021/8/17にリリースされた最新「M6i」インスタンスのCPU性能をOpenSSLで測定してみました。
2021.08.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSチームのすずきです。

2021年8月にリリースされた 第3世代 Xeon Scalable Processors (Cooper Lake)を搭載する m6iインスタンス。 そのCPU性能を確認するためにOpenSSLの処理性能を計測、従来のEC2インスタンスと比較する機会がありましたので紹介させていただきます。

計測対象

以下のEC2インスタンスを計測対象としました。

  • インスタンスタイプ
インスタンスタイプ CPU model 提供時期
m6i.large Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz 2021/08
m5zn.large Intel(R) Xeon(R) Platinum 8151 CPU @ 3.40GHz 2020/12
m5a.large AMD EPYC 7571 2018/11
z1d.large Intel(R) Xeon(R) Platinum 8151 CPU @ 3.40GHz 2018/07
m5.large Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2017/12
m4.large Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz 2015/06
  • リージョン: us-west-2(オレゴン)
  • AMI: ubuntu-focal-20.04-amd64-server-20210430 ( ami-03d5c68bab01f3496)

計測方法

OpenSSLのスピード測定を利用、16KBの測定値を利用して比較を行いました。

  • ハードウェア暗号エンジン支援なし、1コア性能測定
openssl speed -elapsed aes-128-cbc
  • ハードウェア暗号エンジン支援なし、2コア性能測定
openssl speed -elapsed -evp aes-128-gcm -multi 2 
openssl speed -elapsed -evp aes-128-ctr -multi 2
openssl speed -elapsed -evp chacha20 -multi 2

結果

  • 1コア性能測定
インスタンスタイプ aes-128 cbc m4比較 m5比較
m6i.large 248020 1.33 1.14
m5zn.large 312781 1.68 1.44
m5a.large 168214 0.90 0.77
z1d.large 280444 1.50 1.29
m5.large 217311 1.17 1.00
m4.large 186460 1.00 0.86
  • ハードウェア暗号エンジン有効
インスタンスタイプ aes-128-gcm m4比較 aes-128-ctr m4比較 chacha20 m4比較
m6i.large 5474386 1.75 10001782 2.36 6384899 2.52
m5zn.large 7007464 2.24 7183084 1.70 6345375 2.50
m5a.large 3083479 0.98 7994277 1.89 1437734 0.57
z1d.large 6251593 2.00 6383315 1.51 5648291 2.23
m5.large 4837872 1.54 4909755 1.16 4374593 1.73
m4.large 3133094 1.00 4234554 1.00 2534675 1.00

まとめ

「m6i」インスタンスを紹介するAWSブログで、M5インスタンスと比較して15%のコストパフォーマンス改善が紹介されていましたが、 これを裏付けるコア性能の向上が確認できました。

offer up to 15% better compute price performance over M5 instances

また、「m6i」インスタンスに搭載されている第3世代 Xeon Scalable Processors (Cooper Lake)。 AI、ディープラーニング性能の強化がアピールされていますが、一般的な暗号処理性能についても強化されている模様です

Customers refreshing aging infrastructure can expect an average estimated gain of 1.9 times on popular workloads and up to 2.2 times more VMs compared with 5-year-old 4-socket platform equivalents.

「m6i」が東京、大阪リージョンで早期に提供開始される事と、 最新世代の各社のCPUが コンピューティング最適化、メモリ最適化など他のインスタンスファミリーでも利用可能になることを心待ちにしたいと思います。

実行ログ

  • m6i.large 計測時のログ
cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 106
model name      : Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz
stepping        : 6
microcode       : 0xd0002b1
cpu MHz         : 3504.411
cache size      : 55296 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 27
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm
 constant_tsc rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt 
tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjus
t bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetb
v1 xsaves wbnoinvd ida arat avx512vbmi pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid md_clear flush_l1d
 arch_capabilities
bugs            : spectre_v1 spectre_v2 spec_store_bypass swapgs
bogomips        : 5799.95
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:
uname -a
openssl version
openssl speed -elapsed aes-128-cbc
openssl speed -elapsed -evp aes-128-gcm -multi 2 
openssl speed -elapsed -evp aes-128-ctr -multi 2
openssl speed -elapsed -evp chacha20 -multi 2
Linux ip-172-31-11-242 5.4.0-1045-aws #47-Ubuntu SMP Tue Apr 13 07:02:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
OpenSSL 1.1.1f  31 Mar 2020
Forked child 0
Forked child 1
Got: +H:16:64:256:1024:8192:16384 from 0
Got: +F:22:aes-128-gcm:252046224.00:635268117.33:1602258346.67:2262330709.33:2702281386.67:2739295936.21 from 0
Got: +H:16:64:256:1024:8192:16384 from 1
Got: +F:22:aes-128-gcm:250475280.00:633245994.67:1598706944.00:2252849493.33:2698218154.67:2735090346.67 from 1
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 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-Juj39H/openssl-1.1.1f=. -fstack-p
rotector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -D
OPENSSL_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
evp             502521.50k  1268514.11k  3200965.29k  4515180.20k  5400499.54k  5474386.28k
Forked child 0
Forked child 1
Got: +H:16:64:256:1024:8192:16384 from 0
Got: +F:22:aes-128-ctr:283207061.33:872076629.33:2325821902.34:3933885388.63:4880050858.67:5005945514.67 from 0
Got: +H:16:64:256:1024:8192:16384 from 1
Got: +F:22:aes-128-ctr:284341370.67:875266304.00:2331419989.33:3929538218.67:4908556288.00:4995836586.67 from 1
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 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-Juj39H/openssl-1.1.1f=. -fstack-p
rotector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -D
OPENSSL_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
evp             567548.43k  1747342.93k  4657241.89k  7863423.61k  9788607.15k 10001782.10k
Forked child 0
Forked child 1
Got: +H:16:64:256:1024:8192:16384 from 0
Got: +F:22:chacha20:210549258.67:508344021.33:1884501930.67:3064901973.33:3178291200.00:3195781120.00 from 0
Got: +H:16:64:256:1024:8192:16384 from 1
Got: +F:22:chacha20:210894320.00:511101845.33:1894150997.33:3066898432.00:3183266474.67:3189118293.33 from 1
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 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-Juj39H/openssl-1.1.1f=. -fstack-p
rotector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -D
OPENSSL_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
evp             421443.58k  1019445.87k  3778652.93k  6131800.41k  6361557.67k  6384899.41k
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 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-Juj39H/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
aes-128 cbc     238474.44k   245293.46k   247094.36k   247418.20k   247922.69k   248020.99k
Forked child 0
Forked child 1
Got: +H:16:64:256:1024:8192:16384 from 0
Got: +F:22:aes-128-cbc:392316112.00:848056277.33:1187408298.67:1336972629.33:1379892050.50:1391012522.67 from 0
Got: +H:16:64:256:1024:8192:16384 from 1
Got: +F:22:aes-128-cbc:393765248.00:854970624.00:1192783360.00:1342523050.67:1390632960.00:1394174634.67 from 1
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Mar 22 11:37:17 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-Juj39H/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
evp             786081.36k  1703026.90k  2380191.66k  2679495.68k  2770525.01k  2785187.16k