WSL2 개발 환경 실전 세팅 — 네이티브 Linux 성능 비교까지

게시일: 2025년 4월 4일 · 14분 읽기

회사에서 Mac 안 쓰고 Windows+WSL2로 버티는 이유를 설명해달라고 했다. 간단하다: "같은 성능에 훨씬 싸다."

WSL2가 진짜 충분한지 벤치마크와 설정 팁을 공유한다.

WSL2 vs 네이티브 Linux 벤치마크

같은 하드웨어에서 테스트했다:

작업 1: Node.js 빌드 (webpack 대용량 프로젝트)

Windows CMDWSL2 Ubuntu네이티브 Ubuntu
시간45.2s32.1s31.8s
CPU 사용률-95%97%

WSL2와 네이티브는 거의 같다. Windows CMD는 현저히 느리다.

작업 2: Rust 컴파일 (릴리스 빌드)

Windows CMDWSL2네이티브 Ubuntu
시간78.3s52.4s51.9s
메모리-8.2GB8.1GB

작업 3: Docker 이미지 빌드 (Node.js + 의존성)

WSL2 + Docker Desktop네이티브 + Docker
시간24.1s21.3s

결론: WSL2는 충분하다

네이티브와 비교해 1-10% 느리다. 하지만:

10% 성능 차이는 무시할 만하다.

.wslconfig 최적화

기본 WSL2는 느릴 수 있다. .wslconfig 파일로 최적화하자.

위치: C:\Users\<YourUsername>\.wslconfig

[wsl2]
# CPU 코어 수 (기본: 모든 코어)
processors=8

# 메모리 제한 (기본: 80% of RAM)
memory=16GB

# 스왑 메모리 (기본: 25% of memory)
swap=2GB

# Windows 파일 시스템 성능
localhostForwarding=true

# IPv6 지원
ipv6=true

[interop]
# Windows에서 Linux 명령어 호출 가능 (기본: true)
enabled=true

# Windows PATH를 WSL에 추가 (기본: true, 성능 미향상이면 false)
appendWindowsPath=true

[boot]
# WSL 부팅 시간 제한 (기본: 무제한)
systemdLoginServices=lxss

권장 설정 (32GB RAM, i7-12700K 기준):

[wsl2]
processors=10
memory=24GB
swap=2GB
localhostForwarding=true

[interop]
enabled=true
appendWindowsPath=false  # ← 성능 향상

VHD 크기 관리

WSL2는 VHD(Virtual Hard Disk)를 쓴다. 파일 저장소에서 우주 용량을 먹을 수 있다.

위치: C:\Users\<YourUsername>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*/LocalState\ext4.vhdx

크기 확인:

wsl --list --verbose

VHD 크기 제한하기:

# .wslconfig에 추가
[wsl2]
swap=1GB  # 스왑 줄이기

# 또는 수동으로
diskpart
select vdisk file="C:\Users\user\AppData\Local\Packages\...\ext4.vhdx"
detach vdisk
compact vdisk

자동 정리 (매주):

$vhdPath = "C:\Users\$env:USERNAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"

# WSL 종료
wsl --terminate Ubuntu

# 동적으로 resize
param ([int]$SizeGB = 256)
$vhdx = $vhdPath
diskpart | Out-Null
@"
select vdisk file="$vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
"@ | diskpart

Docker 성능 최적화

Docker for Desktop + WSL2 조합이 느릴 수 있다.

최적 설정 (Docker Desktop settings):

Resources:
- CPUs: 8
- Memory: 16GB
- Swap: 2GB
- Disk image size: 256GB

Advanced:
- Use VirtioFS for file sharing (✓)

또는 WSL2에 Docker를 직접 설치:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# 권한 설정
sudo usermod -aG docker $USER

# WSL 재시작 후
docker run hello-world

벤치마크 (Docker Desktop vs native Docker in WSL2):

작업Docker DesktopWSL2 native Docker
이미지 빌드24.1s19.3s
컨테이너 시작2.1s0.8s

WSL2 native Docker가 20% 더 빠르다.

파일 시스템 성능

Windows 파일 시스템에서 WSL 작업은 느리다.

나쁜 예:

# ❌ Windows 파일 시스템에서 빌드
cd /mnt/c/Users/user/projects/my-app
npm run build  # 70s

좋은 예:

# ✅ WSL 파일 시스템에서 빌드
cd ~/projects/my-app  # (WSL의 home: /home/user/)
npm run build  # 32s

차이가 크다. WSL 내부 파일 시스템에서 작업하자.

IDE 설정: VS Code Remote + WSL

이건 필수다. VS Code Remote WSL 확장으로 WSL의 코드를 Windows VS Code에서 편집할 수 있다.

설치:

Extension: Remote - WSL (Microsoft 공식)

사용:

code /home/user/projects/my-app  # WSL에서 실행

# 또는 VS Code에서
Ctrl+Shift+P -> Remote-WSL: Reopen Folder in WSL

이제 VS Code는 WSL의 터미널, 디버거, 터미널 모두를 사용한다. 성능은 WSL 수준이다.

패키지 관리자

WSL2 Ubuntu를 설치한 후 첫 번째:

sudo apt update
sudo apt upgrade -y

# 필수 도구
sudo apt install -y build-essential curl git wget

Node.js:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18

Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

결론

WSL2는 프로 개발자 환경으로 충분하다. 특히:

  • 가성비가 좋다 (Mac의 1/3 비용)
  • 성능은 거의 비슷 (1-10% 느림)
  • Windows 도구를 여전히 쓸 수 있다
  • VS Code Remote가 완벽하다

유일한 단점: 게임과 영상 편집은 Windows 네이티브가 낫다.

내 추천: Windows 전문가라면 WSL2를 쓰세요. 성능 차이는 무시할 만하고, 비용은 크게 줄어듭니다.

iL
ian.lab

실무 개발자입니다. 현장에서 겪은 문제와 해결 과정을 기록합니다. 오류 제보는 연락처로 보내주세요.