콘텐츠로 이동

Azul Zing

공통 인자(예: large page)는 써도 되지만, GC나 다른 최적화 인자를 직접 지정하지는 말자.

눈치챘겠지만 Zing은 워밍업 시간이 길다. ReadyNow가 이 문제를 해결해 준다.

ReadyNow를 켜려면 다음 명령줄 옵션을 추가한다. 두 <file>은 보통 같다.

-XX:ProfileLogIn=<file> Azul Platform Prime이 기존 프로필 로그의 정보를 쓰게 한다.

-XX:ProfileLogOut=<file> 이번 실행의 컴파일과 역최적화 결정을 기록한다.

이렇게 하면 애플리케이션을 실행할 때 프로필 로그가 자동으로 생성되거나 갱신된다. 이 로그는 다음 실행 때 쓰여 워밍업을 개선한다.

공식적으로는 모든 중요한 함수를 5만 번 실행해 두는 것을 추천한다.

C4는 Zing의 유일한 가비지 컬렉터로, OpenJDK에서 쓸 수 있는 다른 가비지 컬렉터를 대신한다.

-XX:+CompactStrings 옵션을 추가하면 메모리 사용량이 줄고, 문자열을 많이 다루는 애플리케이션의 성능이 오르며, 가비지 컬렉션에 쓰는 시간도 줄어든다.

-XX:FalconOptimizationLevel=3 옵션으로 더 높은 수준의 최적화를 얻을 수 있지만, 호환성 문제가 더 많이 생긴다.

-XX:+UseMultiTiering 옵션은 컴파일 단계를 여러 개 추가해서, 워밍업 속도, 컴파일러의 CPU 사용 시간, 최고 성능에 도달하는 시간 사이의 균형을 조정할 수 있게 한다.

시스템을 Zing에 더 잘 맞게 만들어 주는 도구로, 시스템 설정을 자동으로 최적화한다.

공식 설치 가이드

-XX:+UseZST로 켠다.

커밋된 Java 힙 크기를 동적으로 줄여, 컨테이너 환경에서 OOM 종료와 크래시로 이어지는 메모리 부족(OOM) 오류를 피한다.

-XX:+UseDefensiveHeapShrinking으로 켠다.

-XX:+FalconCompensateForIntelMCUForErratumSKX102는 Intel이 SKX102 오류 수정을 위해 배포한 마이크로코드 업데이트 이후 일부 시스템에서 생기는 성능 저하에 대응한다.

이 인자들은 테스트하지 않았다. 기록용으로만 남겨 둔다.

  • -XX:+UseSpecialHashSet 입력 컬렉션의 요소를 빈 HashSet에 자주 추가하는 특수한 HashSet 채우기 패턴에 대한 최적화를 켠다.
  • -XX:-OptimizeIdentityHashForDistribution System.identityHashCode()의 대체 구현을 켠다. 해시 계산 속도를 희생하는 대신 더 나은 객체 분포를 제공한다.