Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

"Microsoft Windows Subsystem for Linux Background Host" / "Vmmem"을 종료하는 방법

특정 포트를 점유하고 있는 프로세스를 찾는데,

C:\temp> netstat -ano | findstr 8000
  TCP    127.0.0.1:8000         0.0.0.0:0              LISTENING       17396

pid == 17396이라고 나옵니다. 작업 관리자에서 확인해 봤더니 바로 그 프로세스가 "Microsoft Windows Subsystem for Linux Background Host"였습니다. 이걸 종료하고 싶다면, 현재 해당 프로세스에 연결된 WSL 인스턴스를 종료시켜야 합니다.

그런데, 사실 현재 띄워놓은 WSL 인스턴스가 없는데도 저게 실행 중이라는 것이 문제인데요, 이것을 확실하게 하기 위해서는 wsl.exe 명령어를 활용해야 합니다.

C:\Windows\System32> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu20.04            Running         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

분명히 "Running" 중이군요. ^^ 따라서 다음과 같은 명령어로 해당 인스턴스를 종료해 주면 됩니다.

/*
    --shutdown
        Immediately terminates all running distributions and the WSL 2 lightweight utility virtual machine.

    --terminate, -t <Distro>
        Terminates the specified distribution.
*/

c:\temp> wsl -t Ubuntu20.04

실행 후 곧바로 종료하지는 않으므로 약간의 시간 동안 기다려야 합니다. 아마도 wsl 인스턴스의 재실행 부하를 최소화하기 위해 어느 정도의 대기 시간을 두는 듯합니다.

참고로, (hyper-v vm을 띄우지 않은 경우) 위와 같이 하면 WSL 인스턴스가 사용하던 Vmmem 프로세스도 함께 종료됩니다. 만약 그래도 살아 있다면 WSL 2와 통합시킨 docker desktop을 사용하고 있기 때문일 것입니다. 따라서 docker desktop을 종료시키면 "docker-desktop", "docker-desktop-data"도 함께 종료되면서 Vmmem 프로세스도 내려갑니다.

그나저나, Vmmem 프로세스의 CPU 활동량이 많을 수 있는데요, 만약 docker가 필요하지 않다면 docker-desktop 서비스를 종료해 두는 것이 좋습니다. (WSL 인스턴스 자체로는 보통 CPU 활동량이 많지 않습니다.) 또한 Vmmem 프로세스의 메모리는 윈도우 측의 %USERPROFILE%\.wslconfig 파일을 만들어 다음의 내용을 포함시키면 제한할 수 있습니다.

# WSL commands and launch configurations
# https://learn.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig

# Taking Back Memory From Vmmem/WSL
# https://blog.simonpeterdebbarma.com/2020-04-memory-and-wsl/

[wsl2]
memory=4GB

# kernel=<path>              # An absolute Windows path to a custom Linux kernel.
# memory=<size>              # How much memory to assign to the WSL2 VM.
# processors=<number>        # How many processors to assign to the WSL2 VM.
# swap=<size>                # How much swap space to add to the WSL2 VM. 0 for no swap file.
# swapFile=<path>            # 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).

# <path> entries must be absolute Windows paths with escaped backslashes, for example C:\\Users\\Ben\\kernel
# <size> entries must be size followed by unit, for example 8GB or 512MB




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/13/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12247정성태6/29/202010085.NET Framework: 918. C# - 불린 형 상수를 반환값으로 포함하는 3항 연산자 사용 시 단축 표현 권장(IDE0075) [2]파일 다운로드1
12246정성태6/29/202010873.NET Framework: 917. C# - USB 관련 ETW(Event Tracing for Windows)를 이용한 키보드 입력을 감지하는 방법
12245정성태6/24/202011373.NET Framework: 916. C# - Task.Yield 사용법 (2) [2]파일 다운로드1
12244정성태6/24/202011199.NET Framework: 915. ETW(Event Tracing for Windows)를 이용한 닷넷 프로그램의 내부 이벤트 활용 [1]파일 다운로드1
12243정성태6/23/20208747VS.NET IDE: 147. Visual C++ 프로젝트 - .NET Core EXE를 "Debugger Type"으로 지원하는 기능 추가
12242정성태6/23/20209545오류 유형: 623. AADSTS90072 - User account '...' from identity provider 'live.com' does not exist in tenant 'Microsoft Services'
12241정성태6/23/202012828.NET Framework: 914. C# - Task.Yield 사용법파일 다운로드1
12240정성태6/23/202014097오류 유형: 622. 소켓 바인딩 시 "System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions" 오류 발생
12239정성태6/21/202010699Linux: 30. (윈도우라면 DLL에 속하는) .so 파일이 텍스트로 구성된 사례 [1]
12238정성태6/21/202010521.NET Framework: 913. C# - SharpDX + DXGI를 이용한 윈도우 화면 캡처 라이브러리
12237정성태6/20/202010292.NET Framework: 912. 리눅스 환경의 .NET Core에서 "test".IndexOf("\0")가 0을 반환
12236정성태6/19/202010625오류 유형: 621. .NET Standard 대상으로 빌드 시 dynamic 예약어에서 컴파일 오류 - error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
12235정성태6/19/202010297오류 유형: 620. Windows 10 - Inaccessible boot device 블루 스크린
12234정성태6/19/20209919개발 환경 구성: 494. NuGet - nuspec의 패키지 스키마 버전(네임스페이스) 업데이트 방법
12233정성태6/19/20209692오류 유형: 619. SQL 서버 - The transaction log for database '...' is full due to 'LOG_BACKUP'. - 두 번째 이야기
12232정성태6/19/20208575오류 유형: 618. SharePoint - StoreBusyRetryLater 오류
12231정성태6/15/202011117.NET Framework: 911. Console/Service Application을 위한 SynchronizationContext - AsyncContext
12230정성태6/15/202010429오류 유형: 617. IMetaDataImport::GetMethodProps가 반환하는 IL 코드 주소(RVA) 문제
12229정성태6/13/202012302.NET Framework: 910. USB/IP PROJECT를 이용해 C#으로 USB Keyboard + Mouse 가상 장치 만들기 [1]
12228정성태6/12/202012397.NET Framework: 909. C# - Source Generator를 적용한 XmlCodeGenerator파일 다운로드1
12227정성태6/12/202016364오류 유형: 616. Visual Studio의 느린 업데이트 속도에 대한 원인 분석 [5]
12226정성태6/11/202013633개발 환경 구성: 493. OpenVPN의 네트워크 구성 [4]파일 다운로드1
12225정성태6/11/202012635개발 환경 구성: 492. 윈도우에 OpenVPN 설치 - 클라이언트 측 구성
12224정성태6/11/202020581개발 환경 구성: 491. 윈도우에 OpenVPN 설치 - 서버 측 구성 [1]
12223정성태6/9/202014524.NET Framework: 908. C# - Source Generator 소개 [10]파일 다운로드2
12222정성태6/3/202010346VS.NET IDE: 146. error information: "CryptQueryObject" (-2147024893/0x80070003)
... 46  47  48  49  50  51  52  53  54  55  [56]  57  58  59  60  ...