Windows 10 Fall Creators Update 이후 svchost.exe 인스턴스는 지속적으로 CPU 시간을 사용합니다


10

Windows 10 Fall Creators Update를 설치 한 후 svchost.exe약 14 %의 CPU 시간을 지속적으로 사용 하는 프로세스가 있습니다.

CPU 사용률 그래프

svchost.exe인스턴스는 세 가지 서비스를 호스팅합니다.

기본 필터링 엔진, CoreMessaging, Windows Defender 방화벽

CPU 시간은 프로세스 해커 가 다음 세 가지 서비스 중 하나에 속할 수없는 프로세스 내부의 스레드에 의해 소비됩니다 .

Process Hacker 스크린 샷

이 세 가지 서비스가 중요한 시스템 서비스로 간주되기 때문에 그에 대한 조치는 어렵습니다. 이러한 서비스는로 중지하거나 비활성화 할 수 없으며 services.msc프로세스를 종료하면 버그 확인 ( CRITICAL_PROCESS_DIED)이 트리거됩니다 . 설정 UI를 통해 Windows Defender 방화벽을 비활성화해도 CPU 사용량이 줄어드는 것은 아닙니다.

아이디어가 없습니다. 이 문제의 원인은 무엇입니까? 이것을 어떻게 더 디버깅 할 수 있습니까? 이러한 서비스를 중지 할 수있는 해결 방법이 있습니까?


업데이트 : @HelpingHand로 디버깅 한 후 이를 Windows Defender Firewall 서비스로 분리했습니다. 프로세스 모니터는 레지스트리에 지속적으로 액세스하고 있음을 보여줍니다.

프로세스 모니터의 스크린 샷

해당 프로세스로 필터링 된 프로세스 모니터 캡처의 CSV 내보내기는 여기에서 사용할 수 있습니다 .

나는 아직도 그 행동을 막을 방법을 찾고 있습니다.


업데이트 2 : Windows 성능 분석기를 사용한 분석에 따르면 대부분의 CPU 시간은 rpcrt4.dll다음 코드에서 소비됩니다 .

Windows 성능 분석기 스크린 샷


1
관리자 프롬프트에서 다음 두 명령을 실행 한 후 다시 시작하십시오. 의 Svchost 프로세스는 다음 높은 CPU를 일으키는 어느 경우 : Sc config BFE type= own다음Sc config MpsSvc type= own
HelpingHand

1
Process Hacker가 이미 있으므로 BFE를 호스팅하는 svchost 프로세스를 찾으면 서비스 탭에서 서비스 이름을 두 번 클릭 한 다음 보안 탭을 보면 관리자가 구성 권한을 수정했다고 생각했을 것입니다. 위의 내용은 저에게 효과적입니다.
HelpingHand

1
아마도 이제 PID로 필터링 된 프로세스 모니터를 실행할 수 있습니다. 무엇이 나타나는지보십시오.
HelpingHand

1
내 컴퓨터에서도 마찬가지입니다. TBH, 최선의 방법은 Windows Performance Toolkit 도구 인 docs.microsoft.com/en-us/windows-hardware/test/wpt 를 설치하는 입니다. 기본적으로 Windows Performance Recorder를 사용하여 추적 파일을 캡처하고 Windows Performance Analyzer를 사용하여 분석합니다. channel9.msdn.com/Shows/Defrag-Tools 에는 이것들에 대한 좋은 쇼가 있습니다.
HelpingHand

1
모듈별로 정렬하지 마십시오. 이 열을 제거하십시오. RPC 이벤트도 추적합니다. 이 파일을 다운로드하고 WPRUI.exe를 실행하고 프로파일 추가를 클릭하고 다운로드 한 WPRP를 선택한 다음 사용자 정의 측정에서 CPU 사용 프로파일 및 네트워크 사용 프로파일을 선택하십시오. 시작을 클릭하고 30 초 동안 사용량을 캡처하십시오. 이제 어떤 PID가 높은 CPU 사용량을 가지며 일반적인 이벤트에서 높은 사용량 및 RPC 이벤트를 가진 EXE에 대한 그래프 / 테이블 필터를보고 어떤 rpc 동작이 수행되는지 확인하십시오
magicandre1981

답변:


11

결과적으로 이것은 인터넷 연결 공유 (ICS)와 관련이 있습니다.

다음에서는 비슷한 결론을 가진 다른 사람들에게 도움이되기를 희망하면서이 결론에 도달 한 방법을 설명하고자합니다.


첫 번째 단계는 문제를 일으키는 서비스를 식별하는 것입니다. Windows 자체의 작업 관리자도 최근에이 작업을 수행하는 방법을 배웠지 만 서비스 구성을 편집 할 수있는 Process Hacker 를 사용했습니다 .

문제가있는 svchost.exe인스턴스를 두 번 클릭하고 서비스 탭을 선택하면 해당 프로세스 내에서 실행중인 서비스가 표시됩니다.

svchost.exe (1688) 속성

svchost.exe많은 Windows 서비스를 동시에 호스팅 할 수있어 어떤 서비스가 문제를 일으키는 지 식별하기 어렵습니다. 최신 버전의 Windows 10은 일반적으로 충분한 RAM을 사용할 수있는 경우 서비스를 격리 하지만 일부 서비스는 여전히 프로세스를 공유합니다.

이러한 경우이며 어떤 서비스가 문제를 일으키는 지 식별하는 가장 쉬운 방법은 서비스를 분리하는 것입니다.

프로세스 해커가이를 수행 할 수 있습니다. 기본 창의 서비스 탭에서 서비스가 프로세스를 공유 할 수 있는지 여부를 구성 할 수 있습니다.

MpsSvc 속성

나중에 의심스러운 서비스 3 개 중 2 개 이상을 자체 프로세스 로 구성해야합니다 .

분명히 Windows Defender는 사용자가 서비스 구성을 방해하는 것을 좋아하지 않으므로이 설정을 성공적으로 변경하려면

  • 해당 서비스에 대해 관리자 그룹에게 모든 권한을 부여하십시오 .
  • 서비스를 비활성화하고
  • 재부팅하여 서비스를 중지합니다 (별도로 중지 할 수 없음).
  • 서비스 유형을 자체 프로세스로 변경하고 서비스를 다시 활성화하십시오 ( 자동 시작으로 설정 ).
  • 이러한 변경 사항을 적용하려면 마지막으로 한 번 재부팅하십시오.

그 후, 위반자 svchost.exe는 단일 서비스 만 호스팅하므로 용의자가 있습니다.

Windows Defender 방화벽 (MpsSvc)

방화벽 서비스 내부의 상황을 분석하기 위해 Windows ADK의 일부인 Windows 성능 레코더 및 Windows 성능 분석기 도구를 사용합니다 .

데이터를 기록하는 것으로 시작하겠습니다. 용의자 svchost.exe가 백그라운드에서 문제를 해결하는 동안 이 파일을 다운로드하고 이를 프로파일로 추가하고 다음과 같이 Windows Performance Recorder를 설정 한 후 레코딩을 시작하십시오.

Windows 성능 레코더 : 1 단계 심사 및 CPU 사용 프로필 확인

녹음을 30 초 정도 실행 한 다음 녹음을 저장하십시오. 저장 한 후 WPA 에서 열기를 클릭 하여 분석을 위해 즉시여십시오.

이곳은 상황이 까다로워지기 시작합니다. 필자의 경우 시스템 활동일반 이벤트 에서 올바른 위치를 보려면 @ magicandre1981의 힌트가 필요했습니다 . 여기에서 RPC 이벤트의 수가 의심스럽게 보입니다.

46.918 Microsoft-Windows-RPC 이벤트

드릴 다운하면 Windows Defender 방화벽 svchost.exe서버win:Startwin:Stop이벤트 에서 많이 나타났습니다 .

RpcServerCall

다음 단계는 이러한 RPC 호출을 보낸 사람을 찾는 것입니다. 클라이언트 쪽 svchost.exe을 살펴보면 다른 인스턴스가 의심스러워 보입니다.

RpcClientCall

실제로 Process Hacker는 해당 프로세스 내에서 실행중인 서비스를 감지 할 수 없어 지속적으로 CPU로드가 발생했습니다.

서비스 그룹 이름 : netsvcs

이 경우 Windows 작업 관리자가 서비스를 식별하는 데 성공했습니다.

인터넷 연결 공유 (ICS)

실제로 서비스는 시작 상태 에 머물러있었습니다 . 필요하지 않으므로 비활성화했으며 다음 재부팅 후 CPU로드가 정상으로 돌아 왔습니다.


의견에 도움을 주신 @HelpingHand 및 @ magicandre1981에 감사를 표하고 싶습니다.


나중에 TenForums post 에서 발견 된 것처럼 Windows Defender Firewall을 재설정하면이 문제가 해결됩니다.


@HelpingHand : Internet Connection Sharing (ICS)서비스를 비활성화하면 어떻게됩니까 ? WiFi 핫스팟이 더 이상 옵션이되지 않습니까?
llinfeng

이것은 프로세스 탐색기에서 약간 더 쉽습니다. 일정한 프로세서 양을 사용하는 "svchost.exe"를 마우스 오른쪽 단추로 클릭하고 (내 경우는 5 % 일정) "서비스"탭을 클릭하면이 svchost에서 어떤 서비스가 실행 중인지 확인할 수 있습니다. 이 경우에는 ICS가 하나만있었습니다. 마찬가지로 인터넷 연결 공유가 시작 상태에 빠졌습니다. "방화벽 및 네트워크 보호"로 이동하여 "방화벽을 기본값으로 복원"을 클릭 할 수있었습니다. 이렇게하면 문제가 즉시 해결되었습니다.
Howard Lince III

@Howard : 운이 좋으 리라 생각하십시오. 저의 시장 복잡성 중 하나는 문제가 발생한 인스턴스를 공유하는 3 개의 서비스로 인해이 문제를 svchost.exe일으키는 서비스를 식별하기 어렵습니다. 왜 그들이 인스턴스에서 호스트 프로세스를 공유하지 않았는지 잘 모르겠습니다.
fefrei

2

더 간단합니다.이 지침을 사용하여 Windows 방화벽 설정 (특히 CPU로드에 관련 스파이크가있는 경우)을 재설정하여 성공했습니다.

Windows Defender 방화벽을 기본 설정으로 재설정하면 문제가 해결되었습니다.

이렇게하려면 설정-> 업데이트 및 보안-> Windows Defender-> Windows Defender 보안 센터 열기-> 방화벽 및 네트워크 보호-> 방화벽 기본 설정 복원을 엽니 다.

이것이 다른 사람에게 도움이되고 효과가 있기를 바랍니다. 상당히 광범위한 문제인 것 같습니다.


1
실제로, 나는 대답의 맨 아래에서 언급했듯이 나에게도 효과가있었습니다. 여기 단계를 반영 해 주셔서 감사합니다!
fefrei

0

필자의 경우, 여러 가지 실패한 수정 (위의 제안 중 일부 (예 : Windows 방화벽 재설정) 포함)을 시도한 후 "진단 정책 서비스"를 비활성화하고 CPU 호깅이 마침내 중단되었습니다. 이것이 이상적인 솔루션은 아니지만 중요한 서비스는 아닙니다. 비활성화하는 방법은 다음과 같습니다.

  1. 관리자로 "시스템 구성"( 'msconfig.exe')을 엽니 다.
  2. 일반 탭 : "선택적 시작"을 선택하십시오
  3. 서비스 탭 : "진단 정책 서비스"를 선택 취소하십시오.
  4. Windows 재부팅

이 솔루션 을 알려준 Ranga Rajesh Kumar의 YouTube 채널 에 감사드립니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.