openssl 開啓AES-NI指令集性能增加

下面是沒開啓AES-NI的情況,8KB塊加密性能 275677KB/s

F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 20588056 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 5782150 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 1514163 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 816554 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 8192 size blocks: 100134 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 50478 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c  28 May 2019
built on: Fri Mar 20 02:05:45 2020 UTC
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-256-cbc     109802.97k   123352.53k   129208.58k   280176.35k   273432.58k   275677.18k

下面是開啓了AES-NI指令集之後,8KB塊加密性能增加到了 1223587KB/s,是原來的4.4倍,而256B塊加密性能是原來的9倍。

F:\3rdpart\openssl-OpenSSL_1_1_1c\apps>openssl speed -evp AES256
Doing aes-256-cbc for 3s on 16 size blocks: 146023514 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 50123679 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 13722555 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 3471554 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 448091 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 221037 aes-256-cbc's in 3.00s
OpenSSL 1.1.1c  28 May 2019
built on: Wed Apr  1 07:05:12 2020 UTC
options:bn(64,32) rc4(8x,mmx) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /MT /Zl /Gs0 /GF /Gy /W3 /wd4090 /nologo /O2 /WX -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-256-cbc     778792.07k  1069305.15k  1170991.36k  1184957.10k  1223587.16k  1207156.74k

關閉AES-NI的方法是,加了386表示這是一個386兼容的處理器,也就禁用了386之後的所有指令集。

perl Configure VC-WIN32 no-shared 386

啓用AES-NI的方法是,openssl會執行cpuid查詢cpu支持的指令集,並動態啓用。

perl Configure VC-WIN32 no-shared

測試機CPU爲i7 9700

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章