Reducing the duration of omrgc_spinlock_acquire calls for IBM watsonx.data developer version

Longer omrgc_spinlock_acquire calls slow down the performance of IBM® watsonx.data developer version.

IBM watsonx.data developer edition

Symptoms

When you run large workloads by using IBM watsonx.data developer version, the omrgc_spinlock_acquire call takes longer to complete, making IBM watsonx.data slower.

Resolving the problem

Customize the Java virtual machine (JVM) parameters such that omrgc_spinlock_acquire calls do not take a long time.
  1. Run the following command to create a directory inside the host location where IBM watsonx.data developer version is installed.
    mkdir -p /root/ibm-lh-dev/localstorage/volumes/infra/ibm-lh-presto-config
  2. Get the jvm.config file from the /opt/presto/etc directory inside the ibm-lh-presto container. Run the following command to copy the files from the container to the host location.
    docker cp ibm-lh-presto:/opt/presto/etc/jvm.config /root/ibm-lh-dev/localstorage/volumes/infra/ibm-lh-presto-config/jvm.config
  3. Update the jvm.config file to include the following JVM parameters:
    • -Xgc:tlhInitialSize=8096
    • -Xgc:tlhIncrementSize=16384
    • -Xgc:tlhMaximumSize=1048576
  4. Restart the ibm-lh-presto container by running the following command:
    /root/ibm-lh-dev/bin/stop_service ibm-lh-presto
    /root/ibm-lh-dev/bin/start_service ibm-lh-presto
  5. Verify the jvm.config settings by running the following command:
    -server
    
    -Xmx16G
    
    -XX:+UseG1GC
    
    -XX:G1HeapRegionSize=32M
    
    -XX:+UseGCOverheadLimit
    
    -XX:+ExplicitGCInvokesConcurrent
    
    -XX:+HeapDumpOnOutOfMemoryError
    
    -XX:+ExitOnOutOfMemoryError
    
    -XX:-UseBiasedLocking
    
    -XX:ReservedCodeCacheSize=256M
    
    -Djdk.nio.maxCachedBufferSize=2000000
    
    -Djdk.attach.allowAttachSelf=true
    
    -Duser.timezone=Etc/GMT
    
    -javaagent:/opt/presto/lib/jmx_prometheus_javaagent-0.18.0.jar=9090:/opt/presto/etc/jmx-exporter-config.yaml
    
    -javaagent:/opt/presto/etc/setvendor.zip
    
    -Djavax.net.ssl.trustStore=/mnt/infra/tls/truststore.jks
    
    -Djavax.net.ssl.trustStorePassword=changeit
    
    -Djavax.net.ssl.trustStoreType=jks
    
    -Xgc:tlhInitialSize=8096
    
    -Xgc:tlhIncrementSize=16384
    
    -Xgc:tlhMaximumSize=1048576