vmmem 프로세스 메모리 제한 (WSL2, Docker)
목차
vmmemm 프로세스는 WLS2기반 Docker사용시에 사용되는 프로세스로 상당히 많은 메모리를 잡아먹는 프로세스이기도 합니다. 이 덕분에 개인적으로도 16기가 메모리 머신은 사용하기가 어렵워 vmmemm의 프로세스 메모리 사용량을 제한하는 방법을 찾은뒤 이를 공유 해 봅니다.
문제의 원인
WLS2기반 Docker사용시 다음과 같은 원인으로 vmmem의 메모리 사용량이 증가되는것으로 보입니다.
- 리눅스에서 파일 액세스시, 리눅스 OS는 그 정보를 캐시로 사용하기 위해 메모리에 보존. 이는 메모리가 부족해서 더 이상 보존할 수 없을때 까지 반복됨
- WSL2는 Linux의 메모리 사용량에 따라 사용 메모리 크기를 동적으로 증가 및 감소시킨다.
이는 최대 PC메모리의 80%까지 반복되며, 아직까지 MS도 보고된 이슈이지만 이시점까지 1년이상 이에 대한 업데이트는 이루어지고 있지 않습니다.
대처 방안
대략적으로 3가지의 해결 방안이 존재 합니다.
- WLS2 메모리 할당 제한
- 리눅스 OS안에서 메모리 대처
- 사용할때만 Docker Desktop 사용
WSL2 메모리 할당 제한
이 방법은 WSL2의 컨테이너에 할당되는 메모리를 제한하는 방법입니다. 자신의 유저 디렉토리 c:Users사용자이름
에 하단과 같은 내용을 입력 한 .wslconfig
파일을 하나 만들어 주세요.
[wsl2]
memory=4GB
swap=0
[wsl2]
kernel= # An absolute Windows path to a custom Linux kernel.
memory=4G # How much memory to assign to the WSL2 VM.
processors= # How many processors to assign to the WSL2 VM.
swap= # How much swap space to add to the WSL2 VM. 0 for no swap file.
swapFile= # An absolute Windows path to the swap vhd.
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).
# entries must be absolute Windows paths with escaped backslashes, for example C:UsersBenkernel
# entries must be size followed by unit, for example 8GB or 512MB
메모리의 설정은 각자 컴퓨터의 최대 메모리 및 여유 메모리를 확인 한 후 적당량을 설정 해 주세요.
아래는 .wslconfig
파일 설정을 하기전 WSL2 및 컨테이너에 접속후 메모리 정보를 확인한 내용입니다.
이제 리부팅 후 .wslconfig
파일 설정 후 WSL2 및 컨테이너에 접속후 메모리 정보를 확인한 내용입니다.
참조
안정적이고 저렴한 가상 서버(VPS) 안내
안정적인 서버 호스팅을 찾고 계신가요? 지금 Vultr 호스팅을 한번 이용 해 보세요. 지금 보고 계신 HaruLogs 사이트도 Vultr에서 VPS 호스팅 하고 있습니다. 한국, 일본, 미국등 다양한 국가에 클릭 몇번으로 안정적이고 저렴한 VPS를 운영 할 수 있습니다.
아래 배너를 통해 회원 가입을 하시면 100달러의 무료 크레딧을 받을 수 있습니다. 100달러의 무료 크레딧은 Vultr의 최소 사양 VPS를 20대 동시 운영가능한 크레딧입니다.
Vultr 서비스 요약
- VPS
- 인스턴스
- AMD 또는 Intel High Performance 인스턴스 최저 $6 - 1vCPU, 1GB Memory, 2TB Bandwidth, 25GB NVMe
- 엣지
- 인스턴스
- Block Storage
- Object Storage (AWS S3 호환)
- Firewall
- Network
- Load Balancers
- Kubernetes
- Databases