Windows 7 - Taskhost.exe CPU 점유 문제
노트북의 CPU 100% 점유 문제 감지기(이름하여, CPU 쿨러)가 이상 현상을 보고하기 시작했습니다. 별다른 작업도 하고 있지 않은데, CPU 쿨러가 미친듯이 돌기 시작하는 것입니다.
작업관리자를 보니 taskhost.exe가 "(1 * 100) / 8"만큼의 CPU 점유율을 보이기 시작했습니다. 즉,
8개 논리 스레드를 가진 시스템이기 때문에 단일 스레드 하나가 무한 루프에 빠졌을 때와 동일한 CPU 사용률을 보이고 있는 것입니다. 재빠르게 작업관리자를 이용해서 덤프를 뜨고 (요즘
덤프 뜨는 재미에 빠졌습니당. ^^) 약 5분 정도였을까... 시간이 지나니 다행히 문제를 발생시킨 taskhost.exe가 스스로 종료는 되었습니다.
그래도, 이런 현상이 또 발생할지도 몰라서 한번 검색을 해보니, 다음과 같은 글에서 해결책이 나왔습니다.
Taskhost.exe
; http://social.answers.microsoft.com/Forums/en-US/w7performance/thread/0882ab46-43ee-4d90-8404-6802f8f4f2cf
질문에 대한 답글 중에서 2개가 의미있습니다.
J.Mac
Wow... so I have struggled most of the weekend with this :(
And I think I have it narrowed down to the Windows RAC task...
This after installing (and buying a few) multiple spyware and antivirus tools... I wonder if I should ask for reimbursement??
Anyway - my cpu was being consumed by the Windows Reliability Analysis Task - the way that I narrowed it down to this was by installing process explorer and letting it show me what was actually running under taskhost.exe
I then went into scheduled tasks and stopped the reliability analysis scheduled activity - and presto the taskhost.exe went away and processor utilization shot down to essentially nothing.
Anyway - that seemed to help me... maybe it will help you
Not sure why it is trying to burn up so much cpu...
Travis Vaske
Here is how you fix it........
Go to task manager end Taskhost.exe then quickly browse to C:\ProgramData\Microsoft\RAC before the process starts back up. Delete all the files inside the subfolders and reboot the machine. This will reset the Reliability database and end the curruption.
위의 답변을 확인했을 때는 이미 taskhost.exe가 종료되어서 테스트를 할 수 없었는데, 일단 "C:\ProgramData\Microsoft\RAC" 폴더에 있는 모든 파일을 지웠으니 다음에 또 이런 현상이 발생하는지 기다려봐야겠습니다.
참고로, 제 경우에도 Windows RAC 문제가 맞는 것 같습니다. 아래의 덤프 분석을 보면 RacEngn.dll이 포함되어 있는 데다, 콜스택에도 RacEngn이 보입니다.
0:000> ~*kb
. 0 Id: 2984.263c Suspend: 0 Teb: 000007ff`fffde000 Unfrozen
RetAddr : Args to Child : Call Site
000007fe`fd2b10ac : 000007fe`00000002 00000000`ff7a1303 00000000`000000ce 00000000`00000000 : ntdll!ZwWaitForSingleObject+0xa
00000000`ff7a216e : 00000000`000000cc 00000000`ff7aa57e 00000000`00000000 00000000`000000cc : KERNELBASE!WaitForSingleObjectEx+0x9c
00000000`ff7a1fb5 : 00000000`00000000 00000000`00000001 00000000`00000000 00000000`001ffa30 : taskhost+0x216e
00000000`ff7a2e4e : 00000000`00000000 00000000`00000000 00000000`001056d0 00000000`00106bf0 : taskhost+0x1fb5
00000000`76faf56d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : taskhost+0x2e4e
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
1 Id: 2984.2b00 Suspend: 0 Teb: 000007ff`fffdc000 Unfrozen
RetAddr : Args to Child : Call Site
00000000`770c9b47 : 00000000`00000003 00000000`00000000 00000000`771b4470 00000000`771b4470 : ntdll!ZwWaitForMultipleObjects+0xa
00000000`76faf56d : 00000000`00000000 00000000`00000000 00000000`00000000 0000034d`b751255d : ntdll!EtwTraceMessageVa+0xe07
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
2 Id: 2984.2f24 Suspend: 0 Teb: 000007ff`fffd6000 Unfrozen
RetAddr : Args to Child : Call Site
00000000`770c90bb : 00000000`00000001 00000000`00000000 00000000`771b4298 00000000`00000000 : ntdll!ZwWaitForWorkViaWorkerFactory+0xa
00000000`76faf56d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!EtwTraceMessageVa+0x37b
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
3 Id: 2984.2ad4 Suspend: 0 Teb: 000007ff`fffae000 Unfrozen
RetAddr : Args to Child : Call Site
000007fe`fd2b10ac : 00000000`00000000 00000000`76fa6246 00000000`00000000 000007fe`fd2e260f : ntdll!ZwWaitForSingleObject+0xa
*** ERROR: Symbol file could not be found. Defaulted to export symbols for RacEngn.dll -
000007fe`d7723c09 : 00000000`003ae620 00000000`003ae620 00000000`00000000 00000000`00000374 : KERNELBASE!WaitForSingleObjectEx+0x9c
000007fe`d773bf12 : 00000000`003ae338 00000000`00000000 00000000`002dc270 00000000`002dbff0 : RacEngn+0x23c09
00000000`76faf56d : 00000000`00000001 00000000`00000000 00000000`00badbad 00000000`00000004 : RacEngn!DllGetClassObject+0xfafe
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
4 Id: 2984.1850 Suspend: 0 Teb: 000007ff`fffac000 Unfrozen
*** ERROR: Symbol file could not be found. Defaulted to export symbols for user32.dll -
RetAddr : Args to Child : Call Site
00000000`76eac95e : 00000000`00000000 00000000`021cf988 00000000`00000000 00000000`000002b8 : user32!SfmDxSetSwapChainStats+0x1a
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ole32.dll -
000007fe`fd4cca7e : 00000000`04d1008c 00000000`00000000 000007fe`fd4e7850 00000000`00000000 : user32!GetMessageW+0x2a
000007fe`fd613bd7 : 00000000`01ec3a60 00000000`00000000 00000000`01ec3a60 000007fe`fd4eb226 : ole32!GetErrorInfo+0x16a
000007fe`fd4d203e : 00000000`01ec3a60 00000000`01ec1e90 00000000`00000000 00000000`00000000 : ole32!CoUnloadingWOW+0x117
000007fe`fd4d358a : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ole32!CLSIDFromString+0xee6
00000000`76faf56d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ole32!CLSIDFromString+0x2432
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
5 Id: 2984.1344 Suspend: 0 Teb: 000007ff`fffaa000 Unfrozen
RetAddr : Args to Child : Call Site
000007fe`fd2b10ac : 00000000`035df9d0 00000000`035df940 00000004`00000004 00000000`000003a8 : ntdll!ZwWaitForSingleObject+0xa
000007fe`d7702111 : 000007fe`d7816f38 000007fe`d7816f38 00000000`00000000 00000000`0000011c : KERNELBASE!WaitForSingleObjectEx+0x9c
00000000`76faf56d : 00000000`00000001 00000000`00000000 00000000`00000000 00000000`00000000 : RacEngn+0x2111
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
6 Id: 2984.1704 Suspend: 0 Teb: 000007ff`fffa8000 Unfrozen
RetAddr : Args to Child : Call Site
000007fe`fd2b10ac : 00000000`01eb6050 00000000`00080000 00000000`01eb6040 00000000`77101f05 : ntdll!ZwWaitForSingleObject+0xa
000007fe`d7722852 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`0000011c : KERNELBASE!WaitForSingleObjectEx+0x9c
00000000`76faf56d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : RacEngn+0x22852
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
7 Id: 2984.2dd4 Suspend: 0 Teb: 000007ff`fffa6000 Unfrozen
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sqlceqp30.dll -
RetAddr : Args to Child : Call Site
000007fe`d79a8570 : 00000000`0371f6a8 00000000`0369ac50 00000000`0369ac50 00000000`0369d9d8 : sqlceqp30!DllCanUnloadNow+0x6c63b
000007fe`d79c7a67 : 00000000`036962d8 00000000`0369da30 00000000`0369da30 000007fe`d7976b8e : sqlceqp30!DllCanUnloadNow+0x6c0a8
000007fe`d7962af2 : 00000000`02c04500 00000000`0369da30 00000000`0036c318 00000000`02c4e758 : sqlceqp30!DllCanUnloadNow+0x8b59f
000007fe`d795d0aa : 00000000`0369da28 00000000`0369da28 00000000`02c045b8 00000000`0036c318 : sqlceqp30!DllCanUnloadNow+0x2662a
000007fe`d79d2241 : 00000000`00000001 00000000`00000000 00000000`036961f0 000007fe`e0f80967 : sqlceqp30!DllCanUnloadNow+0x20be2
000007fe`d7979192 : 00000000`02ec6601 000007fe`e0f38400 00000000`00000000 00000000`0371f818 : sqlceqp30!DllCanUnloadNow+0x95d79
000007fe`d79a8c87 : 00000000`00367398 00000000`0036c318 00000000`02c4e718 00000000`0371f860 : sqlceqp30!DllCanUnloadNow+0x3ccca
000007fe`d79a8570 : 00000000`00000000 00000000`0369ac80 00000000`036957d8 00000000`0371fb90 : sqlceqp30!DllCanUnloadNow+0x6c7bf
000007fe`d79cc3f6 : 00000000`00000000 00000000`0371f980 00000000`00000001 00000000`0371fb90 : sqlceqp30!DllCanUnloadNow+0x6c0a8
000007fe`d7962042 : 00000000`036960f8 00000000`00000000 00000000`00000001 000007fe`e0f724e9 : sqlceqp30!DllCanUnloadNow+0x8ff2e
000007fe`d7962af2 : 00000000`0371fa00 00000000`0036c318 00000000`0369d940 00000000`02c4daf8 : sqlceqp30!DllCanUnloadNow+0x25b7a
000007fe`d795d0aa : 00000000`0369d938 00000000`02c320a8 00000000`00000008 00000000`0036c318 : sqlceqp30!DllCanUnloadNow+0x2662a
000007fe`d79d368d : 00000000`00000001 00000000`00000000 00000000`00367c20 00000000`0371fad8 : sqlceqp30!DllCanUnloadNow+0x20be2
000007fe`d79d5e27 : 00000000`00000000 00000000`0036c301 00000000`0036c318 00000000`0371fb50 : sqlceqp30!DllCanUnloadNow+0x971c5
000007fe`d79401f7 : 00000000`0000005f 00000000`0369d938 00000000`0371fb80 00000000`002f3630 : sqlceqp30!DllCanUnloadNow+0x9995f
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sqlceoledb30.dll -
000007fe`e4310f28 : 00000000`02c4d898 00000000`02ed93c8 00000000`0371fb88 00000000`0371fb80 : sqlceqp30!DllCanUnloadNow+0x3d2f
000007fe`d770b370 : 00000000`00000000 00000000`00000000 000007fe`d78187f8 00000000`00000000 : sqlceoledb30!DllCanUnloadNow+0xf40
000007fe`d77d007e : 000007fe`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : RacEngn+0xb370
000007fe`d77ceffb : 00000000`00000000 00000000`0371fed8 ffffffff`fffffffe 000007fe`d786c5d0 : RacEngn!DllUnregisterServer+0xe546
000007fe`d775446f : 00000000`003ae2e0 00000000`4d4e9b50 00000000`4d4e9b50 000007fe`d786c210 : RacEngn!DllUnregisterServer+0xd4c3
8 Id: 2984.2bcc Suspend: 0 Teb: 000007ff`fffa4000 Unfrozen
RetAddr : Args to Child : Call Site
00000000`76ea899e : 00000000`00000004 00000000`00000000 00160006`000207db 00000259`0036002e : user32!SfmDxSetSwapChainStats+0x1a
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sqlcese30.dll -
000007fe`e0f8e7d0 : 00000000`00000000 00000000`00000004 00000000`00000000 00000000`00000000 : user32!GetMessageA+0x4e
00000000`76faf56d : 00000000`00000000 00000000`00000001 01cbc64f`c0796b90 01cbc64f`c096b790 : sqlcese30!InitSerialization+0x60c4
00000000`770e3021 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
0:000> lm
start end module name
00000000`71680000 00000000`71683000 sfc (deferred)
...[생략]...
00000000`770b0000 00000000`7725b000 ntdll (export symbols) ntdll.dll
00000000`77280000 00000000`77283000 normaliz (deferred)
00000000`ff7a0000 00000000`ff7b4000 taskhost (no symbols)
000007fe`d7700000 000007fe`d7880000 RacEngn (export symbols) RacEngn.dll
000007fe`d7920000 000007fe`d79f1000 sqlceqp30 (export symbols) sqlceqp30.dll
000007fe`e0f30000 000007fe`e0fa4000 sqlcese30 (export symbols) sqlcese30.dll
000007fe`e4030000 000007fe`e40b5000 WinSATAPI (deferred)
000007fe`e4300000 000007fe`e4333000 sqlceoledb30 (export symbols) sqlceoledb30.dll
...[생략]...
000007fe`ff0a0000 000007fe`ff0bf000 sechost (deferred)
000007fe`ff1e0000 000007fe`ff3b7000 setupapi (deferred)
Unloaded modules:
00000000`71e90000 00000000`71f2d000 MSVCR90.dll
000007fe`ed420000 000007fe`ed431000 MSOXMLMF.DLL