Skip to content

Commit

Permalink
jvm11 options fix
Browse files Browse the repository at this point in the history
  • Loading branch information
BugraEryilmaz committed May 20, 2024
1 parent 0481a12 commit 1ba83e7
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 40 deletions.
1 change: 1 addition & 0 deletions benchmarks/data-serving/server/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ FROM cloudsuite/cassandra:4.1.0
RUN apt update && apt install -y --no-install-recommends python3-yaml && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.py /
COPY jvm11-server.options /etc/cassandra/jvm11-server.options

ENTRYPOINT ["/docker-entrypoint.py"]

Expand Down
40 changes: 0 additions & 40 deletions benchmarks/data-serving/server/docker-entrypoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ def get_ip():
if not path.exists(f"{CASSANDRA_CONFIG}/jvm-server.options.bak"):
shutil.copy(f"{CASSANDRA_CONFIG}/jvm-server.options", f"{CASSANDRA_CONFIG}/jvm-server.options.bak")

if not path.exists(f"{CASSANDRA_CONFIG}/jvm11-server.options.bak"):
shutil.copy(f"{CASSANDRA_CONFIG}/jvm11-server.options", f"{CASSANDRA_CONFIG}/jvm11-server.options.bak")


# Now, modify the cassandra.yaml
with open(f"{CASSANDRA_CONFIG}/cassandra.yaml") as f:
config = yaml.safe_load(f)
Expand Down Expand Up @@ -102,41 +98,5 @@ def get_ip():
with open(f"{CASSANDRA_CONFIG}/jvm-server.options", "w") as f:
f.writelines(jvm_options)

# Then, process the jvm11.options
with open(f"{CASSANDRA_CONFIG}/jvm11-server.options") as f:
jvm11_options = f.readlines()

for idx, l in enumerate(jvm11_options):
# Disable CMS Garbage Collection
if l.startswith("-XX:+UseConcMarkSweepGC"):
jvm11_options[idx] = ""
if l.startswith("-XX:+CMSParallelRemarkEnabled"):
jvm11_options[idx] = ""
if l.startswith("-XX:SurvivorRatio"):
jvm11_options[idx] = ""
if l.startswith("-XX:MaxTenuringThreshold"):
jvm11_options[idx] = ""
if l.startswith("-XX:CMSInitiatingOccupancyFraction"):
jvm11_options[idx] = ""
if l.startswith("-XX:+UseCMSInitiatingOccupancyOnly"):
jvm11_options[idx] = ""
if l.startswith("-XX:CMSWaitDuration"):
jvm11_options[idx] = ""
if l.startswith("-XX:+CMSParallelInitialMarkEnabled"):
jvm11_options[idx] = ""
if l.startswith("-XX:+CMSEdenChunksRecordAlways"):
jvm11_options[idx] = ""
if l.startswith("-XX:+CMSClassUnloadingEnabled"):
jvm11_options[idx] = ""
# Add G1 Garbage Collection
jvm11_options.append("-XX:+UseG1GC\n")
jvm11_options.append("-XX:+ParallelRefProcEnabled\n")
# Add PreserveFramePointer for flamegraph
jvm11_options.append("-XX:+PreserveFramePointer\n")

# Write it back
with open(f"{CASSANDRA_CONFIG}/jvm11-server.options", "w") as f:
f.writelines(jvm11_options)

os.execvp("cassandra", ["cassandra", "-R", "-f"])

108 changes: 108 additions & 0 deletions benchmarks/data-serving/server/jvm11-server.options
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
###########################################################################
# jvm11-server.options #
# #
# See jvm-server.options. This file is specific for Java 11 and newer. #
###########################################################################

#################
# GC SETTINGS #
#################



### CMS Settings
#-XX:+UseConcMarkSweepGC
#-XX:+CMSParallelRemarkEnabled
#-XX:SurvivorRatio=8
#-XX:MaxTenuringThreshold=1
#-XX:CMSInitiatingOccupancyFraction=75
#-XX:+UseCMSInitiatingOccupancyOnly
#-XX:CMSWaitDuration=10000
#-XX:+CMSParallelInitialMarkEnabled
#-XX:+CMSEdenChunksRecordAlways
## some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541
#-XX:+CMSClassUnloadingEnabled



### G1 Settings
## Use the Hotspot garbage-first collector.
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled

#
## Have the JVM do less remembered set work during STW, instead
## preferring concurrent GC. Reduces p99.9 latency.
#-XX:G1RSetUpdatingPauseTimePercent=5
#
## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
## 200ms is the JVM default and lowest viable setting
## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml.
#-XX:MaxGCPauseMillis=500

## Optional G1 Settings
# Save CPU time on large (>= 16GB) heaps by delaying region scanning
# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
#-XX:InitiatingHeapOccupancyPercent=70

# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
# Otherwise equal to the number of cores when 8 or less.
# Machines with > 10 cores should try setting these to <= full cores.
#-XX:ParallelGCThreads=16
# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
# Setting both to the same value can reduce STW durations.
#-XX:ConcGCThreads=16


### JPMS

-Djdk.attach.allowAttachSelf=true
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
--add-exports java.sql/java.sql=ALL-UNNAMED

--add-opens java.base/java.lang.module=ALL-UNNAMED
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
--add-opens java.base/jdk.internal.math=ALL-UNNAMED
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED


### GC logging options -- uncomment to enable

# Java 11 (and newer) GC logging options:
# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
#-Xlog:gc=info,heap*=trace,age*=debug,safepoint=info,promotion*=trace:file=/var/log/cassandra/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760

# Notes for Java 8 migration:
#
# -XX:+PrintGCDetails maps to -Xlog:gc*:... - i.e. add a '*' after "gc"
# -XX:+PrintGCDateStamps maps to decorator 'time'
#
# -XX:+PrintHeapAtGC maps to 'heap' with level 'trace'
# -XX:+PrintTenuringDistribution maps to 'age' with level 'debug'
# -XX:+PrintGCApplicationStoppedTime maps to 'safepoint' with level 'info'
# -XX:+PrintPromotionFailure maps to 'promotion' with level 'trace'
# -XX:PrintFLSStatistics=1 maps to 'freelist' with level 'trace'

### Netty Options

# On Java >= 9 Netty requires the io.netty.tryReflectionSetAccessible system property to be set to true to enable
# creation of direct buffers using Unsafe. Without it, this falls back to ByteBuffer.allocateDirect which has
# inferior performance and risks exceeding MaxDirectMemory
-Dio.netty.tryReflectionSetAccessible=true

### Preserve Frame pointer for flamegraph
-XX:+PreserveFramePointer

# The newline in the end of file is intentional


0 comments on commit 1ba83e7

Please sign in to comment.