AES-NI の乗ってるマシンが使えたので OpenSSL でベンチマークしてみた。
結果:AES-NI なし 80〜90MB/s AES-NI あり 500〜530MB/s
「通常の5倍のスピードで処理してます!」「圧倒的じゃないか、我が軍は」
アクセラレーション命令の効果ってすごいねw
環境
- パッケージ openssl-1.0.0-20.el6_2.3.x86_64
OpenSSL 1.0.0-fips 29 Mar 2010 built on: Wed Mar 28 01:11:34 BST 2012 options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
データ処理方法
$ openssl speed aes-256-cbc と、$ openssl speed -engine aesni -evp aes-256-cbc をそれぞれ12回実行。
最低値と最高値を除いた10回分を平均。
ほぼ生結果
出力からデータ部分だけ抜き出して整形したもの
$ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 5;echo $'\n' $i;openssl speed aes-256-cbc;done The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes [1] aes-256 cbc 83334.51k 88875.11k 89694.81k 90108.59k 90032.81k [2] aes-256 cbc 83676.49k 88564.69k 89513.81k 90060.12k 90136.58k [3] aes-256 cbc 83586.06k 88518.53k 89619.80k 89900.37k 90120.19k [4] aes-256 cbc 83481.23k 88239.70k 89631.74k 89968.64k 90161.15k [5] aes-256 cbc 83766.11k 88464.09k 89475.16k 90037.93k 90131.11k [6] aes-256 cbc 83576.46k 88526.70k 89594.11k 89827.33k 90150.23k [7] aes-256 cbc 83656.46k 88513.39k 89270.19k 89924.61k 89907.20k [8] aes-256 cbc 83753.24k 88548.39k 89591.89k 90039.64k 90106.54k [9] aes-256 cbc 83824.61k 88517.74k 89623.47k 89947.48k 90158.42k [10] aes-256 cbc 83477.34k 88522.82k 89642.92k 89906.52k 90317.48k [11] aes-256 cbc 83753.46k 88330.35k 89580.29k 89991.85k 90418.86k [12] aes-256 cbc 83760.76k 88532.03k 89620.74k 89857.02k 90172.07k $ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12];do sleep 5;echo $'\n' $i;openssl speed -engine aesni -evp aes-256-cbc;done type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes [1] aes-256-cbc 501828.65k 526791.94k 532614.66k 532002.13k 534336.85k [2] aes-256-cbc 502227.67k 526500.01k 532457.30k 534213.63k 534629.03k [3] aes-256-cbc 502761.90k 526832.58k 532505.69k 534058.67k 534506.15k [4] aes-256-cbc 502380.79k 525534.10k 532617.98k 534076.76k 532540.07k [5] aes-256-cbc 501802.15k 526575.21k 531325.27k 534007.47k 534659.07k [6] aes-256-cbc 501603.49k 526804.86k 532528.21k 532920.32k 534399.66k [7] aes-256-cbc 501986.26k 526815.45k 532567.72k 534147.07k 533749.76k [8] aes-256-cbc 502505.37k 526502.93k 532417.79k 534156.63k 536340.38k [9] aes-256-cbc 501352.31k 526771.63k 532590.76k 533918.72k 534555.31k [10] aes-256-cbc 500879.76k 526261.67k 532489.47k 533684.91k 534560.77k [11] aes-256-cbc 502065.32k 526153.11k 530862.76k 533784.58k 536036.26k [12] aes-256-cbc 500670.27k 526739.97k 532580.78k 532582.74k 536112.97k