Heart's Develop Inside (WP)

Heart's Develop Blog in WordPress.com

Java Performance Tuning white paper 정리 – (3) Alternative Garbage Collectors

leave a comment »

이전 포스트

@ Java Performance Tuning white paper 정리 – (1) The Java Heap
@ Java Performance Tuning white paper 정리 – (2) Default Garbage Collection Algorithms

Parallel Copy GC (ParNewGC)

  • Eden Space 를 multi thread 로 정리한다
  • -XX:+UseParNewGC 로 활성화
  • 사용할 thread 수는 -XX:ParallelGCThreads 로 결정 (기본값은 CPU core 수)
  • 장점 : Scavenge GC(default Copying Collector) 처리 속도를 비약적으로 상승
  • 단점 : thread 수를 과하게 늘릴 경우 thread contention(경합) 에 의해 성능 저하가 발생한다
    • (전체 VM 에 대해 ParallelGCThreads 의 총합이 CPU core 수를 넘기지 않아야 한다)
  • 특히 Application Server 는 최소 3개, 보통 4개 이상의 JVM 을 사용하므로, 총합에 대한 관리가 필요하다

Concurrent Mark-and-Sweep (CMS)

  • CMS Collector 는 Old Gen 을 위한 병렬 collector
  • -XX:+UseConcMarkSweepGC 로 활성화
  • GC 과정을 4개의 phase 로 진행
    1. initial marking
    2. concurrent marking
    3. second remarking
    4. concurrent sweeping
  • 장점 : Full GC 및 Out Of Memory Error 를 피하는 데 좋다
  • 단점 : CPU 비용이 비싸다
    • concurrent marking phase 에서 하나 이상의 CPU core 가 할애되어야 함
    • concurrent sweeping phase 에서 하나의 CPU core 가 할애되어야 함
  • single (serial) 과 concurrent 비교 => pause 가 짧아지고 많은 phase 가 multi-thread 로 동작
  • CMS 는 initial mark 와 remark phase 에서 stop-the-world pause 발생
    • -XX:+CMSParallelRemarkEnabled 와 같이 사용하길 권장함
      • Remark phase 를 multi-thread 로 동작할 수 있음
  • CMS 는 4 CPU core 보다 더 많은 core 가 꽂힌 대형 시스템에서 OOME 를 주기적으로 경험하는 경우에만 사용하는 것이 좋다
  • CMS 알고리즘이 효율적으로 동작하기 위해 -Xmn 은 전체 heap 의 1/4 로 설정하는 것이 좋다
  • CMS 를 켜면 -XX:+UseParNewGC 가 같이 켜지므로, ParallelGCThreads 를 관리해 주어야 한다

 

Advertisements

Written by kabhwan

2013년 7월 18일 , 시간: 11:07 오전

Java에 게시됨

Tagged with , ,

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: