문제점
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이라는 램을 조절하는 기능이 새로 추가되었다.
다음 사이트에서 해당 내용을 살펴볼 수 있다.
그러나 다음 페이지에서 볼 수 있듯 아직 안정화가 필요해보이니 잘 알아보고 사용하자.
reference
'🛠️TOOL > 📄Linux' 카테고리의 다른 글
[Linux] - wget의 개념과 사용 예시 (0) | 2023.12.14 |
---|---|
[Linux] - nohup 사용법과 다양한 활용 방법 (1) | 2023.11.29 |
[Linux] systemctl 명령 에러 System has not been booted with systemd as init system (PID 1). (0) | 2023.10.21 |
[Linux] - sudo apt update시 error: "Release file is not yet valid" (0) | 2023.10.05 |
[Linux/shell] - E: Sub-process /usr/bin/dpkg returned an error code (1) 에러 해결하기 (1) | 2023.09.08 |