CPU の AES 高速化
Intel と AMD の CPU には AES-NI という CPU 命令拡張が搭載されています。詳細は Wikipedia を読んでください。ちなみに ARM にも AES 拡張が搭載されているものがあります。
ちなみに 私自身はハードがわからないので AES-NI の知識はまったくありません。AES がハードウェアによって高速化される程度の知識です。
ただ、AES といっても暗号の種類は CBC 以外にも、最近良く使われている AES-GCM (TLS 1.2 で利用) や、 WebRTC の SRTP で利用されている AES-CTR があり、実は CPU ごとに AES-GCM や AES-CTR はかなりの差があるというのを最近調べていて気づきました。
ということでインターネッツのちからを使って募集してみることにしました。この記事を読んだ人も是非お時間あれば、気軽にコメントしてみてください。
$ openssl speed -evp aes-gcm | aes-ctr の結果を集める
かなりの情報が集まったので簡単にレビューしてみることにしました。全て AES-CTR の 1024 bytes の結果を見ていきます。バージョンの差はここでは気にしていません。ざっくりです。
詳しい方、間違っていたら是非ツッコミお願いします。
MacBookPro
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHztype 1024 bytes
aes-128-ctr 4964532.85k
約 500 万台が叩き出されています。これをベースにしましょう。
Intel(R) Core(TM) i7-7567U CPU @ 3.50GHztype 1024 bytes
aes-128-ctr 5358949.51k
まさかの 530 万台です。これはすごいですね。ちなみに 2017 年 7 月時点で一番新しい MacBookPro 15 、MacBookPro 13 です。
AWS
なぜか AWS で調べてくれた方もいらっしゃいました。なぜでしょうね、凄い高いインスタンスも試してくれたようです。
t2.smalltype 1024 bytes
aes-128-ctr 2675474.09k
t2.small は 260 万台
x1.32xlargetype 1024 bytes
aes-128-ctr 2661191.68k
最強のインスタンス x1.32xlarge も t2.small と変わらない 260 万台です。インスタンスが大きいから変わるというわけではありません。もちろんマルチコアを有効にすると話は別です。
scaleway ARM64–2GB (ARMv8)
そして ARM です。Scaleway というベアメタルサービスですね。
type 1024 bytes
aes-128-ctr 439551.32kなんと 43 万台 … Intel 勢に 10 倍以上の差をつけられています。
SoftIron OverDrive 3000
そして、あまりにもマニアックな AMD の ARM64 です、これなぜ持っていらっしゃるんでしょうか。ほとんど出荷されていないはずなんですが … 。
AMD Opteron A1170 (2 GHz 8 core)type 1024 bytes
aes-128-ctr 1898887.85k
かなり検討しています。最初の計測で OpenSSL が古かったから成績が振るわなかったようです。
Pine64
これも ARM です。少し頑張って 50 万です。インテルと比べて 1/10 です。ツライ。
type 1024 bytes
aes-128-ctr 499854.34kAMD Ryzen 7 1800X (3.6GHz, Max TB: 4GHz)
そして噂の Ryzen 、凄い早いという情報だけ入ってきています。が実際どうなんでしょうか。
type 1024 bytes
aes-128-ctr 9289486.34k約 930 万 … まさかの結果です。インテルの2 倍です。いや 2 倍って。ARM の最速の 18 倍です。
