본문 바로가기
IT

[리눅스 기초 #28] 내 램이 다 어디 갔지? .wslconfig로 WSL2 자원 관리 끝내기

by sunyjiny 2026. 2. 4.
반응형

리눅스 기초 시리즈의 28번째 시간입니다! 지난 시간에는 고성능 개발 환경을 위한 WSL2 버전 업그레이드를 다뤘습니다. 하지만 고성능에는 대가가 따르는 법이죠. 버전 2로 올라온 뒤, 많은 사용자가 "리눅스만 켜면 윈도우가 버벅거린다"거나 "Vmmem 프로세스가 램을 다 잡아먹는다"는 고충을 토로하곤 합니다.

그 이유는 WSL2가 기본적으로 시스템 전체 메모리의 50%~80%까지 점유할 수 있도록 설정되어 있기 때문입니다. 오늘은 .wslconfig 파일을 통해 WSL2의 식탐을 억제하고, 내 컴퓨터 자원을 효율적으로 분배하는 방법을 저의 생생한 경험담과 함께 알아보겠습니다.


1. 나의 경험담: "노트북 비명 소리와 멈춰버린 마우스"

최근 WSL2 환경에서 무거운 AI 모델을 돌리면서 동시에 윈도우에서 화상 회의를 진행하던 때였습니다. 갑자기 노트북 팬이 굉음을 내기 시작하더니 마우스 커서가 뚝뚝 끊기기 시작했습니다. 작업 관리자를 확인해보니 'Vmmem'이라는 프로세스가 혼자서 12GB 이상의 램을 독식하고 있더군요.

WSL2는 리눅스가 필요한 만큼 메모리를 가져가지만, 한 번 가져간 메모리를 윈도우로 다시 돌려주는 데는 매우 인색합니다. 결국 윈도우가 쓸 메모리가 부족해지면서 시스템 전체가 마비된 것이었죠. 이 '메모리 폭주'를 막기 위해 필요한 것이 바로 자원 제한 설정이었습니다.


2. Before: 무법천지였던 WSL2의 자원 사용

설정 전의 WSL2는 마치 주인이 없는 창고와 같습니다. 필요한 만큼 가져다 쓰되, 얼마나 남겨둘지는 고민하지 않죠. 특히 Flutter 빌드나 Docker 컨테이너를 여러 개 띄울 때 이런 현상은 극대화됩니다.

문제점 확인:

Windows Terminal (WSL2)
 
# 리눅스 안에서 현재 사용 가능한 메모리 확인 free -h

윈도우 작업 관리자의 Vmmem 사용량과 비교해보면 괴리가 큽니다.

(▲ Before: 리눅스 내부에서는 메모리가 넉넉해 보이지만, 실제 윈도우 호스트는 메모리 부족에 시달리는 불균형한 상태입니다.)


3. Action: .wslconfig로 '상한선' 정하기

이제 윈도우 사용자 폴더에 설정 파일을 만들어 WSL2가 사용할 수 있는 최대 자원을 고정해 보겠습니다. 이 설정은 모든 리눅스 배포판에 글로벌하게 적용됩니다.

자원 제한 코드 (.wslconfig):

Path: %UserProfile%.wslconfig
 
[wsl2]

WSL2가 사용할 최대 메모리 제한 (전체 램의 25~50% 추천)
memory=4GB

사용할 CPU 코어 개수 제한
processors=2

스왑 메모리 설정 (부족할 경우 디스크를 메모리처럼 사용)
swap=8GB

리눅스에서 사용하지 않는 메모리를 윈도우로 즉시 반환
autoMemoryReclaim=dropcache 

(▲ Action: 메모장이나 VS Code를 열어 위 내용을 작성한 뒤, 내 윈도우 계정 폴더(C:\Users\이름)에 저장하세요. 그 후 'wsl --shutdown' 명령어로 재시작해야 적용됩니다.)


4. After: 쾌적해진 멀티태스킹 (공존의 시작)

설정을 마친 후 다시 작업을 시작해보니 놀라운 변화가 생겼습니다. 아무리 리눅스에서 무거운 작업을 돌려도 윈도우의 가용 메모리가 항상 확보되어 있어 시스템이 멈추지 않습니다.

달라진 점들:

  • 시스템 안정성: WSL2가 지정된 4GB 이상을 넘보지 않으므로 윈도우 앱들이 쾌적하게 돌아갑니다.
  • 예측 가능한 성능: 자원이 고정되어 있어 내 리눅스 서비스가 어느 정도의 성능을 낼지 명확해졌습니다.
  • 메모리 반환: autoMemoryReclaim 옵션 덕분에 작업이 끝나면 Vmmem의 점유율이 눈에 띄게 줄어듭니다.

5. 실험 요약 및 팁

설정 항목 추천 값 비유
memory 시스템 RAM의 1/4~1/2 용돈 상한선 정하기
processors 물리 코어의 절반 전담 직원 수 지정하기
swap 메모리의 2배 비상금(저금통) 마련하기
autoMemoryReclaim dropcache 또는 gradual 빌려준 물건 바로 회수하기

6. 마치며: 자원을 지배하는 자가 도구를 지배한다

리눅스 기초 28단계를 거치며 우리는 이제 단순히 리눅스를 쓰는 것을 넘어, 하드웨어 자원을 효율적으로 '운영'하는 법을 배웠습니다. 아무리 좋은 도구라도 내 컴퓨터를 마비시킨다면 좋은 환경이라 할 수 없겠죠.

오늘의 인사이트: "제한을 두는 것은 구속이 아니라, 다른 작업들과 평화롭게 공존하기 위한 배려이다."


28번째 이야기를 마칩니다. 이제 여러분의 리눅스는 얌전하면서도 강력한 조수가 되었습니다. 다음 시간에는 리눅스 환경의 심장, **'Bash 쉘의 환경 변수와 PATH 설정을 통해 명령어를 어디서나 실행하는 법'**에 대해 다뤄보겠습니다.

이 글이 여러분의 윈도우를 다시 빠르게 만드는 데 도움이 되었나요? 혹시 설정 적용 후 리눅스가 너무 느려졌다면 메모리 값을 조금씩 올려가며 최적의 지점을 찾아보세요!

여러분의 하드웨어 사양에 맞는 최적의 설정값이 궁금하시다면 댓글로 램 용량을 남겨주세요. 맞춤형 .wslconfig 예시를 짜드릴게요!

반응형