<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>


<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<p class="details" style="font-style: italic; color: #777;">
<a href="https://gitlab.com/bjacke">Björn Jacke</a> created an issue:
</p>
<div></div>
<p dir="auto">the AES performance of GnuTLS is quite bad compared to openssl on AIX on POWER. The POWER architecture has AES instruction and they the shipped openssl version makes use of this obviously, here are the aes gcm/ccm benchmark numbers for openssl on AIX 7.1 on a single core POWER9 machine:</p>
<h1 dir="auto">
<a id="user-content-openssl-speed-elapsed-evp-aes-128-ccm" class="anchor" href="#openssl-speed-elapsed-evp-aes-128-ccm" aria-hidden="true"></a>openssl speed -elapsed -evp aes-128-ccm</h1>
<p dir="auto">...
options:bn(64,32) rc4(ptr,char) des(idx,cisc,2,long) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include  -DOPENSSL_THREADS -qthreaded -D_THREAD_SAFE -DDSO_DLFCN -DHAVE_DLFCN_H -DSSL_ALLOW_ADH -DAIXSSL_IBM_VERSION=1.0.2.1100 -q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DVPAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-ccm     230501.53k   931205.48k  3716121.69k 14873766.91k 119393654.10k</p>
<h1 dir="auto">
<a id="user-content-openssl-speed-elapsed-evp-aes-128-gcm" class="anchor" href="#openssl-speed-elapsed-evp-aes-128-gcm" aria-hidden="true"></a>openssl speed -elapsed -evp aes-128-gcm</h1>
<p dir="auto">options:bn(64,32) rc4(ptr,char) des(idx,cisc,2,long) aes(partial) blowfish(idx)
compiler: cc -I. -I.. -I../include  -DOPENSSL_THREADS -qthreaded -D_THREAD_SAFE -DDSO_DLFCN -DHAVE_DLFCN_H -DSSL_ALLOW_ADH -DAIXSSL_IBM_VERSION=1.0.2.1100 -q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DVPAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-gcm     227103.28k   545682.50k  1579801.94k  2419030.70k  2795500.89k</p>
<p dir="auto">The GnuTLS numbers are <em>magnitudes</em> lower:</p>
<h1 dir="auto">
<a id="user-content-gnutls-cli-benchmark-tls-ciphers" class="anchor" href="#gnutls-cli-benchmark-tls-ciphers" aria-hidden="true"></a>gnutls-cli --benchmark-tls-ciphers</h1>
<p dir="auto">Testing throughput in cipher/MAC combinations (payload: 1400 bytes)
AES-128-GCM - TLS1.2  7.18 MB/sec
AES-128-GCM - TLS1.3  12.57 MB/sec
AES-128-CCM - TLS1.2  14.71 MB/sec
AES-128-CCM - TLS1.3  14.64 MB/sec
CHACHA20-POLY1305 - TLS1.2  17.14 MB/sec
CHACHA20-POLY1305 - TLS1.3  16.97 MB/sec
AES-128-CBC - TLS1.0  14.48 MB/sec
CAMELLIA-128-CBC - TLS1.0  7.94 MB/sec</p>
<p dir="auto">Testing throughput in cipher/MAC combinations (payload: 16384 bytes)
AES-128-GCM - TLS1.2  13.30 MB/sec
AES-128-GCM - TLS1.3  13.22 MB/sec
AES-128-CCM - TLS1.2  15.67 MB/sec
AES-128-CCM - TLS1.3  15.61 MB/sec
CHACHA20-POLY1305 - TLS1.2  18.59 MB/sec
CHACHA20-POLY1305 - TLS1.3  18.47 MB/sec
AES-128-CBC - TLS1.0  16.12 MB/sec
CAMELLIA-128-CBC - TLS1.0  8.38 MB/sec</p>
<p dir="auto">Would it be possible to get to get the improvements that openssl has also to GnuTLS? IBM might be interested to push that improvement together with Red Hat also for the Linux PPC architecture and the result might be beneficial for Linux and AIX in the end.</p>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #777;">

<br>
Reply to this email directly or <a href="https://gitlab.com/gnutls/gnutls/issues/853">view it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.com.
If you'd like to receive fewer emails, you can
<a href="https://gitlab.com/sent_notifications/c78ae22dceac19b7e8cfe8243d16ca17/unsubscribe">unsubscribe</a>
from this thread or
adjust your notification settings.
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Issue","url":"https://gitlab.com/gnutls/gnutls/issues/853"}}</script>


</p>
</div>
</body>
</html>