I did some (rough) performance tests on an z15 LPAR (not a perfect
system, since it has limited capacity and shared processors, but at
least good enough for getting some rough numbers) and that is the
outcome:

ubuntu@z15lp06:~$ arch
s390x
ubuntu@z15lp06:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu Stonking Stingray (development branch)
Release:        26.10
Codename:       stonking

# unpatched 4.0.1-1ubuntu3

ubuntu@z15lp06:~$ apt-cache policy openssl libssl4 libssl-dev
openssl:
  Installed: 4.0.1-1ubuntu3
  Candidate: 4.0.1-1ubuntu3
  Version table:
 *** 4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
        100 /var/lib/dpkg/status
libssl4:
  Installed: 4.0.1-1ubuntu3
  Candidate: 4.0.1-1ubuntu3
  Version table:
 *** 4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
        100 /var/lib/dpkg/status
libssl-dev:
  Installed: 4.0.1-1ubuntu3
  Candidate: 4.0.1-1ubuntu3
  Version table:
 *** 4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
        100 /var/lib/dpkg/status
ubuntu@z15lp06:~$
ubuntu@z15lp06:~$ taskset -c 0 openssl speed -seconds 10 ml-dsa-44 ml-dsa-65 
ml-dsa-87
Doing ML-DSA-44 keygen ops for 10s: 59310 ML-DSA-44 signature keygen ops in 
9.99s
Doing ML-DSA-44 signs ops for 10s: 8877 ML-DSA-44 signature sign ops in 10.00s
Doing ML-DSA-44 verify ops for 10s: 48282 ML-DSA-44 signature verify ops in 
9.99s
Doing ML-DSA-65 keygen ops for 10s: 34890 ML-DSA-65 signature keygen ops in 
10.00s
Doing ML-DSA-65 signs ops for 10s: 5593 ML-DSA-65 signature sign ops in 10.01s
Doing ML-DSA-65 verify ops for 10s: 31669 ML-DSA-65 signature verify ops in 
9.99s
Doing ML-DSA-87 keygen ops for 10s: 24059 ML-DSA-87 signature keygen ops in 
10.00s
Doing ML-DSA-87 signs ops for 10s: 4827 ML-DSA-87 signature sign ops in 10.00s
Doing ML-DSA-87 verify ops for 10s: 20736 ML-DSA-87 signature verify ops in 
9.99s
version: 4.0.1
built on: Mon Aug 10 09:49:51 2026 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall 
-fzero-call-used-regs=used-gpr -Wa,--noexecstack -g -O2 
-Werror=implicit-function-declaration -mbackchain 
-ffile-prefix-map=/build/openssl-e8b4PY/openssl-4.0.1=. 
-fstack-protector-strong -Wformat -Werror=format-security 
-fno-stack-clash-protection 
-fdebug-prefix-map=/build/openssl-e8b4PY/openssl-4.0.1=/usr/src/openssl-4.0.1-1ubuntu3
 -DB_ENDIAN -DOPENSSL_PIC -DZLIB -DZSTD -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=3
CPUINFO: 
OPENSSL_s390xcap=stfle:0xfbfffffbfeffff7c:0xffdee00000000000:0xff36efd800000000:0x0:kimd:0xf0000000fc000000:0x4000000000000000:klmd:0xf0000000fc000000:0x0:km:0xf070383800002828:0x0:kmc:0xf070383800000000:0x1000000000000000:kmac:0xf070383800000000:0x0:kmctr:0xf070383800000000:0x0:kmo:0xf070383800000000:0x0:kmf:0xf070383800000000:0x0:prno:0x9000000000000000:0xa000:kma:0x8000383800000000:0x0:pcc:0xf070383800002828:0xe0c0c00000000000:kdsa:0xf070700088888800:0x0
                               keygen     signs    verify keygens/s    sign/s  
verify/s
                  ML-DSA-44 0.000168s 0.001127s 0.000207s    5936.9     887.7   
 4833.0
                  ML-DSA-65 0.000287s 0.001790s 0.000315s    3489.0     558.7   
 3170.1
                  ML-DSA-87 0.000416s 0.002072s 0.000482s    2405.9     482.7   
 2075.7

# patched 4.0.1-1ubuntu4

ubuntu@z15lp06:~$ apt-cache policy openssl libssl4 libssl-dev
openssl:
  Installed: 4.0.1-1ubuntu4
  Candidate: 4.0.1-1ubuntu4
  Version table:
 *** 4.0.1-1ubuntu4 100
        100 /var/lib/dpkg/status
     4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
libssl4:
  Installed: 4.0.1-1ubuntu4
  Candidate: 4.0.1-1ubuntu4
  Version table:
 *** 4.0.1-1ubuntu4 100
        100 /var/lib/dpkg/status
     4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
libssl-dev:
  Installed: 4.0.1-1ubuntu4
  Candidate: 4.0.1-1ubuntu4
  Version table:
 *** 4.0.1-1ubuntu4 100
        100 /var/lib/dpkg/status
     4.0.1-1ubuntu3 500
        500 http://ports.ubuntu.com/ubuntu-ports stonking/main s390x Packages
ubuntu@z15lp06:~$ taskset -c 0 openssl speed -seconds 10 ml-dsa-44 ml-dsa-65 
ml-dsa-87
Doing ML-DSA-44 keygen ops for 10s: 59887 ML-DSA-44 signature keygen ops in 
9.98s
Doing ML-DSA-44 signs ops for 10s: 9003 ML-DSA-44 signature sign ops in 10.00s
Doing ML-DSA-44 verify ops for 10s: 48418 ML-DSA-44 signature verify ops in 
10.00s
Doing ML-DSA-65 keygen ops for 10s: 34999 ML-DSA-65 signature keygen ops in 
10.00s
Doing ML-DSA-65 signs ops for 10s: 5622 ML-DSA-65 signature sign ops in 10.00s
Doing ML-DSA-65 verify ops for 10s: 32060 ML-DSA-65 signature verify ops in 
9.99s
Doing ML-DSA-87 keygen ops for 10s: 24180 ML-DSA-87 signature keygen ops in 
10.00s
Doing ML-DSA-87 signs ops for 10s: 4834 ML-DSA-87 signature sign ops in 9.99s
Doing ML-DSA-87 verify ops for 10s: 20682 ML-DSA-87 signature verify ops in 
10.00s
version: 4.0.1
built on: Thu Aug 13 14:37:11 2026 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall 
-fzero-call-used-regs=used-gpr -Wa,--noexecstack -g -O2 
-Werror=implicit-function-declaration -mbackchain 
-ffile-prefix-map=/build/openssl-NdV9JV/openssl-4.0.1=. 
-fstack-protector-strong -Wformat -Werror=format-security 
-fno-stack-clash-protection 
-fdebug-prefix-map=/build/openssl-NdV9JV/openssl-4.0.1=/usr/src/openssl-4.0.1-1ubuntu4
 -DB_ENDIAN -DOPENSSL_PIC -DZLIB -DZSTD -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=3
CPUINFO: 
OPENSSL_s390xcap=stfle:0xfbfffffbfeffff7c:0xffdee00000000000:0xff36efd800000000:0x0:kimd:0xf0000000fc000000:0x4000000000000000:klmd:0xf0000000fc000000:0x0:km:0xf070383800002828:0x0:kmc:0xf070383800000000:0x1000000000000000:kmac:0xf070383800000000:0x0:kmctr:0xf070383800000000:0x0:kmo:0xf070383800000000:0x0:kmf:0xf070383800000000:0x0:prno:0x9000000000000000:0xa000:kma:0x8000383800000000:0x0:pcc:0xf070383800002828:0xe0c0c00000000000:kdsa:0xf070700088888800:0x0
                               keygen     signs    verify keygens/s    sign/s  
verify/s
                  ML-DSA-44 0.000167s 0.001111s 0.000207s    6000.7     900.3   
 4841.8
                  ML-DSA-65 0.000286s 0.001779s 0.000312s    3499.9     562.2   
 3209.2
                  ML-DSA-87 0.000414s 0.002067s 0.000484s    2418.0     483.9   
 2068.2

As one can see there are only minimal improvements (close to noise, but at 
least no regressions).
I did multiple test runs, with reboot before (cold cache), three in a row (hot 
caches), but the difference was negligible.

There are less performance improvements than I assumed, especially after having 
seen Ravi's results on a different platform:
https://code.launchpad.net/~ravi-sharma/ubuntu/+source/openssl/+git/openssl/+merge/509495/comments/1387077

But Timo/Boris, is this a level of improvements that you expected?

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2138632

Title:
  [26.10 FEAT] [SEC2555] openSSL: optimize ML-DSA for the s390x
  architecture

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2138632/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to