Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

서비스 호스트: 로컬 시스템(svchost.exe) 높은 CPU·디스크 사용량 문제 해결 방법 총정리

작업 관리자를 열었을 때 서비스 호스트: 로컬 시스템(Service Host: Local System, svchost.exe)이라는 프로세스가 CPU와 디스크를 과도하게 점유해 PC가 느려지는 현상을 겪고 계신가요? 이 문제는 생각보다 많은 윈도우 사용자가 겪는 대표적인 성능 저하 원인입니다. 이 글에서는 svchost.exe의 높은 CPU 점유율, 메모리 사용량, 디스크 사용량 문제의 원인을 파악하고 단계별로 해결하는 방법을 자세히 안내합니다.

서비스 호스트: 로컬 시스템(svchost.exe)이란?

서비스 호스트: 로컬 시스템은 그 자체가 하나의 프로그램이 아니라, 여러 시스템 프로세스를 함께 실행하는 일종의 서비스 호스팅 컨테이너입니다. 즉, 이 컨테이너 아래에서 실행되는 어떤 프로세스든 CPU나 디스크 사용량 급증의 원인이 될 수 있기 때문에 문제 해결이 까다로운 편입니다.

서비스 호스트: 로컬 시스템에는 다음과 같은 프로세스들이 포함됩니다.

  • 사용자 관리자(User Manager)
  • 그룹 정책 클라이언트(Group Policy Client)
  • Windows 자동 업데이트(Windows Auto Update)
  • BITS(Background Intelligent Transfer Service)
  • 작업 스케줄러(Task Scheduler)

Ctrl + Alt + Del 키를 눌러 작업 관리자를 연 후 '프로세스' 탭으로 이동하면 '서비스 호스트: 로컬 서비스', '서비스 호스트: 네트워크 서비스' 등 관련 항목을 확인할 수 있습니다. 각 항목을 확장하면 하위에서 실행 중인 다양한 프로세스 목록이 나타납니다.

예를 들어 Windows Update 같은 프로세스는 업데이트 작업 중 일시적으로 많은 시스템 자원을 사용할 수 있지만, 특정 프로세스가 지속적으로 높은 CPU와 디스크 사용량을 유발한다면 별도의 조치가 필요합니다.

시작 전 준비사항

참고: 진행 중 문제가 발생할 경우에 대비해 시스템 복원 지점을 미리 만들어 두는 것을 권장합니다.

문제 해결에 앞서 가장 먼저 할 일은 근본 원인 파악입니다. 서비스 호스트: 로컬 시스템 아래의 어떤 서비스나 프로세스가 높은 CPU·디스크 사용량을 유발하는지 확인해야 합니다. 이를 위해 마이크로소프트에서 무료로 제공하는 Process Explorer 도구를 활용합니다.

Process Explorer로 원인 프로세스 찾기

  1. 마이크로소프트 공식 사이트에서 Process Explorer를 다운로드한 후, procexp64.exe 파일을 마우스 오른쪽 버튼으로 클릭하고 '관리자 권한으로 실행'을 선택합니다.
  2. CPU 열을 클릭하여 프로세스를 CPU 또는 메모리 사용량 기준으로 정렬합니다.
  3. 목록에서 svchost.exe 프로세스를 찾아 마우스 오른쪽 버튼으로 클릭한 후 '속성(Properties)'을 선택합니다.
  4. 속성 창에서 '서비스(Services)' 탭으로 이동하면 해당 프로세스에서 실행 중인 서비스 목록을 확인할 수 있습니다.
  5. 이어서 '스레드(Thread)' 탭으로 이동하면 svchost.exe 내부에서 실행되는 모든 스레드를 볼 수 있습니다.
  6. CPU 열과 Cycles Delta 열을 클릭해 스레드를 정렬한 뒤, 높은 CPU 사용량을 유발하는 서비스나 DLL 라이브러리를 찾습니다.
  7. 문제를 일으키는 해당 서비스를 클릭한 후 'Kill(종료)' 또는 'Suspend(일시 중지)' 버튼을 누릅니다.
  8. 몇 분간 기다린 후 서비스 호스트: 로컬 시스템의 높은 CPU·디스크 사용량이 해결되었는지 확인합니다.
  9. 문제가 계속된다면, 시스템 자원을 많이 차지하는 나머지 스레드에 대해서도 위 과정을 반복합니다.
  10. 범인이 되는 특정 프로세스를 찾아냈다면, services.msc 창에서 해당 서비스를 비활성화해야 합니다.
  11. 이때 4번 단계에서 확인한 정보를 바탕으로 DLL 이름과 서비스 이름을 매핑해야 합니다.

services.msc에서 해당 서비스 비활성화하기

  1. Windows 키 + R을 누른 후 services.msc를 입력하고 Enter 키를 누릅니다.
  2. services.msc 창에서 문제를 일으키는 서비스를 찾아 마우스 오른쪽 버튼으로 클릭한 후 '속성'을 선택합니다.
  3. 서비스가 실행 중이라면 '중지(Stop)'를 클릭하고, 시작 유형 드롭다운 메뉴에서 '사용 안 함(Disabled)'을 선택합니다.
  4. '적용' → '확인'을 클릭해 변경 사항을 저장합니다. 이렇게 하면 서비스 호스트: 로컬 시스템의 높은 CPU·디스크 사용량 문제가 해결될 수 있습니다.

방법 1: SFC 및 DISM 명령 실행

  1. Windows 키 + X를 누른 후 '명령 프롬프트(관리자)'를 클릭합니다.
  2. 명령 프롬프트에 아래 명령어를 입력하고 Enter 키를 누릅니다:
Sfc /scannow
sfc /scannow /offbootdir=c:\ /offwindir=c:\windows (위 명령이 실패할 경우 시도)
  1. 검사가 완료될 때까지 기다린 후 PC를 재시작합니다.
  2. 다시 명령 프롬프트를 열고 아래 명령어를 하나씩 입력하며 실행합니다:
Dism /Online /Cleanup-Image /CheckHealth
Dism /Online /Cleanup-Image /ScanHealth
Dism /Online /Cleanup-Image /RestoreHealth
  1. DISM 명령이 완료될 때까지 기다립니다.
  2. 위 명령이 작동하지 않으면 아래 명령어를 시도해 보세요:
Dism /Image:C:\offline /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows
Dism /Online /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows /LimitAccess

참고: C:\RepairSource\Windows 부분은 복구 원본(윈도우 설치 디스크 또는 복구 디스크)의 실제 경로로 교체해야 합니다.

  1. PC를 재부팅한 후 문제가 해결되었는지 확인합니다.

방법 2: SoftwareDistribution 폴더 삭제

  1. Windows 키 + R을 누른 후 services.msc를 입력하고 Enter 키를 누릅니다.
  2. Windows Update 서비스를 마우스 오른쪽 버튼으로 클릭하고 '중지'를 선택합니다.
  3. 파일 탐색기를 열고 다음 경로로 이동합니다:
    C:\Windows\SoftwareDistribution
  4. SoftwareDistribution 폴더 내의 모든 파일과 폴더를 삭제합니다.
  5. 다시 Windows Update 서비스를 마우스 오른쪽 버튼으로 클릭하고 '시작'을 선택합니다.
  6. 업데이트를 다시 다운로드해 보고 문제가 해결되었는지 확인합니다.

방법 3: Superfetch 비활성화

  1. Windows 키 + R을 누른 후 services.msc를 입력하고 Enter 키를 누릅니다.
  2. 목록에서 Superfetch(SysMain) 서비스를 찾아 마우스 오른쪽 버튼으로 클릭한 후 '속성'을 선택합니다.
  3. 서비스 상태가 '실행 중'이라면 '중지'를 클릭합니다.
  4. 시작 유형 드롭다운 메뉴에서 '사용 안 함'을 선택합니다.
  5. '적용' → '확인'을 클릭합니다.
  6. 변경 사항을 적용하기 위해 PC를 재시작합니다.

위 방법으로 Superfetch가 비활성화되지 않는다면 레지스트리 편집기를 통한 비활성화를 시도해 보세요.

  1. Windows 키 + R을 누른 후 regedit를 입력하고 Enter 키를 눌러 레지스트리 편집기를 엽니다.
  2. 다음 레지스트리 키로 이동합니다:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
  1. PrefetchParameters가 선택된 상태에서 오른쪽 창의 EnableSuperfetch 값을 더블클릭하고 값 데이터를 0으로 변경합니다.
  2. '확인'을 클릭하고 레지스트리 편집기를 닫습니다.
  3. PC를 재시작한 후 문제가 해결되었는지 확인합니다.

방법 4: 레지스트리 수정(Ndu)

  1. Windows 키 + R을 누른 후 regedit를 입력하고 Enter 키를 눌러 레지스트리 편집기를 엽니다.
  2. 다음 레지스트리 키로 이동합니다:
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu
  3. Ndu가 선택된 상태에서 오른쪽 창에서 Start 값을 더블클릭합니다.
  4. Start 값 데이터를 4로 변경하고 '확인'을 클릭합니다.
  5. 모든 창을 닫고 PC를 재부팅해 변경 사항을 저장합니다.

방법 5: Windows Update 문제 해결사 실행

  1. Windows 키 + I를 눌러 설정을 연 후 '업데이트 및 보안'을 클릭합니다.
  2. 왼쪽 메뉴에서 '문제 해결'을 선택합니다.
  3. '시작 및 실행' 섹션에서 Windows Update를 클릭합니다.
  4. '문제 해결사 실행' 버튼을 클릭합니다.
  5. 화면의 지시에 따라 문제 해결사를 실행하고 문제가 해결되는지 확인합니다.

방법 6: 클린 부팅 수행

타사 소프트웨어가 시스템과 충돌하면서 높은 CPU 사용량을 유발하는 경우도 있습니다. 이런 경우 클린 부팅(Clean Boot)을 수행해 최소한의 드라이버와 시작 프로그램만으로 윈도우를 실행한 뒤, 단계별로 원인을 진단하면 문제를 좁혀갈 수 있습니다.

방법 7: Windows Update 서비스 재시작

  1. Windows 키 + R을 누른 후 services.msc를 입력하고 Enter 키를 누릅니다.
  2. 다음 서비스들을 찾습니다:
    - BITS(Background Intelligent Transfer Service)
    - Cryptographic Service(암호화 서비스)
    - Windows Update
    - MSI Installer
  3. 각 서비스를 마우스 오른쪽 버튼으로 클릭해 속성을 열고, 시작 유형이 '자동(Automatic)'으로 설정되어 있는지 확인합니다.
  4. 위 서비스 중 중지된 것이 있다면 서비스 상태에서 '시작'을 클릭합니다.
  5. Windows Update 서비스를 마우스 오른쪽 버튼으로 클릭하고 '다시 시작'을 선택합니다.
  6. '적용' → '확인'을 클릭한 후 PC를 재부팅해 변경 사항을 저장합니다.

방법 8: 프로세서 예약 변경

  1. Windows 키 + R을 누른 후 sysdm.cpl을 입력하고 Enter 키를 눌러 시스템 속성을 엽니다.
  2. '고급' 탭으로 이동한 후 '성능' 항목의 '설정'을 클릭합니다.
  3. 성능 옵션 창에서 다시 '고급' 탭으로 이동합니다.
  4. '프로세서 예약' 항목에서 '프로그램'을 선택한 후 '적용' → '확인'을 클릭합니다.
  5. PC를 재부팅한 후 문제가 해결되었는지 확인합니다.

방법 9: BITS(백그라운드 인텔리전트 전송 서비스) 비활성화

  1. Windows 키 + R을 누른 후 msconfig를 입력하고 Enter 키를 누릅니다.
  2. '서비스' 탭으로 이동한 후 'Background Intelligent Transfer Service' 항목의 체크를 해제합니다.
  3. '적용' → '확인'을 클릭합니다.

방법 10: 시스템 복원 수행

  1. Windows 키 + R을 누른 후 sysdm.cpl을 입력하고 Enter 키를 누릅니다.
  2. '시스템 보호' 탭으로 이동한 후 '시스템 복원' 버튼을 클릭합니다.
  3. '다음'을 클릭하고 원하는 시스템 복원 지점을 선택합니다.
  4. 화면의 지시에 따라 시스템 복원을 완료합니다.
  5. PC를 재부팅해 변경 사항을 저장합니다.

마무리

위 방법들을 순서대로 시도하면 서비스 호스트: 로컬 시스템(svchost.exe)의 높은 CPU 및 디스크 사용량 문제를 대부분 해결할 수 있습니다. 특히 Process Explorer를 활용한 원인 분석부터 시작하면 불필요한 서비스까지 함부로 끄는 실수를 피할 수 있으니 참고하세요. 이 가이드에 대해 추가로 궁금한 점이 있다면 언제든 댓글로 문의해 주세요.