콘텐츠로 이동

Semeru

Semeru는 IBM이 제공하는 JDK 배포판으로, HotSpot JVM이 아니라 OpenJ9 JVM을 쓴다.

OpenJ9는 Java 가상 머신 규격을 따르면서 독자적으로 구현하고 새로 설계한 JVM이다. HotSpot JVM의 G1GC, ZGC와는 다른 독자적인 메모리 관리 방식과 가비지 컬렉션 전략을 갖고 있다.

Paper와 그 포크에서 Semeru를 쓰려면 내장 Spark를 꺼야 한다.

config/paper-global.yml에서 다음과 같이 설정한다.

spark:
enabled: false

방법 2: 플러그인 버전 Spark 사용

섹션 제목: “방법 2: 플러그인 버전 Spark 사용”

JVM 시작 인자를 추가한다.

-Dpaper.preferSparkPlugin=true

서버 코어가 내장 버전 대신 Spark 플러그인을 우선 쓰게 한다.

-XX:+IdleTuningGcOnIdle -XX:+UseAggressiveHeapShrink -XX:-OmitStackTraceInFastThrow -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -Xshareclasses:allowClasspaths -Xshareclasses:cacheDir=./cache -Xaot -XX:+UseCompressedOops -XX:ObjectAlignmentInBytes=256 -Xshareclasses -XX:SharedCacheHardLimit=800M -Xtune:virtualized -XX:+TieredCompilation -XX:InitialTenuringThreshold=5 -Dlog4j2.formatMsgNoLookups=true -XX:-DisableExplicitGC

OpenJ9는 HotSpot의 -XX:+UseG1GC나 -XX:+UseZGC 대신 -Xgcpolicy 인자로 가비지 컬렉션 정책을 지정한다.

대부분의 Minecraft 서버 상황에 맞는다. 특히 수명이 짧은 객체가 많은 트랜잭션성 애플리케이션에 적합하다.

-Xgcpolicy:gencon
그 밖의 정책

큰 힙(64비트 전용)에 적합하다. 멈춤 시간을 고르게 하고 단편화를 줄인다.

-Xgcpolicy:balanced

평균 멈춤 시간을 최적화한다. 지연에 민감한 애플리케이션에 적합하다.

-Xgcpolicy:optavgpause

처리량을 최적화한다. 긴 GC 멈춤을 견딜 수 있는 애플리케이션에 적합하다.

-Xgcpolicy:optthruput

예측 가능한 짧은 멈춤 시간을 제공한다(Linux x86-64와 AIX 전용).

-Xgcpolicy:metronome