만쥬의 개발일기
article thumbnail

문제점

 

WSL 2 consumes massive amounts of RAM and doesn't return it · Issue #4166 · microsoft/WSL

Your Windows build number: 18917 What's wrong / what should be happening instead: WSL 2 starts using huge amounts of RAM after a while, just using it like normal. At the moment I'm using ph...

github.com

WSL을 사용하고, 이 글 까지 읽게 된 사람들은 모두 공감하겠지만 WSL이 램을 잡아먹는 비율은 어마어마하다.

 

 

이러한 현상은 WSL2의 특성과 리눅스의 특성의 환상의 콜라보로 인해 발생한다.

  • 리눅스 : RAM의 한계치까지 파일의 정보를 최대한 캐시로 보존.
  • WSL2 : WSL2에 할당된 RAM이 부족해지면 WSL2에 추가적인 RAM을 할당.

쉽게말해 리눅스는 RAM을 한계치까지 꽉꽉 채워서 RAM을 십분 활용하는데,  WSL2는 또 거기에 RAM을 계속해서 할당해주다보니 이렇게 WSL이 가능한 모든 램을 차지하게 되는 것이다.

 

램 사용량 보기

wsl 터미널에서 다음 명령어를 입력하면 램 사용량을 볼 수 있다.

free -h

현재 내 램 사용량을 보면, 다음과 같이 스왑스페이스 포함 무려 9.6기가를 차지하고 있다. 

이게 말이되는가.. 내 노트북이 항상 힘들어했던 이유가 여기 있었다.

이러한 무자비한 램 할당을 임의로 제한해주려면 wslconfig라는 파일에 설정을 입력해주어야 하는데,

wsl이 아닌 윈도우의 파일 경로에 해당 파일을 생성해주어야한다.

따라서 c\users\사용자이름\.wslconfig 경로에 파일을 생성해준다.

vi .wslconfig

그리고 해당 파일에 다음과 같이 입력해준다.

[wsl2]
memory=4GB
processors=2
swap=1GB
localhostForwarding=true

[wsl2]: 설정 섹션의 시작을 나타냄.


memory=4GB: WSL 2 가상 머신에 할당된 메모리 양을 설정.


processors=2: WSL 2 가상 머신에 할당된 가상 프로세서(코어)의 수를 설정.


swap=1GB: 스왑 파일의 크기를 설정한다. 스왑 파일은 메모리가 부족한 경우 사용되며 추가 메모리 공간을 제공. 여기서는 1GB의 스왑 파일을 사용하도록 구성한다.


localhostForwarding=true: WSL 2 환경에서 로컬호스트 포트 포워딩을 활성화하는 설정이다. 이것은 WSL 2에서 실행 중인 Linux 애플리케이션에서 Windows 호스트의 로컬 포트에 액세스하도록 허용한다.

 

해당 설정을 완료하고, wsl을 리부팅해준다.

wsl --shutdown
wsl -d <배포판 이름>

그러면 이렇게 램이 설정해준만큼만 할당되는 모습이다.

 

최신 업데이트++

23년 9월자로 wsl이 새로 업데이트되며 autoMemoryReclaim이라는 램을 조절하는 기능이 새로 추가되었다.

다음 사이트에서 해당 내용을 살펴볼 수 있다.

 

Windows Subsystem for Linux September 2023 update

There is a new release for the Windows Subsystem for Linux (WSL) with new features and bug fixes! Check out the summary below, and read on to learn more about new experimental features, and some significant quality improvements. Experimental features We kn

devblogs.microsoft.com

 

 

그러나 다음 페이지에서 볼 수 있듯 아직 안정화가 필요해보이니 잘 알아보고 사용하자.

 

WSL `autoMemoryReclaim` setting can break docker in WSL · Issue #5356 · ddev/ddev

Is there an existing issue for this? I have searched the existing issues Output of ddev debug test No response Expected Behavior MS recently released a preview version of WSL 2. One new feature is ...

github.com

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!