Reg Speed test and Assembly code usage

Dennis Clarke dclarke at blastwave.org
Thu Apr 4 15:43:34 UTC 2019


On 4/4/19 3:32 AM, ramakrushna mishra wrote:
> Hi,
> 
> Could anyone please help me get the following information. 
> 
> -- How to verify that the openssl  is using the assembly code ( when asm
> is enabled) instead of the c code for the algorithms ? 
> -- I m observing a small degradation (2 % for 16 byte size) for des-ede3
> on openssl1.1.1 for Solaris. This might not be suggested to use the
> algorithm, but for learning purpose is there something that I can do to
> see if this can be improved. 

You will see plenty of lost performance on Solaris. It is a very very
slow old platform.  Also very little anyone can do to fix that.

For example here is a 15 year old Apple PowerMac :


hydra$ uname -a
FreeBSD hydra 13.0-CURRENT FreeBSD 13.0-CURRENT r344744 GENERIC  powerpc
hydra$ /usr/bin/openssl version
OpenSSL 1.1.1b-freebsd  26 Feb 2019
hydra$ /usr/bin/openssl speed rsa4096
Doing 4096 bits private rsa's for 10s: 83 4096 bits private RSA's in 10.02s
Doing 4096 bits public rsa's for 10s: 5808 4096 bits public RSA's in 10.00s
OpenSSL 1.1.1b-freebsd  26 Feb 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc
                  sign    verify    sign/s verify/s
rsa 4096 bits 0.120764s 0.001722s      8.3    580.8
hydra$



Here is a fairly new Oracle M3000 server :


s10sparc$ uname -a
SunOS corv 5.10 Generic_150400-64 sun4u sparc SUNW,SPARC-Enterprise

s10sparc$ /bin/sparcv9/openssl version
OpenSSL 1.0.2p  14 Aug 2018
s10sparc$ /bin/sparcv9/openssl speed rsa4096
Doing 4096 bit private rsa's for 10s: 86 4096 bit private RSA's in 10.06s
Doing 4096 bit public rsa's for 10s: 5896 4096 bit public RSA's in 10.00s
OpenSSL 1.0.2p  14 Aug 2018
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,int) des(ptr,risc1,16,int)
aes(partial) blowfish(ptr)
compiler: information not available
                  sign    verify    sign/s verify/s
rsa 4096 bits 0.116977s 0.001696s      8.5    589.6
s10sparc$


An expensive Oracle Netra T4-1 is not much better.


s10sparc$ /usr/local/bin/openssl version
OpenSSL 1.1.1b  26 Feb 2019
s10sparc$ /usr/local/bin/openssl speed rsa4096
Doing 4096 bits private rsa's for 10s: 78 4096 bits private RSA's in 10.08s
Doing 4096 bits public rsa's for 10s: 8229 4096 bits public RSA's in 10.00s
OpenSSL 1.1.1b  26 Feb 2019
built on: Tue Mar 26 06:51:39 2019 UTC
options:bn(64,32) rc4(char) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: /opt/developerstudio12.6/bin/cc -KPIC -m64 -Xa -g
-errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff
-xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc
-ftrap=%none -xbuiltin=%none -xdebugformat=dwarf -xunroll=1 -xarch=sparc
-xdebugformat=dwarf -xstrconst -m64 -xarch=sparc -g -Xa -errfmt=error
-erroff=%none -errshort=full -xstrconst -xildoff -xmemalign=8s
-xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc -ftrap=%none
-xbuiltin=%none -xunroll=1 -Qy -xdebugformat=dwarf -DFILIO_H -DB_ENDIAN
-DBN_DIV2W -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM
-DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -D_REENTRANT
-DNDEBUG -I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS
-D_LARGEFILE64_SOURCE -D_TS_ERRNO
                  sign    verify    sign/s verify/s
rsa 4096 bits 0.129231s 0.001215s      7.7    822.9
s10sparc$


Also a dirt cheap machine built from spare parts :


fbsd_amd64$
fbsd_amd64$ uname -a
FreeBSD vesta 13.0-CURRENT FreeBSD 13.0-CURRENT r345173 GENERIC  amd64
fbsd_amd64$ /usr/bin/openssl version
OpenSSL 1.1.1b-freebsd  26 Feb 2019
fbsd_amd64$ /usr/bin/openssl speed rsa4096
Doing 4096 bits private rsa's for 10s: 638 4096 bits private RSA's in 10.07s
Doing 4096 bits public rsa's for 10s: 43106 4096 bits public RSA's in 10.03s
OpenSSL 1.1.1b-freebsd  26 Feb 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: clang
                  sign    verify    sign/s verify/s
rsa 4096 bits 0.015784s 0.000233s     63.4   4297.2
fbsd_amd64$


Don't go looking for performance on Solaris anymore.  It isn't there.


Dennis


More information about the openssl-users mailing list