본문 바로가기

Java/JVM

[JVM] GC 벤치마크 결과 데이터

이번 장에서는 GC별로 벤치마크 결과 데이터를 정리한다.
용어에 대한 자세한 설명은 다루지 않는다.
분석에 필요한 대부분의 용어는 [JVM] GC 벤치마크 분석 포인트 (링크)에 적어두었다.


Serial GC

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: 4.94 gb (JVM에서 자동으로 설정한 값)
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,828
    • Error Count (Ratio): 75 (4.10%)
  • Average CPU Usage: 1.0% (User), 0.1% (System)
    • Core-1: 0.9% (User), 0.1% (System)
    • Core-2: 1.3% (User), 0.1% (System)
    • Core-3: 1.1% (User), 0.1% (System)
    • Core-4: 0.7% (User), 0.1% (System)
  • Max CPU Usage (최대치 5개의 평균): 10.72% (User)
  • Average Active Memory Usage (about): 1,270 mb
    • Cached (about): 3,700 mb
    • Buffers (about): 0 mb
    • Inactive (about): 3,245 mb
    • Active (about): 1,270 mb
      • Process Switch Per Second (최대치 5개의 평균): 1,575
      • Peak Usage: 206 mb
      • Young Generation: 69 mb
      • Old Generation: 44 mb
      • Meta Space: 93 mb
      • GC Throughput: 99.385%
      • Max Pause GC Time: 2 sec 308 ms
      • Total GC Count: 380
      • Average Pause GC Time: 64.1 ms
      • Full GC Count: 4
      • Average Full GC Time: 677.5 ms
      • Minor GC Count: 376
      • Average Minor GC Time: 57.53 ms
      • GC Duration Time Range:
      • 0 ~ 1,000 ms: 97.63% (371)
      • 1,000 ~ 2,000 ms: 0.79% (3)
      • 2,000 ~ 3,000 ms: 1.58% (6)

Parallel GC

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: 4.93 gb (JVM에서 자동으로 설정한 값)
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,827
    • Error Count (Ratio): 79 (4.32%)
  • Average CPU Usage: 1.15% (User), 0.125% (System)
    • Core-1: 0.8% (User), 0.1% (System)
    • Core-2: 0.9% (User), 0.1% (System)
    • Core-3: 1.9% (User), 0.2% (System)
    • Core-4: 1.0% (User), 0.1% (System)
  • Max CPU Usage (최대치 5개의 평균): 6.12% (User)
  • Average Active Memory Usage (about): 2,168 mb
    • Cached (about): 1,491 mb
    • Buffers (about): 0 mb
    • Inactive (about): 1,026 mb
    • Active (about): 1,270 mb
      • Process Switch Per Second (최대치 5개의 평균): 1,488
      • Peak Usage: 1.22 gb
      • Young Generation: 1.05 gb
      • Old Generation: 104 mb
      • Meta Space: 92.83 mb
      • GC Throughput: 99.976%
      • Max Pause GC Time: 160 ms
      • Total GC Count: 50
      • Average Pause GC Time: 21.6 ms
      • Full GC Count: 4
      • Average Full GC Time: 92.5 ms
      • Minor GC Count: 46
      • Average Minor GC Time: 15.43 ms
      • GC Duration Time Range:
      • 0 ~ 100 ms: 96.0% (48)
      • 1,000 ~ 2,000 ms: 4.0% (2)

Parallel Old GC

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: 4.93 gb (JVM에서 자동으로 설정한 값)
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,831
    • Error Count (Ratio): 70 (3.82%)
  • Average CPU Usage: 1.15% (User), 0.125% (System)
    • Core-1: 1.3% (User), 0.1% (System)
    • Core-2: 2.0% (User), 0.2% (System)
    • Core-3: 1.5% (User), 0.1% (System)
    • Core-4: 1.7% (User), 0.2% (System)
  • Max CPU Usage (최대치 5개의 평균): 5.26%
  • Average Active Memory Usage (about): 2,319 mb
    • Cached (about): 1,593 mb
    • Buffers (about): 0 mb
    • Inactive (about): 1,139 mb
    • Active (about): 2,319 mb
      • Process Switch Per Second (최대치 5개의 평균): 1,829
      • Peak Usage: 1.37 gb
      • Young Generation: 1.18 gb
      • Old Generation: 122 mb
      • Meta Space: 92.85 mb
      • GC Throughput: 99.969%
      • Max Pause GC Time: 190 ms
      • Total GC Count: 50
      • Average Pause GC Time: 21.6 ms
      • Full GC Count: 4
      • Average Full GC Time: 100 ms
      • Minor GC Count: 46
      • Average Minor GC Time: 15.65 ms
      • GC Duration Time Range:
      • 0 ~ 100 ms: 96.0% (48)
      • 1,000 ~ 2,000 ms: 4.0% (2)

CMS

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: 3.84 gb (JVM에서 자동으로 설정한 값)
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,831
    • Error Count (Ratio): 92 (5.02%)
  • Average CPU Usage: 1.45% (User), 0.125% (System)
    • Core-1: 1.2% (User), 0.1% (System)
    • Core-2: 1.2% (User), 0.1% (System)
    • Core-3: 1.3% (User), 0.1% (System)
    • Core-4: 2.1% (User), 0.2% (System)
  • Max CPU Usage (최대치 5개의 평균): 9.58% (User)
  • Average Active Memory Usage (about): 1,407 mb
    • Cached (about): 1,415 mb
    • Buffers (about): 0 mb
    • Inactive (about): 960 mb
    • Active (about): 1,407 mb
      • Process Switch Per Second (최대치 5개의 평균): 1,733
      • Peak Usage: 335.73 mb
      • Young Generation: 74.38 mb
      • Old Generation: 268.05 mb
      • GC Throughput: 99.902%
      • Pause GC Total Time: 4 sec 10 ms
      • Pause GC Max Time: 70 ms
      • Pause GC Average Time: 9.13 ms
      • Concurrent GC Total Time: 45 sec 260 ms
      • Concurrent GC Max Time: 5 sec 100ms
      • Concurrent GC Average Time: 696 ms
      • GC Duration Time Range:
      • 0 ~ 10 ms: 82.69% (363)
      • 10 ~ 20 ms: 10.93% (48)
      • 20 ~ 30 ms: 3.42% (15)
      • 30 ~ 40 ms: 0.46% (2)
      • 50 ~ 60 ms: 0.68% (3)
      • 60 ~ 70 ms: 1.37% (6)
      • 70 ~ 80 ms: 0.46% (2)

G1GC

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: 3.85 gb (JVM에서 자동으로 설정한 값)
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,827
    • Error Count (Ratio): 87 (4.76%)
  • Average CPU Usage: 5.925% (User), 0.375% (System)
    • Core-1: 6.1% (User), 0.4% (System)
    • Core-2: 5.6% (User), 0.4% (System)
    • Core-3: 5.6% (User), 0.3% (System)
    • Core-4: 6.3% (User), 0.4% (System)
  • Max CPU Usage (최대치 5개의 평균): 52.1% (User)
  • Average Active Memory Usage (about): 5,050 mb
    • Cached (about): 10,225 mb
    • Buffers (about): 0 mb
    • Inactive (about): 10,000 mb
    • Active (about): 5,050 mb
      • Process Switch Per Second (최대치 5개의 평균): 20,694
      • Peak Usage: 3.04 gb
      • GC Throughput: 98.924%
      • Pause GC Total Time: 37 sec 299 ms
      • Pause GC Max Time: 375 ms
      • Pause GC Average Time: 58.1 ms
      • Concurrent GC Total Time: 5 min 8 sec 227 ms
      • Concurrent GC Max Time: 52 sec 175ms
      • Concurrent GC Average Time: 5 sec 224 ms
      • GC Duration Time Range:
      • 0 ~ 100 ms: 76.01% (488)
      • 100 ~ 200 ms: 20.56% (132)
      • 200 ~ 300 ms: 2.96% (19)
      • 300 ~ 400 ms: 0.47% (3)

ZGC

ZGC의 경우 추출된 데이터가 많지않다. 다른 GC와 다르게 추출되지 않은 데이터는 null로 표기하였다.
실제로 사용하기 위한 분석이 아닌 앞으로 이런 GC가 상용화 되겠구나정도로 살펴보도록 한다.

  • Instance: m5.xlarge (vCPU: 4, Memory: 16 gb)
  • Allocated Heap: null gb
  • Request Throughput: 0.51 Transactions/Seconds
    • Total Request Count: 1,828
    • Error Count (Ratio): 87 (4.76%)
  • Average CPU Usage: 6.55% (User), 0.45% (System)
    • Core-1: 6.6% (User), 0.4% (System)
    • Core-2: 7.0% (User), 0.5% (System)
    • Core-3: 6.6% (User), 0.5% (System)
    • Core-4: 6.0% (User), 0.4% (System)
  • Max CPU Usage (최대치 5개의 평균): 57.52% (User)
  • Average Active Memory Usage (about): 3,950 mb
    • Cached (about): 6,981 mb
    • Buffers (about): 0 mb
    • Inactive (about): 4,050 mb
    • Active (about): 3,950 mb
      • Process Switch Per Second (최고점 5개의 평균): 14,999
      • Peak Usage: 3.99 gb
      • GC Throughput: null
      • Pause GC Total Time: null
      • Pause GC Max Time: null
      • Pause GC Average Time: null
      • Concurrent GC Total Time: null
      • Concurrent GC Max Time: null
      • Concurrent GC Average Time: null
      • GC Duration Time Range: null

'Java > JVM' 카테고리의 다른 글

[JVM] Stack & Frame  (0) 2022.02.28
[JVM] GC 벤치마크 결과  (0) 2022.01.23
[JVM] GC 벤치마크 분석 포인트  (0) 2022.01.23
[JVM] GC 벤치마크 개요  (0) 2021.12.23
[JVM] GC 알고리즘 종류  (0) 2021.12.02