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