Posts JVM Tunning 2
Post
Cancel

JVM Tunning 2

JVM Tunning 2


๐Ÿ’ฟ IBM JVM

optthruput GC

  • ์˜ต์…˜
    • -Xgcpolicy: optthuput
  • ์„ค๋ช…
    • default GC ์•Œ๊ณ ๋ฆฌ์ฆ˜.
    • mark-sweep-compact ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ STW๋กœ ์ผ์‹œ์ •์ง€๋จ.
    • application์ด ๋ณต์žกํ•ด์ง€๊ณ  ๊ทธ์— ๋”ฐ๋ผ heap์ด ์ปค์ง€๋ฉด GC ์ˆ˜ํ–‰์— ๋”ฐ๋ฅธ ๋ฉˆ์ถค์‹œ๊ฐ„๋„ ์ฆ๊ฐ€
  • ์žฅ์ 
    • Throughput์ด ํ–ฅ์ƒ
  • ๋‹จ์ 
    • STW๋กœ ์ธํ•œ Response Time ๊ฐ์†Œ

optavgpause GC

  • ์˜ต์…˜
    • -Xgcpolicy: optavgpause
  • ์„ค๋ช…
    • opthuput์˜ ๋‹ด์ ์ธ STW ์‹œ๊ฐ„์„ ๋ณด์™„ํ•˜๊ณ ์ž ํ•จ
    • GC๋ฅผ ์œ„ํ•œ Thread๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ concurrent mark๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ํ•˜์—ฌ ์‹ค์ œ GC๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ „์ฒด heap ์˜์—ญ์— ๋Œ€ํ•œ mark ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”์—†์ด sweep ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰
  • ์žฅ์ 
    • ์ „๋ฐ˜์ ์ธ response time์ด ํ–ฅ์ƒ๋จ
  • ๋‹จ์ 
    • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰)์ด ๊ฐ์†Œ

์œ„์˜ ๋‘˜์„ ํ™•์ธํ•˜์˜€์„ ๋•Œ, Throughput(์ฒ˜๋ฆฌ๋Ÿ‰)๊ณผ response time์€ ๋ฐ˜๋น„๋ก€๊ด€๊ณ„์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

gencon GC

  • ์˜ต์…˜
    • -Xgcpolicy:gencon
  • ์„ค๋ช…
    • sun JVM๊ณผ ๋™์ผํ•œ ๊ตฌ์กฐ
    • response time ๊ณผ throughput์„ ๋ชจ๋‘ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
    • Heap์„ Nursery Space ์™€ Tenured Space๋กœ ๊ตฌ์„ฑํ•˜๋ฉฐ Nursery Space ๋‚ด์— ๋‹ค์‹œ Allocate Space์™€ Survivor Space๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.
    • Nursery Space์˜ gc๋Š” minor gc๋กœ, Copy ๋ฐฉ์‹(Alive Object๋ฅผ Allocate Space์—์„œ Survivor Space๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ)
    • Tenured space์˜ gc๋Š” Full gc๋กœ Mark+Sweep+Commpaction์ด ์ˆ˜ํ–‰๋จ
  • ์žฅ์ 
    • response time๊ณผ throughput์ด ๋™์‹œ์— ํ–ฅ์ƒ๋จ. ๋‹จ ํŠœ๋‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ 
    • CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ

subpool GC

  • ์˜ต์…˜
    • -Xgcpolicy: subpool
  • ์„ค๋ช…
    • Java Heap์„ ์—ฌ๋Ÿฌ๊ฐœ์˜ sub poll๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉ
    • 16 CPU ์ด์ƒ์˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅ
    • Sum JVM์˜ Parallel GC์™€ ๋™์ผํ•œ ๋ฐฉ์‹

๐Ÿ’ฟ Sun HotSpot JVM

Serial GC

  • ์˜ต์…˜
    • -XX:+UseSerialGC
  • ์„ค๋ช…
    • Serial GC๋Š” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์ฝ”์–ด ๊ฐœ์ˆ˜๊ฐ€ ์ ์„ ๋•Œ ์ ํ•ฉํ•œ ๋ฐฉ์‹
    • ๋‹จ์ผ Thread๊ฐ€ GC๋ฅผ ์ˆ˜ํ–‰

Parallel GC

  • ์˜ต์…˜
    • -XX: +UseParallelGC
  • ์„ค๋ช…
    • Parallel GC๋Š” Serial GC์™€ ๊ธฐ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ™์Œ
    • Serial GC๋Š” ์ฒ˜๋ฆฌํ•˜๋Š” Thread๊ฐ€ ํ•˜๋‚˜์ธ ๊ฒƒ์— ๋น„ํ•ด Parallel GC๋Š” GC๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” Thread๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ž„
    • ๋”ฐ๋ผ์„œ ๋น ๋ฆ„ ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜๊ณ  ์ฝ”์–ด ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Parallel Old GC

  • ์˜ต์…˜
    • -XX: +UseParallelOldGC
  • ์„ค๋ช…
    • Parallel๊ณผ ๋น„๊ตํ•˜์—ฌ Old ์˜์—ญ์˜ GC ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ๋‹ค๋ฅด๋‹ค.
    • Mark-Summary-Compaction ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นจ
      • ์•ž์„œ GC๋ฅผ ์ˆ˜ํ–‰ํ•œ ์˜์—ญ์— ๋Œ€ํ•ด์„œ ๋ณ„๋„๋กœ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•œ๋‹ค๋Š” ์ ์—์„œ Mark-Sweep-Compaction ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Sweep ๋‹จ๊ณ„์™€ ๋‹ค๋ฆ„

CMS GC

  • ์˜ต์…˜
    • -XX: UseConcMarkSweepGC
  • ์„ค๋ช…
    • initial Mark > Concurrent Mark > Remark > Concurrent Sweep ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋จ
    • Concurrent Mark, Concurrent Sweep์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ Thread๊ฐ€ ์‹คํ–‰์ค‘์ธ ์ƒํƒœ์—์„œ ๋™์‹œ์— ์ง„ํ–‰๋จ
      • STW ์‹œ๊ฐ„์ด ์งง์Œ
    • ๋ชจ๋“  Application์˜ response time์ด ์ค‘์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์šฉ๋Ÿ‰ ๋†’์Œ
    • ๊ธฐ๋ณธ์ ์œผ๋กœ Compaction ์ž‘์—…์ด ์ œ๊ณต๋˜์ง€ ์•Š์Œ

G1GC

  • ์˜ต์…˜
    • -XX: +UseG1GC
  • ์„ค๋ช…
    • ๊ธฐ์กด JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ, Heap ์˜์—ญ์ด 1MB ~ 32MB์ด๋‚ด์˜ ๊ณ ์ •๋œ ํฌ๊ธฐ๋กœ 2000์—ฌ๊ฐœ ์˜์—ญ(Region)์œผ๋กœ ๋ถ„ํ• ๋˜์–ด ์žˆ์Œ
    • ๊ฐ Region์€ ๊ธฐ์กด JVM heap ์˜์—ญ์ด์—ˆ๋˜ New, Survivor, Old, Perm ์˜์—ญ์„ ๊ฐ๊ฐ ๋‹ด๋‹นํ•˜์ง€๋งŒ ๋™์ ์œผ๋กœ ์—ญํ• ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ
    • Region ์•ˆ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์ด ๋‹ค๋ฅธ Region์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์— ์˜ํ•ด์„œ ์ฐธ์กฐ๋˜๋Š”์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Region ๋‹จ์œ„๋กœ Live Object๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํ•ด๋‹น Region์ด ๋‹ค์ฐจ๋ฉด ์‚ด์•„์žˆ๋Š” object๋“ค์„ ๋‹ค๋ฅธ Region์œผ๋กœ copy ํ•œ ํ›„, ํ•ด๋‹น Region์„ ๋น„์›€

๐Ÿ’ฟ JVM Tunning Option

IBM JVM

  • -Xms
    • JVM ์‹œ์ž‘์‹œ heap size
  • -Xmx
    • ์ตœ๋Œ€ heap size
  • -Xmn, -Xmns, -Xmnx
    • New ์˜์—ญ์˜ ํฌ๊ธฐ(์ตœ์†Œ=์ตœ๋Œ€, ์ตœ์†Œ, ์ตœ๋Œ€)
  • -Xmo, -Xmos, -Xmox
    • Old ์˜์—ญ์˜ ํฌ๊ธฐ(์ตœ์†Œ=์ตœ๋Œ€, ์ตœ์†Œ, ์ตœ๋Œ€)
  • -Xdisableexplicitgc
    • System.gc()์— ์˜ํ•œ GC๋ฅผ ๋น„ํ™œ์„ฑํ™”
  • -Xgcthreads
    • Parallel GC ์ž‘์—…์„ ํ•  Thread ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •.
    • ๋งŒ์ผ ์—ฌ๋Ÿฌ Process๊ฐ€ CPU๋ฅผ ๋‚˜๋ˆ„์–ด ์“ฐ๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์ด ๊ฐ’์„ ๋‚ฎ์ถœ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • -Xloa
    • LOA(Large Object Area)๋ฅผ ์‚ฌ์šฉํ•  ์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •
    • Default๋Š” ํ™œ์„ฑํ™” ์ƒํƒœ
    • large object area๋Š” Heap Size์˜ 5%๋ฅผ ์ฐจ์ง€ํ•˜๋Š”๋ฐ AP์˜ ํŠน์„ฑ์ƒ ๋น„๊ต์  ํฐ ๊ฐ์ฒด(5MB)์ด์ƒ์˜ ์ƒ์„ฑ์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ์—๋Š” ์ด ์˜์—ญ์„ ๋Š˜๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • -Xloainitial, -Xloamaximum, -Xloaminimum
    • LOA์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ, ์ตœ๋Œ€ํฌ๊ธฐ, ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. 0~1 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.
  • -Xmaxe, -Xmine
    • Heap Expansion์ด ์ฆ๊ฐ€ํ•  ์ตœ๋Œ€/์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • -Xmaxf, -Xminf
    • Heap ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  Free Memory์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Default ๊ฐ’์€ 60%, 30%์ด๋‹ค.
      • Free Memory๊ฐ€ ์ „์ฒด Memory์˜ 60% ์ด์ƒ์ด ๋˜๋ฉด Heap Shrinkage๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ 
      • 30% ์ดํ•˜๋ฉด Heap Expansion์ด ๋ฐœ์ƒ

Sun HotSpot JVM

  • -Xms
    • JVM ์‹œ์ž‘ ์‹œ Heap Size
  • -Xms
    • ์ตœ๋Œ€ Heap Size
  • -XX: New Ratio
    • New ์˜์—ญ๊ณผ Old ์˜์—ญ์˜ ๋น„์œจ
  • -XX: New Size
    • New ์˜์—ญ์˜ ํฌ๊ธฐ
  • -XX: MaxNewSize
    • New generation์˜ heap size ์ตœ๋Œ€๊ฐ’์„ ์„ค์ •
  • -XX: SurvivorRatio
    • Eden ์˜์—ญ๊ณผ Survivor ์˜์—ญ์˜ ๋น„์œจ
  • -Xcompactgc
    • ๋ชจ๋“  garbage collections(system ๋˜๋Š” global)์— ๋Œ€ํ•˜์—ฌ ์••์ถ•์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
  • -XnoCompactgc
    • ๋ชจ๋“  garbage collections(system ๋˜๋Š” global)์— ๋Œ€ํ•˜์—ฌ ์••์ถ•์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
  • -Xcompactexplicitgc
    • System.gc()๊ฐ€ ํ˜ธ์ถœ ๋  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  GC ์‹œ์Šคํ…œ์—์„œ ์••์ถ•์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
  • -Xnocompactexplicitgc
    • System.gc()๊ฐ€ ํ˜ธ์ถœ์— ์˜ํ•œ ์••์ถ•์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ.
    • ์••์ถ•์€ -Xcompactgc๋ฅผ ๋ช…์‹œํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” compaction triggers๋ฅผ ๋งŒ๋‚˜๋ฉด global garbage collections์—์„œ ๋ฐœ์ƒ
  • -Xnoclassgc
    • Class garbage collection์„ ๋น„ํ™œ์„ฑํ™” ํ•œ๋‹ค.
    • JVM์— ์˜ํ•ด์„œ ๋”์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” Java Class๋“ค๊ณผ ์—ฐ๊ด€๋œ storage์˜ garbage collection์„ ๋ˆ๋‹ค.
    • ์ฆ‰ dynamic ํด๋ž˜์Šค ๋กœ๋“œ ํ•ด์ œ๋ฅผ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
This post is licensed under CC BY 4.0 by the author.

JVM Tunning 1

Spring Web MVC 3