WSL 리소스 조정하기

Nov 28, 2020    #wsl   #vmmem  

개요

커널 분석을 위해 WSL을 이용하도록 환경을 구성하자 서브시스템에서 사용하는 메모리나 CPU 자원이 상당하였다. 16기가 램 중에 무려 12기가를 사용하는 일이 비일비재했다. Vmmem 이라는 프로세스로 엄청난 리소스가 소모되고 있었고 이러한 내용은 다른 블로그 에서도 동일하게 재현되고 있었다.

위 블로그에 나와있는 이 문제에 대한 해결법은 간단하다. 아래와 같이 WSL 설정파일을 하나 생성해서 사용할 리소스를 직접 명시해주면 된다.

WSL 리소스 설정

먼저, 실행 중인 WSL을 확인한 후 아래와 같이 종료한다.

1PS C:\Windows\system32> wsl -l -v
2  NAME      STATE           VERSION
3* Ubuntu    Running         2
4PS C:\Windows\system32> wsl -t Ubuntu --shutdown
5PS C:\Windows\system32>
6PS C:\Windows\system32> wsl -l -v
7  NAME      STATE           VERSION
8* Ubuntu    Stopped         2

종료한 후에는 아래 경로에 새 파일을 만들어주고 아래와 같이 작성해주자.

1PS C:\Windows\system32> notepad $env:USERPROFILE\.wslconfig

이제 아래와 같이 설정해주자. 이제 WSL2에서 사용할 메모리는 최대 4G로 제한된다.

 1[wsl2]
 2#kernel=<path>              # An absolute Windows path to a custom Linux kernel.
 3memory=4G              	    # How much memory to assign to the WSL2 VM.
 4#processors=<number>        # How many processors to assign to the WSL2 VM.
 5#swap=<size>                # How much swap space to add to the WSL2 VM. 0 for no swap file.
 6#swapFile=<path>            # An absolute Windows path to the swap vhd.
 7#localhostForwarding=<bool> # Boolean specifying if ports bound to wildcard or localhost in the WSL2 VM should be connectable from the host via localhost:port (default true).
 8
 9# <path> entries must be absolute Windows paths with escaped backslashes, for example C:\\Users\\Ben\\kernel
10# <size> entries must be size followed by unit, for example 8GB or 512MB

이제 설치한 WSL의 바로가기를 눌러 WSL을 다시 실행시킨다. 윈도우즈의 Task Manager를 보면 아래와 같이 설정한 값으로 메모리 사용이 제한되는 것을 알 수 있다.

조정된 vmmem 메모리

출처