Add -XX:+UnlockDiagnosticVMOptions and -XX:+UseAESCTRIntrinsics#12251
Conversation
|
We should update the jvm.config in product tests and deployment.rst as well |
|
Also, please share TPC benchmark results here |
core/trino-server-rpm/src/main/resources/dist/config/jvm.config
Outdated
Show resolved
Hide resolved
921375a to
5d6bbc2
Compare
5d6bbc2 to
d8ac895
Compare
d8ac895 to
528b978
Compare
|
@sopel39 , your comments were addressed. |
|
#12253 links to openjdk/jdk11u-dev#410 where openjdk/jdk11u-dev#410 (review) may indicate why it is off by default. is it safe to turn on for all Trino users? |
|
@findepi
I think so, but please @radek-starburst verify. |
528b978 to
5dd9b96
Compare
|
@findepi This change is targeted for
This flag was disabled by default in a backport because of conservative approach (openjdk/jdk11u-dev#410). Moreover, after enabling According to: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
we just enable |
...resources/docker/presto-product-tests/conf/environment/multinode/multinode-worker-jvm.config
Outdated
Show resolved
Hide resolved
...uct-tests-launcher/src/main/resources/docker/presto-product-tests/conf/presto/etc/jvm.config
Outdated
Show resolved
Hide resolved
electrum
left a comment
There was a problem hiding this comment.
We’re about to update to JDK 17. If thus is only needed for the small set of users who are (1) on ARM64 and (2) using secure internal communication, then we shouldn’t add clutter and churn.
The documentation needs work as well, since this doesn’t affect most users. If we really cared, it could go on the secure internal communication page as a small note.
5dd9b96 to
e2cbc2a
Compare
@electrum This was motivated by the SSL communication overhead observed with S3 (hive.s3.ssl.enabled is enabled by default). Although secure internal comms might benefit from it, we didn't make this change for that. |
|
This is the first mention of S3. If that’s the primary motivation, why is the PR description so vague? Drop the PR links and remove the TODOs everywhere as they add clutter and look bad. Simplify the description everywhere to
The extra details aren’t useful to end users, especially in the documentation. The JDK bug number is sufficient to Google or for anyone who cares about this sort of thing, without looking junky. Anyone else won’t care. |
e2cbc2a to
c579d0a
Compare
@electrum |
losipiuk
left a comment
There was a problem hiding this comment.
LGTM.
As for the release notes you can maybe go with sth like:
Update default JVM options to improve network communication performance that uses AES on ARM64. Applicable to communication with S3 and others.
c579d0a to
051d232
Compare
electrum
left a comment
There was a problem hiding this comment.
Looks much better now. Thanks for making these changes.
This PR adds options -XX:+UnlockDiagnosticVMOptions and -XX:+UseAESCTRIntrinsics to the jvm.config files to enable intrinsic support for AES CTR/GCM on ARM64. It improves performance of network communication with S3 a lot on graviton instances. It's enabled in Java 18 by default, which is already released. Therefore risk is minimal. In latest Java (OpenJDK) versions the performance of AES CTR/GCM for AARCH64 was significally improved and it was backported to OpenJDK 11. Backport PR: openjdk/jdk11u-dev#410. Some additional explanation is here: aws/aws-graviton-getting-started#110 (comment) The original OpenJDK issue is here: https://bugs.openjdk.java.net/browse/JDK-8267993 To use that backport we need to enable it explicitly by enabling -XX:+UnlockDiagnosticVMOptions and -XX:+UseAESCTRIntrinsics. It was not enabled by default in the backport because of conservative approach.
051d232 to
a79f50e
Compare
Description
This PR adds options
-XX:+UnlockDiagnosticVMOptionsand-XX:+UseAESCTRIntrinsicsto thecore/docker/default/etc/jvm.configandcore/trino-server-rpm/src/main/resources/config/jvm.configto enable intrinsic support forAES CTR/GCMonARM64.This is motivated by the SSL communication overhead observed with S3.
It is a kind of improvement.
n-technical end user or system administrator?
We make cryptography stuff (TLS) faster on ARM64 architectures by configuration JVM.
Documentation
( ) No documentation is needed.
( x) Sufficient documentation is included in this PR.
( ) Documentation PR is available with #prnumber.
( ) Documentation issue #issuenumber is filed, and can be handled later.
Release notes
I do not know whether we should put that information in release notes.
TPC(DS/H) benchmarks result:
tpcds_tpch_benchmark.pdf