Scvhost.exe 프로세스가 CPU 또는 Memory 리소스 사용량이 많을 경우 이를 분석하고자 할 때, 어떤 방법을 시도해 볼 수 있을까요? 하나의 Svchost.exe 프로세스에는 1개 이상의 서비스가 포함되어 있기 때문에 어떤 서비스에서 리소스 사용량이 많은지 쉽게 판단하기 어렵기 때문에 의심이 되는 특정 서비스를 단독으로 수행되도록 격리할 수 있는 방법이 필요합니다. BhLim님께서 알려 주신 자료를 조금 보완하여 아래와 같이 정리하였습니다.


일반적으로 작업관리자로 보면 Windows System에는 여러 개의 Scvhost.exe 인스턴스가 동시에 수행되고 있는 것을 볼 수 있습니다.




Registry Editior 로 아래 경로를 확인해 보면 Svchost 그룹에 등록된 서비스 목록을 확인할 수 있습니다.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost


Windows 7 에서 기본값으로 시작중인 'Windows Update' 서비스는 netsvcs 그룹에 포함되어 있는 것을 확인할 수 있습니다.




Tasklist 명령으로 각 Svchost.exe 프로세스에서 수행되고 있는 서비스 목록을 확인할 수 있습니다.

C:\> Tasklist /svc /fi "imagename eq svchost.exe"


Windows Update 서비스의 서비스 이름 wuauserv 가 PID 996 번 svchost.exe 에서 실행되고 있는 것을 확인할 수 있습니다.




Windows Update 서비스를 단독으로 격리하는 방법은 아래와 같습니다.

C:\> sc config wuauserv type= own
[SC] ChangeServiceConfig SUCCESS

-- Windows Update 서비스를 재시작 합니다.
C:\> sc stop wuauserv
C:\> sc start wuauserv

-- Svchost.exe 프로세스 내 서비스를 확인합니다.
C:\> Tasklist /svc /fi "imagename eq svchost.exe"


wuauserv 서비스가 다른 프로세스로 격리된 것을 확인할 수 있습니다.



Svchost.exe 그룹에서 서비스 격리 후 문제가 되는 프로세스를 찾았다면 디버깅 툴을 사용하여 리소스 사용 이슈와 관련하여 트러블슈팅을 진행할 수 있습니다.


[참고자료]
Sc config
http://technet.microsoft.com/ko-kr/library/cc990290(WS.10).aspx#Mtps_DropDownFilterText

Windows XP Professional Edition의 Svchost.exe에 대한 설명
http://support.microsoft.com/?kbid=314056

TASKLIST 프로세스 정보
http://laigo.kr/89


작성자 : Lai Go / 작성일자 : 2009.12.28

Posted by Lai Go