WAS/JVM(공통)

[Tips] HP JVM에서 시스템 시간 정확히 불러오는 옵션

투칼론 2018. 4. 24. 20:41
반응형
JDK 1.3.1 이전 버전에는 JVM에서 시스템 시간을 필요 시에 매번 시스템 콜을 통해 시간을 가져와서 성능 이슈가 발생하었다. 

이를 개선 하기 위해서 JVM이 처음 기동 시에 gettimeofday()라는 시스템 콜을 통해 시스템 시간을 가져온 후, JVM 자체에서 계산하여 사용하였다. 이 방법은 성능은 개선되었으나, 정확성에 이슈가 발생할 수 있
다. 그래서 고도의 정확성을 필요로 하는 JAVA 애플리케이션을 위해 다음과 같은 2가지 옵션을 사용할 수 있다.

* -XX:+UseHighResolutionTimer : 초기값은 gettimeofday() 시스템 콜로 가져오고, 그 이후는 CPU 레지스터를 사용하여 시간을 유지한다. CPU 스케쥴링에 의해 정확성을 약간 떨어질 수 있다.

* -XX:+UseGetTimeOfDay : 시스템 시간이 필요한 경우, 매번 gettimeofday() 시스템 콜을 사용한다.



성능과 정확성을 만족시키기 위해서는 위의 2개 옵션을 아래와 같이 모두 비활성해야 한다.

* -XX:-UseHighResolutionTimer  -XX:-UseGetTimeOfDay

의미는 100mm 초마다 gettimeofday() 시스템 콜을 호출하여 시간을 동기화 한다.

[글참조] https://support.hpe.com/hpsc/doc/public/display?docId=mmr_kc-0115106