반응형
INTRO
JVM을 실행하면서 Large Page를 사용하는 경우가 극히 드물긴 하지만 TLB 누락 수가 늘어날 때 성능 저하 현상이 나타날 수도 있기 때문에 Large Page를 사용하기도 합니다.
이의 경우 OS Level에서 Hugepage를 설정하고 JVM에서도 Large Page(Huge Page)를 사용하는 설정을 해야됩니다.
OS에서 Huge Page 설정하는 방법은 아래의 링크를 참고 부탁드립니다.
JVM Large Page 설정 추가
설정하는 방법은 Tomcat 기준으로 setenv.sh 파일이나 catalina.sh 파일에 "-XX:+UseLargePages" 옵션만 추가해주면 됩니다. (JBoss에서는 env.sh 혹은 xml 파일 수정이 필요)
# vi /app/tomcat9/bin/setenv.sh
#!/bin/sh
#===========================================================
#Tomcat Setting
#===========================================================
CATALINA_HOME=/app/tomcat9
JAVA_HOME=`echo $(readlink -f /etc/alternatives/java) | sed -e 's/\/bin\/java//g'`
PATH=$PATH:$JAVA_HOME/bin:/bin:/sbin
LOG_DIR=$CATALINA_HOME/logs
export JAVA_HOME PATH CATALINA_HOME LOG_DIR
#===========================================================
#JVM Memory Setting
#===========================================================
CATALINA_OPTS="-server"
CATALINA_OPTS="${CATALINA_OPTS} -Xms2048m"
CATALINA_OPTS="${CATALINA_OPTS} -Xmx2048m"
CATALINA_OPTS="${CATALINA_OPTS} -XX:MetaspaceSize=1024m"
CATALINA_OPTS="${CATALINA_OPTS} -XX:MaxMetaspaceSize=1024m"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+UseLargePages"
#===========================================================
#GC, Heapdump Setting
#===========================================================
CATALINA_OPTS="${CATALINA_OPTS} -XX:+UseG1GC"
CATALINA_OPTS="${CATALINA_OPTS} -verbose:gc"
CATALINA_OPTS="${CATALINA_OPTS} -Xloggc:${LOG_DIR}/gc.log_`date +%Y%m%d%H%M%S`"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCDetails"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCTimeStamps"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCDateStamps"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+HeapDumpOnOutOfMemoryError"
CATALINA_OPTS="${CATALINA_OPTS} -XX:HeapDumpPath=${CATALINA_BASE}/logs/java_pid.hprof"
CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintAdaptiveSizePolicy"
설징이 완료되었으면 Tomcat을 기동합니다.
# /app/tomcat9/bin/startup.sh
HugePage 사용량을 확인합니다.
<HugePage 사용량 확인>
# grep HugePages_ /proc/meminfo
HugePages_Total: 70
HugePages_Free: 68
HugePages_Rsvd: 0
HugePages_Surp: 0
# numastat -cm |egrep -i "total|hugepages_"
Node 0 Node 1 Total
MemTotal 79500 64464 143964
HugePages_Total 35840 35840 71680
HugePages_Free 35840 33792 69632
HugePages_Surp 0 0 0
JVM Large Page 사용하지 않게 설정
만약 Hugepage를 사용하여 WAS를 기동하면 안되는 환경에서 "-XX:+UseLargePages" 옵션을 추가하지 않았는데 Hugepage가 사용되고 있다면 "-XX:-UseLargePages" 옵션을 추가하여 기동하면 JVM이 HugePage 사용하는 것을 방지할 수 있습니다
반응형
'WEB&WAS > Apache Tomcat' 카테고리의 다른 글
WAS) Tomcat Multi Instance 설치 스크립트 (0) | 2022.10.30 |
---|---|
WAS) Tomcat Multi Instance (1) - 구조 및 장점 (0) | 2022.10.24 |
WAS) Tomcat Instance(JVM) Setting (0) | 2022.03.08 |
WAS) 현재 사용중인 Heap Memory 크기 확인하기 (0) | 2022.02.15 |
WAS) systemctl을 이용해서 Tomcat 서비스 제어 (0) | 2022.01.04 |