--- id: P-REINFORCE-AUTO-D2D9B2 category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Stop-the-world" --- # [[Stop-the-world]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 'Stop-the-world'(STW)λŠ” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC)이 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ λ©”λͺ¨λ¦¬λ₯Ό μ •λ¦¬ν•˜κΈ° μœ„ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 싀행이 μΌμ‹œμ μœΌλ‘œ μ™„μ „νžˆ μ€‘λ‹¨λ˜λŠ” ν˜„μƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€ [1, 2]. κ°€λΉ„μ§€ 컬렉터가 νž™(Heap) λ©”λͺ¨λ¦¬μ— λŒ€ν•œ 배타적 μ ‘κ·Ό κΆŒν•œμ„ μ–»μ–΄μ•Ό ν•˜λ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μŠ€λ ˆλ“œκ°€ λ©ˆμΆ”κ²Œ λ©λ‹ˆλ‹€ [1, 3]. 이둜 인해 λ°œμƒν•˜λŠ” μ§€μ—°(Latency)κ³Ό ν™”λ©΄ λŠκΉ€(Jank)을 쀄이기 μœ„ν•΄ ν˜„λŒ€μ˜ GC μ•Œκ³ λ¦¬μ¦˜λ“€μ€ STW μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜κ±°λ‚˜ νšŒν”Όν•˜λŠ” 병렬 및 λ™μ‹œ 처리 λ°©μ‹μœΌλ‘œ λ°œμ „ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [2, 4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **원인 및 λ©”μ»€λ‹ˆμ¦˜** κ°€λΉ„μ§€ 컬렉터가 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό μ •λ¦¬ν•˜κ³  λ©”λͺ¨λ¦¬λ₯Ό μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” νž™ μ˜μ—­μ— λ°°νƒ€μ μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•˜λ©°, 이 κ³Όμ •μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 처리 μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ μ •μ§€(halt)ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1]. V8 μ—”μ§„μ˜ 경우, μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행을 λ©ˆμΆ”κ³  메인 μŠ€λ ˆλ“œμ—μ„œ 순차적으둜 GC μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 κ°€μž₯ 직관적인 STW λ°©μ‹μž…λ‹ˆλ‹€ [2, 6]. * **μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯** STW 쀑단 μ‹œκ°„μ΄ κΈΈμ–΄μ§€λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜λ₯Ό μ΄ˆλž˜ν•©λ‹ˆλ‹€. 특히 메인 μŠ€λ ˆλ“œμ— μ§€μ—°κ³Ό ν™”λ©΄ λŠκΉ€(Jank) ν˜„μƒμ„ μœ λ°œν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ λ–¨μ–΄λœ¨λ¦¬κ³  전체 ν”„λ‘œκ·Έλž¨μ˜ μ²˜λ¦¬λŸ‰(Throughput)을 κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€ [2]. GC λ‘œκ·Έμ—μ„œ κΈ΄ 'Duration' 값은 κΈ΄ STW 쀑단을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€ [7]. V8μ—μ„œ 병렬(Parallel) 기법을 μ‚¬μš©ν•˜λ”λΌλ„ μ΄λŠ” 본질적으둜 'stop-the-world' 방식이며 μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행이 λ©ˆμΆ”κ²Œ λ˜μ§€λ§Œ, 총 쀑단 μ‹œκ°„μ„ μŠ€λ ˆλ“œ 수둜 λ‚˜λˆ„μ–΄ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [8]. * **μ£Όμš” λ°œμƒ μ‹œμ ** * μŠ€μœ„ν”„(Sweep) μž‘μ—…μ΄λ‚˜ 마크(Mark) 단계가 배타적 μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§€κ³  싀행될 λ•Œ STW 쀑단이 λ°œμƒν•©λ‹ˆλ‹€ [3, 9]. * IBM JVM의 'gencon' μ •μ±…μ—μ„œλŠ” 'nursery' μ˜μ—­μ„ μ •λ¦¬ν•˜λŠ” μŠ€μΊλΉˆμ§€(Scavenge) μž‘μ—…μ΄λ‚˜ κΈ€λ‘œλ²Œ μ‚¬μ΄ν΄μ˜ 초기 및 μ΅œμ’… 마크 단계가 짧은 STW 쀑단 λ™μ•ˆ μ‹€ν–‰λ©λ‹ˆλ‹€ [10]. * λ™μ‹œ 마크(Concurrent mark) μž‘μ—…μ„ μ‚¬μš©ν•˜λ”λΌλ„ λ©”λͺ¨λ¦¬κ°€ κ³ κ°ˆλ˜μ–΄ μŠ€μœ„ν”„ μž‘μ—…μ΄ μ‹œμž‘λ  λ•Œλ‚˜, 루트 객체λ₯Ό λ‹€μ‹œ μŠ€μΊ”ν•  λ•ŒλŠ” STW 쀑단이 ν•„μš”ν•©λ‹ˆλ‹€ [9]. * **STW μ™„ν™” 및 νšŒν”Ό 기법** * **점진적 및 λ™μ‹œ 처리:** 점진적 λ™μ‹œ 마크(Incremental concurrent mark processing) μ²˜λ¦¬λŠ” κΈ€λ‘œλ²Œ STW κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ ν”Όν•¨μœΌλ‘œμ¨ 쀑단 μ‹œκ°„μ„ κ³ λ₯΄κ²Œ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€ [4]. * **Orinoco κ°€λΉ„μ§€ 컬렉터:** V8 μ—”μ§„μ˜ μ΅œμ‹  κ°€λΉ„μ§€ 컬렉터인 OrinocoλŠ” 기쑴의 'stop-the-world' νœ΄μ‹ λͺ¨λΈμ—μ„œ λ²—μ–΄λ‚˜, 메인 μŠ€λ ˆλ“œμ˜ λΆ€ν•˜λ₯Ό 쀄이기 μœ„ν•΄ 병렬(Parallel), 점진적(Incremental), λ™μ‹œ(Concurrent) μŠ€μœ„ν•‘ 및 λ§ˆν‚Ή κΈ°μˆ μ„ λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [5, 11]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Garbage Collection]], [[Heap Memory]], [[Orinoco]], [[Mark-Sweep]] - **Projects/Contexts:** [[V8 JavaScript Engine]], [[IBM Java Virtual Machine (VM)]] - **Contradictions/Notes:** 제곡된 μ†ŒμŠ€λ“€ μ‚¬μ΄μ—μ„œ λ‚΄μš© μƒμ˜ λͺ¨μˆœμ€ μ—†μœΌλ©°, V8 μ—”μ§„κ³Ό IBM JVM ν™˜κ²½ λͺ¨λ‘μ—μ„œ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ 쀑 λ°œμƒν•˜λŠ” 'Stop-the-world'의 κΈ°λ³Έ κ°œλ…κ³Ό 이λ₯Ό μ΅œμ ν™”(병렬, λ™μ‹œ, 점진적 처리)ν•˜μ—¬ μΌμ‹œ μ •μ§€ μ‹œκ°„μ„ μ€„μ΄λ €λŠ” κ³΅ν†΅λœ λ°œμ „ λ°©ν–₯을 λ³΄μ—¬μ€λ‹ˆλ‹€ [3-5, 8]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/Stop-the-world.md]] ---