μ•ˆλ…•ν•˜μ„Έμš” Mambo μž…λ‹ˆλ‹€.

μ˜€λŠ˜μ€ μœˆλ„μš° ν™˜κ²½μ˜ 도컀 λ°μŠ€ν¬νƒ‘μ—μ„œ μ‚¬μš©ν•˜λŠ” WSL λ¦¬μ†ŒμŠ€λ₯Ό μ œν•œν•˜λŠ” 방법에 λŒ€ν•˜μ—¬ κ³΅μœ ν•˜κ³ μž ν•©λ‹ˆλ‹€. μœˆλ„μš°μ—μ„œ 도컀 λ°μŠ€ν¬νƒ‘μ„ μ‚¬μš©ν•  λ•Œ 컴퓨터가 λŠλ €μ§„λ‹€λŠ” λŠλ‚Œμ„ λ°›κ³ μžˆλ‹€λ©΄ ν˜„μž¬ 도컀 λ°μŠ€ν¬νƒ‘κ³Ό WSL에 μ˜ν•΄ μ μœ λ˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό ν™•μΈν•˜μ‹œκ³  이 κΈ€μ—μ„œ μ†Œκ°œν•˜λŠ” λ°©λ²•μœΌλ‘œ WSLκ°€ μ μœ ν•˜λŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ œν•œν•˜μ‹œλŠ”κ²Œ μ’‹μŠ΅λ‹ˆλ‹€.

Docker Desktop WSL 2

μœˆλ„μš° 10 ν™˜κ²½μ—μ„œ WSL 2λ₯Ό μ„€μΉ˜ν•˜κ³  ν™œμ„±ν™”ν–ˆλ‹€λ©΄ 도컀 λ°μŠ€ν¬νƒ‘μ—μ„œ WSL 2λ₯Ό μ‚¬μš©ν•΄μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό ꡬ동될 수 μžˆλ„λ‘ μ§€μ›ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Docker Desktop uses the dynamic memory allocation feature in WSL 2 to greatly improve the resource consumption. This means, Docker Desktop only uses the required amount of CPU and memory resources it needs, while enabling CPU and memory-intensive tasks such as building a container to run much faster.

도컀 λ°μŠ€ν¬νƒ‘ 곡식 λ¬Έμ„œμ—μ„œλŠ” WSL 2을 μ‚¬μš©ν•˜λ©΄ λ©”λͺ¨λ¦¬λ₯Ό λ™μ μœΌλ‘œ ν• λ‹Ήν•  수 있고 λ¦¬μ†ŒμŠ€λ₯Ό 효율적으둜 μ†ŒλΉ„ν•œλ‹€κ³  μ†Œκ°œν•©λ‹ˆλ‹€. 그런데 μ‹€μ œλ‘œ 도컀λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μˆ˜μ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ‹€λ³΄λ©΄ 컴퓨터 μ„±λŠ₯이 점점 λŠλ €μ§€λŠ” 것을 μ²΄κ°ν•˜μ‹€ μˆ˜λ„ μžˆλŠ” 뢄듀도 κ³„μ‹€ν…λ°μš”. 이 λ¬Έμ œλŠ” WSL κΉƒν—ˆλΈŒμ— 이슈둜 λ“±λ‘λ˜μ–΄μžˆλŠ”λ° WSLκ°€ μ μœ ν•˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό μ œλŒ€λ‘œ λ°˜ν™˜ν•˜μ§€ λͺ»ν•˜λŠ” ν˜„μƒμΈ 것 κ°™μŠ΅λ‹ˆλ‹€.

WSL 2 consumes massive amounts of RAM and doesn’t return it

μ΄μŠˆκ°€ λ“±λ‘λœ λ‚ μ§œλŠ” 2019λ…„μ΄μ§€λ§Œ 아직도 ν•΄κ²°λ˜μ§€ μ•Šκ³  μ˜€ν”ˆλœ μƒνƒœλ‘œ λ‚¨μ•„μžˆλŠ” μ΄μŠˆμž…λ‹ˆλ‹€. 개발자 ν•œλΆ„μ€ WSL2 VM이 μ μœ ν•˜λŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ œν•œν•˜λŠ” 방법을 μ‚¬μš©ν•˜μ—¬ WSLμ—μ„œ μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό μ œν•œν•˜λΌκ³  해결책을 μ œμ‹œν•©λ‹ˆλ‹€.

WSL Configuration

μœ„μ—μ„œ μ†Œκ°œν•œ 방법은 이미 도컀 λ°μŠ€ν¬νƒ‘μ—μ„œλ„ μ„€μ • λ©”λ‰΄μ—μ„œ μ†Œκ°œν•˜κ³  μžˆλŠ” λΆ€λΆ„μœΌλ‘œ λ¦¬μ†ŒμŠ€ μ œν•œμ€ μœˆλ„μš°μ— μ˜ν•΄ κ΄€λ¦¬λ˜λ―€λ‘œ CPU, λ©”λͺ¨λ¦¬ 등을 μ œν•œν•˜κΈ° μœ„ν•΄μ„œλŠ” WSL 2의 섀정을 μˆ˜ν–‰ν•˜λΌκ³  ν•©λ‹ˆλ‹€.

.wslconfig μ •μ˜

μ‚¬μš©μž 폴더 μœ„μΉ˜μ—μ„œ .wslconfig νŒŒμΌμ„ 직접 μƒμ„±ν•˜κ±°λ‚˜ λ‹€μŒκ³Ό 같이 μœˆλ„μš° ν„°λ―Έλ„μ—μ„œ λΉ„μ₯¬μ–Ό μŠ€νŠœλ””μ˜€ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

νŒŒμΌμ„ λ§Œλ“€κΈ° μœ„ν•œ νŒŒμ›Œ μ‰˜ λͺ…λ Ήμ–΄κ°€ λ³„λ„λ‘œ μ‘΄μž¬ν•˜μ§€λ§Œ λΉ„μ₯¬μ–Ό μŠ€νŠœλ””μ˜€ μ½”λ“œλ‘œ μ—¬λŠ”κ²Œ 더 νŽΈν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λΉ„μ₯¬μ–Ό μŠ€νŠœλ””μ˜€ μ½”λ“œλ‘œ 열어진 .wslconfig 파일의 λ‚΄μš©μ„ λ‹€μŒκ³Ό 같이 μž…λ ₯ν•˜κ³  μ €μž₯ν•©λ‹ˆλ‹€.

.wslconfig
[wsl2] memory=4GB processors=2 swap=0

.wslconfig 반영

νŒŒμΌμ— μ •μ˜ν•œ λ‚΄μš©μ„ WSL에 λ°˜μ˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” 도컀 λ°μŠ€ν¬νƒ‘μ„ μ’…λ£Œν•˜κ³  PowerShell을 κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ μ‹€ν–‰ν•œ λ‹€μŒ LxssManagerλ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

비ꡐ해보기

λ‹€μŒμ€ κ°„λ‹¨ν•˜κ²Œ WSL 2의 κΈ°λ³Έ 섀정에 μ˜ν•΄ λ™μž‘ν•˜λŠ” 것과 .wslconfig을 μ •μ˜ν•΄μ„œ WSL μ—μ„œ μ‚¬μš©ν•  λ¦¬μ†ŒμŠ€λ₯Ό μ œν•œν•˜μ˜€μ„ 경우λ₯Ό λΉ„κ΅ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. λŒ€λž΅μ μœΌλ‘œ μ–΄λ–€ 차이λ₯Ό λ³΄μ΄λŠ”μ§€λ§Œ ν™•μΈν•΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

κΈ°λ³Έ WSL 2

λ¨Όμ €, κΈ°λ³Έ WSL 2 섀정에 μ˜ν•΄ 도컀 λ°μŠ€ν¬νƒ‘μ΄ μ μœ ν•˜κ²Œ λ˜λŠ” λ¦¬μ†ŒμŠ€λ₯Ό 확인해보죠.

기닀리기 μ§€κ²¨μ›Œν•˜μ‹€ 뢄듀을 μœ„ν•΄μ„œ μ„€λͺ…ν•˜μžλ©΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν• λ•Œλ§ˆλ‹€ λ©”λͺ¨λ¦¬κ°€ μ˜¬λΌκ°€λ©΄μ„œ 4GBλ₯Ό μ μœ ν•œ 것을 보여주고 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©ν•˜λŠ” 만큼 λ©”λͺ¨λ¦¬λ₯Ό μ μœ ν•˜λŠ” 것은 λ‹Ήμ—°ν•œ 뢀뢄일 수 μžˆμœΌλ‚˜ λ¬Έμ œλŠ” κ·Έ λ‹€μŒλΆ€ν„° λ°œμƒν•©λ‹ˆλ‹€.

μœ„ 화면을 μ‚΄νŽ΄λ³΄μ‹œλ©΄ 도컀 λ°μŠ€ν¬νƒ‘μœΌλ‘œ μ‹€ν–‰ν–ˆλ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ „λΆ€ μ’…λ£Œν•˜κ³  이미지 그리고 λ³Όλ₯¨μ„ μ „λΆ€ μ‚­μ œν–ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  WSL2μ—μ„œ μ μœ μ€‘μΈ λ©”λͺ¨λ¦¬μ˜ μΌλΆ€λŠ” λ°˜ν™˜λ˜μ§€ μ•Šκ³  μžˆμŒμ„ λ³΄μ—¬μ€λ‹ˆλ‹€.

μ‚¬μš©μž μ •μ˜ WSL 2

이제 WSL 2μ—μ„œ μ μœ ν•˜μ—¬ μ‚¬μš©ν•  ν”„λ‘œμ„Έμ„œλ₯Ό 2개, λ©”λͺ¨λ¦¬λ₯Ό 2GB 그리고 μŠ€μ™‘μ„ ν•˜μ§€μ•Šλ„λ‘ μ„€μ •ν•˜κ³  μ•žμ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν–ˆλ˜ 것을 λ‹€μ‹œ μ‹œλ„ ν•΄λ³Έ κ²°κ³Όλ₯Ό ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

κΈ°λ³Έ μ„€μ •λ•Œμ™€λŠ” λ‹€λ₯΄κ²Œ μ—¬λŸ¬κ°œμ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ”λΌλ„ WSL2μ—μ„œ ν• λ‹Ήν•˜λŠ” λ©”λͺ¨λ¦¬λŠ” 2GBλ₯Ό λ„˜μ§€μ•Šκ²Œ 됨을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Όλ‘ , μ μœ ν•˜κ³  μžˆλŠ” λ¦¬μ†ŒμŠ€κ°€ μ œν•œλ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— μ»¨ν…Œμ΄λ„ˆ μ„±λŠ₯은 μ€„μ–΄λ“€κ²Œ λ‹Ήμ—°ν•œ λΆ€λΆ„μž…λ‹ˆλ‹€. λ”°λΌμ„œ, μ‹œμŠ€ν…œ μžμ›μ΄ μ—¬μœ λ‘­λ‹€λ©΄ μ λ‹Ήν•˜κ²Œ μ œν•œν•˜μ‹œλŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

λŠλ €μ§μ„ μ²΄κ°ν•˜λŠ” 이유

.wslconfig νŒŒμΌμ„ μ •μ˜ν•˜μ§€ μ•Šκ³  κΈ°λ³Έ μ„€μ •μœΌλ‘œ WSL 2λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ„λ•Œ 도컀 λ°μŠ€ν¬νƒ‘μ΄ μ‹œμŠ€ν…œ μžμ›μ„ μ–΄λŠμ •λ„ κΉŒμ§€ μ‚¬μš©ν•  수 μžˆμ„ 지 ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

기본적으둜 ν”„λ‘œμ„Έμ„œλŠ” μ „λΆ€ μ‚¬μš©ν•œλ‹€κ³  ν•˜λ©° λ©”λͺ¨λ¦¬λŠ” 총 λ©”λͺ¨λ¦¬μ˜ 절반 λ˜λŠ” 8GB 쀑 μž‘μ€μͺ½μœΌλ‘œ μ„€μ •λ©λ‹ˆλ‹€. μ €μ˜ κ²½μš°λŠ” 32GB의 λ©”λͺ¨λ¦¬μ΄λ―€λ‘œ λ©”λͺ¨λ¦¬μ˜ μ ˆλ°˜λ³΄λ‹€ μž‘μ€ 8GBκ°€ μ„€μ •λ˜κ²Œ λ©λ‹ˆλ‹€. 일반적으둜 κ°œλ°œμžκ°€ μ‚¬μš©ν•˜λŠ” μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬ μš©λŸ‰ 16GB이라면 λ™μΌν•˜κ²Œ 8GBμ΄λ―€λ‘œ 무렀 총 λ©”λͺ¨λ¦¬μ˜ μ ˆλ°˜μ΄λ‚˜ μ μœ ν•  수 있게 되고 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ’…λ£Œν•˜λ”λΌλ„ μΌλΆ€μ˜ λ©”λͺ¨λ¦¬λŠ” μ μœ ν•˜κ³  μžˆμ„ 수 μžˆλ‹€λŠ” μ΄μ•ΌκΈ°μž…λ‹ˆλ‹€.

μœˆλ„μš°μ˜ λ¦¬μ†ŒμŠ€ λͺ¨λ‹ˆν„°λ₯Ό μ‚¬μš©ν•΄μ„œ vmmem에 ν• λ‹Ήλœ λ©”λͺ¨λ¦¬κ°€ 높은지 ν™•μΈν•΄λ³΄μ‹œκΈ° 바라며 μ΄μƒμœΌλ‘œ 도컀 λ°μŠ€ν¬νƒ‘μ΄ μ‚¬μš©ν•˜λŠ” WSL λ¦¬μ†ŒμŠ€ μ œν•œν•˜κΈ°λ₯Ό λ§ˆμΉ˜κ² μŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.