문제 상황
Committed Memory 양이 98%에 육박하여 다른 프로그램들이 out of memory 에러로 죽음.
헷갈렸던 점
Resource Monitor나 Task Manager를 살펴봐도 딱히 메모리를 잡아먹는 프로세스가 없었다.
원인
C:\windows\runsw.exe 라는 프로그램(서비스)가 memory leak을 유발
해결
RunSwUSB 서비스 비활성화 (아래 그림 참조)
설명을 찾아보니까 Realtek 랜카드 드라이버에서 딸려 들어오는 녀석인데, 만행을 살펴보자.
실제 메모리 사용량은 9.0 GB 수준인데, 아래 Committed 항목을 보면 37.4GB/39.9GB로 되어 있다. 메모리를 실제로 사용하지는 않았지만, 이 프로그램 혼자서 전부 사용한다고 미리 선언을 하는 바람에 다른 프로그램들은 메모리를 더이상 할당받을 수 없는 것이다. 듣자하니 실제 하드웨어 동작과는 크게 상관 없다고 해서 runsw.exe 를 꺼보았다.
Committed 부분이 즉시 정상으로 돌아왔다. 이 프로그램 혼자서 24.3GB를 할당을 받은건데, shared commit으로 잡아 놔서 보통 보게 되는 private bytes나 working set에는 별다른 문제가 없는 것처럼 보인다.
이 서비스(runsw.exe)의 표면적인 역할은 c:\windows\swusb.exe를 실행하고 c:\windows\runsw.log 파일을 생성한다.
- sha256sum: 874b78270c60fe426c3b35c0b5fd00ea35d88c081bb94e03f9b71e4479fe46a7
- size: 48,856 bytes
시간이 좀 더 있었으면 왜 이런 문제가 생기는지 분석을 해봤을 것 같은데... 귀찮다. 그냥 삭제.
관련 링크
[1] https://www.file.net/process/runsw.exe.html
[3] http://insertwittylinkhere.blogspot.com/2017/12/excessive-modified-memory.html
여기를 보면 CreateToolhelp32Snapshot 함수를 호출하는데, 다 확인하고 난 다음 CloseHandle 함수를 부르지 않아서 memory leak이 생기는듯... 관련 문서(https://docs.microsoft.com/en-us/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot)를 보면 "To destroy the snapshot, use the CloseHandle function"이라고 되어 있다. sub_401260 함수는 얼마나 자주 불리는지 알 수 없지만 1초마다 한 번씩 부른다고 가정한다면... :(
'[OS] > Windows' 카테고리의 다른 글
[중요][MS 오피스 - MS Office] 정품인증 0xC004F074 오류 | 에러 해결하는 방법!! (63) | 2024.04.02 |
---|---|
인텔 CPU사양 세대별 성능 비교!! (63) | 2024.04.01 |
[MS오피스 2016] 무료 설치 및 정품 인증키!! (66) | 2024.03.31 |
[중요] MS 오피스 2021 무료설치 바로가기와 정품인증 방법 다운로드!! (80) | 2024.03.31 |
[참고] 윈도우11 KMS 정품인증 CMD 로 하는 방법!! (80) | 2024.03.13 |
[중요][활용] Windows Server 평가판 KMS 정품인증 (에디션 변경) (68) | 2024.03.12 |
[중요2][활용] 윈도우에 OpenSSH를 이용한 SFTP 서버 설치 및 설정!! (87) | 2024.02.26 |
[중요][활용] Windows Server 2019 - File Server 설치 및 운영!! (100) | 2024.02.22 |
댓글