윈도우 System CPU 점유율 문제 해결 방법

윈도우2020. 7. 2. 11:31

*결론: 저의 경우에는 키보드 마우스 공유 프로그램인 시너지 프로그램(Synergy)으로 인해 발생한 메모리 누수 문제였습니다. 아래에는 문제 해결하는 긴 과정이 적혀있으니.. ㅎㅎ 그냥 참고용으로 봐주시면 좋겠습니다.

 

idle상태에서도 System의 점유율이 계속 높았습니다.

 

System이 어떤 녀석인가 보니.. ntoskrnl.exe라는 윈도우 관련 파일입니다.

ntoskrnl은 Windows NT operating system kernel을 의미하는데 윈도우 시스템의 기본적인 부분이라고 하네요.

 

흠.. 조금 만지작 거리고 컴퓨터 재부팅을 했더니 증상이 괜찮아졌네요.

Nox를 지워서 그런 것일까요? 아니면 로지텍 options라는 프로그램을 지워서 그런 것일까요? 아니면 재부팅 후 일시적으로 괜찮아진 것인지.. 좀 더 지켜봐야겠습니다.

 

*며칠 뒤 결과

컴퓨터를 계속 켜두니 동일한 증상이 발생했습니다. 똑같이 재부팅하니.. 증상이 나아지네요.

어디서 충돌이 생기는 것 같은데 ㅎㅎ;; 원인을 찾을 수 있을지 모르겠네요.

 

*7월7일:

정확한 원인을 찾기가 어렵네요;

WPA(Windows Performance Analyzer)를 깔아서.. 디버깅을 해보려고 합니다. 이 프로그램은 과거에 Windows Performance Toolkit이라고 불린 것 같은데 윈도우 SDK?에서 선택적으로 설치가 가능합니다.

혹은 https://www.microsoft.com/ko-kr/p/windows-performance-analyzer/9n0w1b2bxgnz?activetab=pivot:overviewtab 경로에서 WPA만 다운로드 가능한 것 같네요.

 

프로그램 설치 후 cmd를 관리자 권한으로 실행시킨 뒤 아래의 명령어를 입력하면 진단 자료를 얻을 수 있습니다.

xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl

이슈 발생시 분석 데이터

처음에는 <Symbols disabled>때문에 자세한 정보를 얻을 수 없습니다.

 

메뉴에서 Trace > Load Symbols를 하면 심볼을 자동으로 읽어 오네요?

심볼을 다 읽어오는데는 20분 정도 걸리는 것 같습니다만.. 처음 몇분만 지나면 웬만한 건 다 읽어 오는 것 같습니다.

 

제가 윈도우 개발자도 아니고.. 디버깅을 잘 할줄 모릅니다만.. MiWalkPageTables에서 문제가 생긴 것 같습니다.

재부팅 후 정상적인 경우에도 MiWalkPageTables는 존재하네요.

 

간단하게 찾아보니 윈도우 메모리 페이지? 관련된 것 같습니다. 각 프로세스마다 이걸 사용하고 있어서 위의 정보만으로는 정확히 어떤 프로세스에서 문제를 일으키는지 알기 어려울 것 같네요.

 

Is your system short on RAM? Please post snaps of Task Manager's Performance tab | Memory page, plus the Details page sorted by the Working set column; plus Resource Monitor's Memory tab, sorted by the Hard Faults column; and RAMmap's Use Counts page.

 

1. 작업 관리자 > 성능 탭 > 메모리

2. 작업 관리자 > 성능 탭 > 하단의 리소스 모니터 열기 > 메모리 탭?

   - 작업 집합 내림차순

   - 페이지 폴트/초 내림차순

3. RAMMap의 Use Counts(https://docs.microsoft.com/en-us/sysinternals/downloads/rammap)

 

문제가 발생하면.. 윗 부분을 점검해보려고 합니다.

간단하진 않네요 ㅎㅎ;;;

 

저의 경우 컴퓨터를 좀 오래 켜두면.. 램이 32기가가 장착되어 있어도.. 램이 부족해지는 현상이 발생하며 CPU 사용률도 올라갑니다. 이런 상황에서 확인을 해보면.. 메모리는 크롬에서 엄청 사용하고 있었습니다. 그래서.. 지금은 구글 크롬에서 메모리 누수?가 발생해서 이런 문제가 생기는 게 아닐까. 추측만 하는 상태입니다.

 

*7월9일 결과:

이슈가 발생한 상태에서 메모리쪽을 나름 자세히 살펴봤지만.. 어디서 문제가 발생했는지는 찾지 못했습니다.

문제가 발생했을 때 RamMap을 보면.. 32기가의 램 가운데 약 14기가의 램이 사용중이라고 뜨며 그 중에서 대부분이 Standby인게 문제가 아닌가 의심해봅니다. Mapped File에서 Standby인 용량이 무려 13기가 정도 되네요. 이게 비정상적 상황같습니다.(아닐 수도 있음;)

 

크롬 탭을 많이 실행 중인 상황이었고.. 유튜브도 재생중이었는데 이 상황에서 바로 재시작을 시작했더니 블루스크린이 발생했습니다.

 

SYSTEM_THREAD_EXCEPTON_NOT_HANDLED

 

블루스크린.. 디버깅 하는 법을 조금 알기에 재부팅 후 WinDbg를 이용해 블루스크린 디버깅을 약간 해봤습니다.

(참고:윈도우10 블루스크린 DRIVER_POWER_STATE_FAILURE 해결 후기(방법))

 

 

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (7e)
This is a very common bugcheck.  Usually the exception address pinpoints
the driver/function that caused the problem.  Always note this address
as well as the link date of the driver/image that contains this address.
Arguments:
Arg1: ffffffffc0000005, The exception code that was not handled
Arg2: fffff8034bad3de5, The address that the exception occurred at
Arg3: ffff848a02505768, Exception Record Address
Arg4: ffff848a02504fb0, Context Record Address

Debugging Details:

------------------
KEY_VALUES_STRING: 1

    Key  : AV.Dereference
    Value: NullClassPtr

 


    Key  : AV.Fault 
    Value: Read

 

(생략)

SYMBOL_NAME:  nt!KeGetNextKernelStackSegment+9
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: nt

IMAGE_NAME:  ntkrnlmp.exe

 

처음보는 블루스크린입니다. 그러나 관련된 파일을 보면 ntkrnlmp.exe네요.

지금 ntoskrnl.exe에서 발생한 문제를 추적하고 있고.. 메모리와 관련된 문제를 의심하고 있는데 ntkrnlmp.exe(NT kernel map?)에서 블루스크린까지 발생하니.. 다 동일한 문제 같네요.

 

6: kd> .exr ffff848a02505768

명령어를 입력해서 좀 더 봅니다.


ExceptionAddress: fffff8034bad3de5 (nt!KeGetNextKernelStackSegment+0x0000000000000009)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: 0000000000000010
Attempt to read from address 0000000000000010

 

구글링을 해보면 아래의 링크에 비슷한 문제를 겪은 사람이 상담을 받은 내용이 있습니다.

https://answers.microsoft.com/en-us/windows/forum/all/blue-screen-system-thread-exception-not-handled/eea43189-23c7-4e1e-9bf5-1fa08990aa86

 

BugCheck 1000007E, {ffffffffc0000005, fffff80082a8382d, ffffd0004629b798, ffffd0004629afb0}

Probably caused by : ntkrnlmp.exe ( nt!KeGetNextKernelStackSegment+9 )

ntkrnlmp.exe is a Windows component which means something else drove it into Fault.

ntkrnlmp.exe는 윈도우 파일이고 그러니 다른 무언가가 이 파일에 문제가 생기게 했다는 것입니다.

 

문제 원인 찾는건 쉽지 않아 보이네요. 위의 글에서 나온 해결책은 4가지입니다.

 

1. 노트북 제조사에 문의

2. 메모리 자세히 검사하기

3. 아래에 명시된 다른 모든 방법들 해보기

4. 필요하다면 Driver Verifier를 사용해서 문제를 발생시키는지 보기

 

흠.. 메모리는 교체 전에도 문제가 발생했기 때문에 특정 드라이버의 문제가 아닌지 의심됩니다.

그런데 드라이버의 종류가 너무 많아서 어떤 드라이버가 문제인지 추정하기가 힘드네요. 자료를 좀 더 찾아봐야겠습니다.

 

*7월13일:

 

1. 문제가 발생했을 때 램 상태

 

2. 재부팅 후 램 상태
3. 재부팅 후 크롬 탭을 모두 복원했을 때 램 상태

문제 상황은.. 컴퓨터를 끄지 않고 며칠 지나면 계속 발생하는 것 같습니다. 램과 관련된 문제가 맞는 것 같은데 정확한 원인을 모르겠네요. 흠.. 다시 문제가 재현되기를 기다렸다가.. 문제 재현시 실행중인 프로세스를 최대한 끈 상태에서 RamMap 덤프?를 떠서.. 문제점을 찾아봐야겠습니다.

 

아참.. 그리고 작업 관리자에서 세부정보 탭에서.. 상단 타이틀?에서 마우스 오른쪽 클릭을 하면 열 선택 메뉴가 있는데 이 메뉴를 클릭하면.. 추가로 보여지는 행을 선택할 수 있습니다. 문제 상황 발생시..추가한 커밋 크기와 핸들도 봐야겠어요.

 

*7월15일:

또 이슈가 재현됐습니다. 컴퓨터를 켜놓고.. 이틀정도 지나면 문제가 발생되는 것 같네요.

증상은 똑같았습니다. System, WMI Provider Host의 점유율이 높았으며 실행된 프로그램을 최대한 종료해도.. 기본적으로 사용되는 메모리가 16기가정도 되네요;; 그 중에 대부분은 캐시됨(13.2GB)으로 되어있습니다. 윈도우 운영체제에 대해 잘 모르나.. 이게 아마 메모리 누수 그런 게 아닌가 싶네요.

 

이 시점에 RamMap을 떠서 원인을 찾아보려 했으나 RamMap에서는 딱히 문제를 찾을 수 없었습니다.

 

그러다가 며칠 전에 발견한 작업관리자에서 추가로 확인 가능한 핸들(handle)을 확인해봤는데 synergd.exe가 확실히 이상하더라구요. 시너지 프로그램은 하나의 키보드와 마우스를 다른 컴퓨터에서도 쓸 수 있도록 해주는 프로그램입니다. 이 프로그램이.. 생각보다 문제가 많은 것 같아요. 이 녀석이 램 누수를 만든 원인이 아닐까.. 강하게 의심이 갑니다.

시너지는 실행이 되지 않아도 데몬은 항상 동작하나봐요. 흠. 어쨋든 설치된 시너지의 버전을 보니 1.10.3-stable-ca35737a이고 빌드 데이트는 작년 9월이네요.

시너지 공식 홈을 방문해보니.. 더 최신 버전이 있습니다. 설치를 해줍니다.

1.11.1-stable-55ec3105버전이 설치됐습니다.

 

재부팅 후 확인해보면 시너지의 핸들 수는 처음에는 300개가 조금 안되네요. 

핸들은 프로세스의 오브젝트 테이블의 수를 의미하며 파일이나 레지스트리 키, 쓰레드 등과 같은 시스템 리소스를 의미한다고 하네요. 아마.. 램이랑도 관련이 있지 않을까요?

 

https://github.com/symless/synergy-core/issues/4577

시너지 깃헙에서 찾아보면.. 위의 이슈와 동일한 이슈 같습니다.

 

새 버전에선 어떤지 지켜보겠습니다.

 

재부팅 후 2시간 정도 지난 것 같은데 핸들이 4025개네요. 계속 증가하는 것 같습니다. ㅡ.ㅡ;;

1시간동안 증가하는 양을 보니.. 2600 핸들이 증가하네요.

 

바로 최근에 이슈가 생겼을 때 핸들의 수가.. 무려 142,097개였는데 1시간동안 핸들 수가 2600이 증가한다면.. 약 54.6시간이 걸립니다. 컴퓨터 켜놓고 이틀이 좀 넘으면 해당되는데 과거 이슈가 발생한 시간을 보니.. 이슈와 관련성이 깊어 보이네요.

 

*7월16일: 시간이 지날수록 synergyd의 핸들 수와 메모리 사용량이 증가하고 있습니다.

*7월17일:

시너지 새 버전에서.. 또 문재가 재현됐습니다.

synergyd의 핸들 수가 늘어나면서 메모리 누수?가 발생하고.. 추척되지 않는 메모리 사용량이 비정상적으로 늘어나고 이로 인해 System과 WMI Provider Host의 CPU 점유율도 증가하는 것이 아닌가 싶습니다. 이제는 synergy를 지우고 증상을 지켜보려고 합니다.

 

*7월20일:

시너지 프로그램의 메모리 누수 문제가 맞았던 것 같습니다.

컴퓨터를 켜놓은지 3일이 지나도 System, WMI Provider Host의 cpu 점유율 문제가 발생하지 않고 있습니다. 이런 적은 처음입니다.

 

컴퓨터를 켠지 3일하고 10시간이 다되갑니다. 총 핸들의 수는 13만개로.. 생각보다는 높아졌네요. 이슈가 발생했을 때 핸들의 수를 몰라서 이게 정상적인 값인지는 모르겠습니다.

System과 WMI Provider Host의 cpu점유율이 아주 낮게 유지되고 있습니다. 따라서 온도도 낮으며 노트북의 팬도 조용합니다.

핸들의 수를 봐도 비정상적인 수치는 보이지 않습니다.

그런데 메모리 사용량은.. 크롬과 엣지를 많이 켜놔서 그런지 생각보다 많이 사용하고 있습니다. 아직까지 별다른 문제는 없으나 메모리 사용량을 좀 주의해서 봐야할 것 같습니다.

 

*7월23일:

컴퓨터를 켜놓은지 5일, 6일이 지나도 기존의 문제가 재현되지 않았습니다.

문제가 완전히 해결된 것 같습니다. 핸들 수는 조금씩? 증가하는 것 같은데 성능에는 지장이 없습니다.

 

참고

윈도우 CPU 사용률 디버깅하는 법:

https://superuser.com/questions/527401/troubleshoot-high-cpu-usage-by-the-system-process

 

Troubleshoot High CPU usage by the "System" process

I have noticed that from some time my system is freezing and its probably caused by the high CPU usage which is caused by the system process. All applications I'm running is the Skype, TeamSpeak and

superuser.com

MiWalkPageTables에 대한 자세한 설명:

superuser.com/a/1360099/1090725

 

How to control CPU Usage of ntoskrnl.exe!MiWalkPageTablesRecursively

Following the post on tracking high CPU usage by the kernel, I thought I had debugged an issue that had been plaguing me, namely 20-30% consistent CPU usage by the System process. See my previous p...

superuser.com

 

작성자

Posted by 드리머즈

관련 글

댓글 영역