본문 바로가기
[OS]/Windows

[중요][윈도우] 메모리 사용량은 문제가 없는데 메모리 부족!!

by METAVERSE STORY 2024. 3. 25.
반응형
728x170

 

 

문제 상황

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 파일을 생성한다. 

 

 
runSW.zip
0.02MB

 

  • sha256sum: 874b78270c60fe426c3b35c0b5fd00ea35d88c081bb94e03f9b71e4479fe46a7
  • size: 48,856 bytes

 

 

시간이 좀 더 있었으면 왜 이런 문제가 생기는지 분석을 해봤을 것 같은데... 귀찮다. 그냥 삭제. 

 

관련 링크

[1] https://www.file.net/process/runsw.exe.html

 

runSW.exe Windows process - What is it?

RunSW.exe file information RunSW.exe process in Windows Task Manager The process known as RunSwUSB belongs to software runSW Application by Realtek Semiconductor (www.realtek.com.tw) or Netgear (www.netgear.com). Description: RunSW.exe is not essential fo

www.file.net

[2] https://superuser.com/questions/1540897/windows-10-task-manager-under-details-tab-commit-size-clearly-didnt-add-up-t

 

Windows 10 task manager, under Details tab->Commit size, clearly didn't add up to what have shown in Performance->Memory->Commit

I know what committed means, just don't understand where all it goes. Performance Tab Start of process list, sorted by commit size End of process list, sorted by commit size

superuser.com

[3] http://insertwittylinkhere.blogspot.com/2017/12/excessive-modified-memory.html

 

Excessive Modified Memory

Logged into my workstation today and start noticing "Out of memory" errors. Whaatt? This computer has 8GB of memory and doesn't run that muc...

insertwittylinkhere.blogspot.com

 

 

여기를 보면 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초마다 한 번씩 부른다고 가정한다면... :(

 
 
 
 
 
 
 
 
 

출처: https://www.folivoralab.com/166

반응형
그리드형

댓글