Skip to content

Reduce TLS handshake contention on SSLCertContext#13098

Open
c-taylor wants to merge 1 commit intoapache:masterfrom
c-taylor:ssl-cert-ctx-mutex
Open

Reduce TLS handshake contention on SSLCertContext#13098
c-taylor wants to merge 1 commit intoapache:masterfrom
c-taylor:ssl-cert-ctx-mutex

Conversation

@c-taylor
Copy link
Copy Markdown

Replace std::mutex with ts::bravo::shared_mutex on SSLCertContext to allow true reader concurrency for getCtx() on the TLS handshake hot path. setCtx() (config reload only) takes an exclusive lock.

Memory trade-off: BRAVO uses 256 cache-line-aligned reader slots (~16 KB per mutex) vs ~40 bytes for std::mutex or ~56 bytes for std::shared_mutex on Linux. For 256 certificates this is ~4 MB (vs 10 KB / 14 KB), a modest cost relative to the SSL_CTX objects themselves but worth noting for deployments with many certs.

Replace std::mutex with ts::bravo::shared_mutex on SSLCertContext
to allow true reader concurrency for getCtx() on the TLS handshake
hot path. setCtx() (config reload only) takes an exclusive lock.

Memory trade-off: BRAVO uses 256 cache-line-aligned reader slots
(~16 KB per mutex) vs ~40 bytes for std::mutex or ~56 bytes for
std::shared_mutex on Linux. For 256 certificates this is ~4 MB
(vs 10 KB / 14 KB), a modest cost relative to the SSL_CTX objects
themselves but worth noting for deployments with many certs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant