VS>> Hашел я процессор с AESNI, но что-то я что загружаю aesni.ko, что VS>> выгружаю его - результат "openssl speed aes-128-cbc" совершенно VS>> одинаковый. Видимо что-то делаю или понимаю не так.
EG> Как сказано в man aesni, оно влияет на ядерную подсистему crypto(4).
EG> Hо если openssl (работает не в ядре) запускается на процессоре с EG> AES-NI и с ключом -evp, то он использует AES-NI. Если ему не оторвать
Да, указание ключа -evp картину действительно меняет:
root@fw2:~ # openssl speed -evp aes-128-cbc -elapsed ; openssl speed aes-128-cbc -elapsed You have chosen to measure elapsed time instead of user CPU time. Doing aes-128-cbc for 3s on 16 size blocks: 133224589 aes-128-cbc's in 3.01s Doing aes-128-cbc for 3s on 64 size blocks: 35810812 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 256 size blocks: 9145585 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 1024 size blocks: 2296907 aes-128-cbc's in 3.00s Doing aes-128-cbc for 3s on 8192 size blocks: 287928 aes-128-cbc's in 3.01s OpenSSL 1.0.2s-freebsd 28 May 2019 built on: date not available options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) compiler: clang The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128-cbc 708685.61k 763963.99k 780423.25k 784010.92k 784193.22k You have chosen to measure elapsed time instead of user CPU time. Doing aes-128 cbc for 3s on 16 size blocks: 25379752 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 64 size blocks: 6964405 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 256 size blocks: 1774395 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 1024 size blocks: 447611 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 8192 size blocks: 56210 aes-128 cbc's in 3.01s OpenSSL 1.0.2s-freebsd 28 May 2019 built on: date not available options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) compiler: clang The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128 cbc 135358.68k 148573.97k 151415.04k 152784.55k 153092.10k root@fw2:~ #
[dd] EG> Вообще это опасно, конечно, делать то, что я делал - EG> пока ядро не использует регистры CPU, с которыми работают EG> эти наборы команд (SSE/MMX/AVX/AESNI), то при переключении EG> контекста из приложения в ядро и обратно в то же приложение, EG> ядро не обязательно сохранять и восстанавливать все эти регистры EG> для экономии времени. Hо если ядро начинает их использовать, EG> то приходится. Что будет, если ядро в лице ZFS или ещё какого EG> потребителя crypto(9) начнет использовать такие регистры, EG> а потом выбить у него из под ног табуреточку одновременно EG> запуская openssl speed... Вполне какой-нибудь assert() мог EG> сработать, ну или просто скрешиться из-за дедлока какого.