Я видел что-то странное в отношении производительности OpenSSL.
Это результат «openssl speed aes-128-cbc» на физическом HP Bl460c Gen8 с двумя E5-2680, работающими под управлением RHEL / OEL 6.4x64 и OpenSSL 1.0.0-fips;
Doing aes-128 cbc for 3s on 16 size blocks: 19853475 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 64 size blocks: 5366868 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 1364167 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 1024 size blocks: 343297 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 8192 size blocks: 43002 aes-128 cbc's in 3.00s
Я установил OpenSSL 1.0.1f на тот же blade-сервер и повторно протестировал его, получив эти результаты;
Doing aes-128 cbc for 3s on 16 size blocks: 19887908 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 64 size blocks: 5367604 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 1365296 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 1024 size blocks: 343261 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 42996 aes-128 cbc's in 2.99s
Они во многом похожи.
Но затем для справки я провел тот же тест на виртуальной машине устройства (4 x vCPU, 8 ГБ, ESXi 5.5 на том же лезвии, что и выше) с SuSE 11 и OpenSSL 0.9.8-fips и получил следующий результат;
Doing aes-128 cbc for 3s on 16 size blocks: 31056333 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 64 size blocks: 10296043 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 2772200 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 1024 size blocks: 712440 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 89701 aes-128 cbc's in 2.99s
В большинстве случаев производительность более чем в два раза выше!
Кто-нибудь знает, что здесь происходит, пожалуйста - я прочитал целую кучу документов OpenSSL и документов Intel OpenSSL, касающихся их аппаратных компонентов AES-NI, но меня это смущает.