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

비밀번호

댓글 작성자
 




... 106  107  [108]  109  110  111  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11224정성태6/13/201718154.NET Framework: 661. Json.NET의 DeserializeObject 수행 시 속성 이름을 동적으로 바꾸는 방법파일 다운로드1
11223정성태6/12/201716830개발 환경 구성: 318. WCF Service Application과 WCFTestClient.exe
11222정성태6/10/201720552오류 유형: 399. WCF - A property with the name 'UriTemplateMatchResults' already exists.파일 다운로드1
11221정성태6/10/201717522오류 유형: 398. Fakes - Assembly 'Jennifer5.Fakes' with identity '[...].Fakes, [...]' uses '[...]' which has a higher version than referenced assembly '[...]' with identity '[...]'
11220정성태6/10/201722911.NET Framework: 660. Shallow Copy와 Deep Copy [1]파일 다운로드2
11219정성태6/7/201718222.NET Framework: 659. 닷넷 - TypeForwardedFrom / TypeForwardedTo 특성의 사용법
11218정성태6/1/201721022개발 환경 구성: 317. Hyper-V 내의 VM에서 다시 Hyper-V를 설치: Nested Virtualization
11217정성태6/1/201716915오류 유형: 397. initerrlog: Could not open error log file 'C:\...\MSSQL12.MSSQLSERVER\MSSQL\Log\ERRORLOG'
11216정성태6/1/201719024오류 유형: 396. Activation context generation failed
11215정성태6/1/201719966오류 유형: 395. 관리 콘솔을 실행하면 "This app has been blocked for your protection" 오류 발생 [1]
11214정성태6/1/201717704오류 유형: 394. MSDTC 서비스 시작 시 -1073737712(0xC0001010) 오류와 함께 종료되는 문제 [1]
11213정성태5/26/201722483오류 유형: 393. TFS - The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
11212정성태5/26/201721821오류 유형: 392. Windows Server 2016에 KB4019472 업데이트가 실패하는 경우
11211정성태5/26/201720859오류 유형: 391. BeginInvoke에 전달한 람다 함수에 CS1660 에러가 발생하는 경우
11210정성태5/25/201721304기타: 65. ActiveX 없는 전자 메일에 사용된 "개인정보 보호를 위해 암호화된 보안메일"의 암호화 방법
11209정성태5/25/201768226Windows: 143. Windows 10의 Recovery 파티션을 삭제 및 새로 생성하는 방법 [16]
11208정성태5/25/201727949오류 유형: 390. diskpart의 set id 명령어에서 "The specified type is not in the correct format." 오류 발생
11207정성태5/24/201728268Windows: 142. Windows 10의 복구 콘솔로 부팅하는 방법
11206정성태5/24/201721557오류 유형: 389. DISM.exe - The specified image in the specified wim is already mounted for read/write access.
11205정성태5/24/201721271.NET Framework: 658. C#의 tail call 구현은? [1]
11204정성태5/22/201730808개발 환경 구성: 316. 간단하게 살펴보는 Docker for Windows [7]
11203정성태5/19/201718740오류 유형: 388. docker - Host does not exist: "default"
11202정성태5/19/201719809오류 유형: 387. WPF - There is no registered CultureInfo with the IetfLanguageTag 'ug'.
11201정성태5/16/201722557오류 유형: 386. WPF - .NET 3.5 이하에서 TextBox에 한글 입력 시 TextChanged 이벤트의 비정상 종료 문제 [1]파일 다운로드1
11200정성태5/16/201719332오류 유형: 385. WPF - 폰트가 없어 System.IO.FileNotFoundException 예외가 발생하는 경우
11199정성태5/16/201721160.NET Framework: 657. CultureInfo.GetCultures가 반환하는 값
... 106  107  [108]  109  110  111  112  113  114  115  116  117  118  119  120  ...