많은 Windows 사용자가 서비스 호스트: 로컬 시스템(네트워크 제한) 프로세스가 CPU 또는 디스크의 최대 95%를 차지하는 문제로 고통받아 왔습니다. 이 문제는 Windows 8 시절 처음 나타나 이후 Windows 10 사용자들도 계속 괴롭히고 있습니다. 이 문제에 영향을 받은 사용자들은 해당 프로세스가 CPU의 최대 95%, 그리고 하드 디스크 드라이브의 데이터 읽기/쓰기 성능 중 최대 72MB/s를 점유한다고 보고했습니다. 상당히 심각한 수치입니다.
그러나 서비스 호스트: 로컬 시스템(네트워크 제한) 자체는 하나의 특정 서비스가 아니라 여러 Windows 시스템 서비스가 실행되는 통칭이기 때문에 다소 모호합니다. 따라서 그중 어떤 서비스든 비정상적으로 높은 CPU 및/또는 디스크 사용량을 유발할 수 있습니다. 게다가 이 문제는 비페이지 풀(non-paged pool) 메모리 누수로 인해 발생하기도 합니다. 다행히 많은 연구 끝에 이 문제의 가장 흔한 원인이 Superfetch(SysMain)라는 Windows 시스템 서비스인 것으로 밝혀졌습니다. Microsoft는 이 서비스가 시간이 지남에 따라 컴퓨터 성능을 유지하고 개선한다고 주장하지만, 실제로는 언제든 문제를 일으킬 수 있는 요소입니다. 만약 Superfetch가 원인이 아니라면, 대부분 비페이지 풀의 메모리 누수가 원인일 가능성이 높습니다.
해결 방법을 진행하기 전에 먼저 시스템 방화벽이 중요한 서비스나 애플리케이션을 차단하고 있지 않은지 확인하세요. 또한 Windows 업데이트를 일시적으로 비활성화하여 업데이트가 문제의 원인인지 확인해 보는 것도 좋습니다.
사전 준비: 손상된 시스템 파일 복구
아래 해결 방법을 진행하기 전에 모든 시스템 파일이 온전하고 손상되지 않았는지 확인하는 것이 중요합니다. Restoro 같은 복구 도구를 다운로드하여 실행하면 손상되거나 누락된 파일을 스캔하고 복원할 수 있습니다. 점검이 완료되면 아래의 해결 방법들을 순서대로 진행하세요.
방법 1. Superfetch 및 백그라운드 지능형 전송 서비스(BITS) 비활성화
Superfetch와 백그라운드 지능형 전송 서비스(Background Intelligent Transfer Service)는 애플리케이션 실행 속도를 높이고 백그라운드에서 실행되는 서비스들을 효율적으로 관리하고 스케줄링하는 역할을 합니다. 하지만 때때로 오작동하거나 동기화가 제대로 되지 않으면 높은 CPU 사용량을 유발할 수 있습니다. 이 경우 두 서비스를 비활성화하면 문제가 해결될 수 있습니다.
- Windows 로고 키 + R을 눌러 실행(Run) 명령 창을 엽니다.
- 실행 대화상자에 services.msc를 입력하고 Enter 키를 누릅니다.
- 서비스 목록을 스크롤하여 SysMain(Superfetch)이라는 이름의 서비스를 찾습니다.
- SysMain을 더블클릭하여 설정을 엽니다.
- 중지 버튼을 클릭하여 서비스를 중지합니다.
- 시작 유형을 사용 안 함(Disabled)으로 변경합니다.
- 적용을 클릭한 후 확인을 클릭합니다.
- 이제 백그라운드 지능형 전송 서비스(Background Intelligent Transfer Service)를 찾아 더블클릭하여 설정을 엽니다.
- 중지 버튼을 클릭하여 서비스를 중지합니다.
- 시작 유형을 사용 안 함으로 설정합니다.
- 적용과 확인을 클릭하여 변경 사항을 저장합니다.
- 컴퓨터를 재시작하고 문제가 해결되었는지 확인합니다.
방법 2. 비페이지 풀 메모리 누수 수정
방법 1이 효과가 없더라도 걱정하지 마세요. 아래 방법으로 문제를 해결할 수 있습니다. 이 방법을 적용하려면 다음 단계를 따르세요:
- Windows 로고 키 + R을 눌러 실행(Run) 창을 엽니다.
- 실행 대화상자에 Regedit를 입력하고 Enter 키를 누릅니다.
- 레지스트리 편집기 왼쪽 창에서 다음 경로로 이동합니다:
HKEY_LOCAL_MACHINE > SYSTEM > ControlSet001
- 왼쪽 창에서 Services를 클릭한 후 아래로 스크롤하여 "Ndu"를 선택합니다.
- 오른쪽 창에서 Start라는 이름의 레지스트리 값을 찾아 더블클릭하여 수정합니다.
- 값 데이터(Value data)를 4로 변경합니다. 이렇게 하면 해당 기능이 비활성화되어 비페이지 풀의 메모리 누수가 차단됩니다.
- 확인을 클릭합니다.
- 레지스트리 편집기를 닫습니다.
- 컴퓨터를 재시작합니다. 부팅 후에는 서비스 호스트: 로컬 시스템(네트워크 제한)이 더 이상 CPU와 디스크를 대량으로 점유하지 않는 것을 확인할 수 있을 것입니다.
방법 3. 시스템 파일 검사기(SFC) 실행
시스템 파일 검사기(System File Checker, SFC)는 Windows에 내장된 도구로, 필수 시스템 파일들의 목록을 인터넷에서 가져와 현재 컴퓨터에 있는 버전과 비교합니다. 불일치가 발견되면 최신 버전을 자동으로 다운로드하여 교체합니다. 시스템 파일에 문제가 있는 경우 SFC를 실행하면 높은 CPU 사용량 문제가 해결될 수 있습니다.
- 시작 메뉴를 열고 'cmd'를 입력합니다. 명령 프롬프트 아이콘을 마우스 오른쪽 버튼으로 클릭하고 '관리자 권한으로 실행'을 선택합니다.
- UAC(사용자 계정 컨트롤) 프롬프트가 나타나면 허용합니다.
- 명령 프롬프트에 "sfc /scannow"를 입력하고 Enter 키를 누릅니다.
- 검사와 복구가 완료될 때까지 기다립니다. 성공하면 'Windows 리소스 보호에서 손상된 파일을 발견했으며 이를 성공적으로 복구했습니다'라는 메시지가 표시됩니다. 자세한 내용은 CBS.Log에 기록되며 다음 위치에서 확인할 수 있습니다:
%WinDir%\Logs\CBS\CBS.log
- 이어서 다음 명령어를 입력합니다:
dism /Online /Cleanup-Image /RestoreHealth
- 명령 실행이 완료된 후 CPU 및 메모리 사용률을 모니터링하여 문제가 여전히 존재하는지 확인합니다.
방법 4. SVChost 프로세스 종료
작업 관리자에서 서비스 호스트(SVChost) 프로세스를 강제 종료하면 이 문제가 해결되는 경우가 있습니다. 종료 후에는 데이터 무제한 Wi-Fi 연결 환경에서 대기 중인 업데이트를 다운로드해 보세요.
- Ctrl + Shift + Del 키를 눌러 Windows 작업 관리자를 실행합니다. 작업 표시줄을 마우스 오른쪽 버튼으로 클릭하고 작업 관리자를 선택해도 됩니다.
- 추가 세부 정보를 클릭하여 작업 관리자를 확장합니다. 그러면 실행 중인 모든 프로세스가 표시됩니다.
- 프로세스 목록에서 "서비스 호스트: 로컬 시스템(Service Host: Local System)"을 검색합니다. 이 프로세스는 Windows Update와 Update Orchestrator Service를 호스팅합니다. 해당 작업을 선택하고 작업 끝내기를 클릭합니다.
- 확인 대화상자가 나타나면 저장되지 않은 데이터를 취소하고 종료 체크박스에 체크한 후 종료를 클릭합니다.
- CPU 사용률을 모니터링하여 문제가 해결되었는지 확인합니다.
방법 5. 클린 부팅 수행
경우에 따라 타사 애플리케이션이나 서비스가 높은 CPU 사용량의 원인일 수 있습니다. 따라서 이 단계에서는 시작 시 모든 필수적이지 않은 서비스와 애플리케이션을 비활성화하여 시스템을 클린 부팅합니다. 어떤 애플리케이션/드라이버가 문제를 일으키는지 직접 찾아야 하지만, 특히 아래 애플리케이션들이 이 문제를 유발하는 것으로 알려져 있습니다.
- 가상 디스크 앱(Virtual Disc App)
- Dragon Naturally Speaking
- MST Command Center
- VPN 크롬 확장 프로그램
- HP 관련 프로세스(특히 HP Help)
클린 부팅을 수행하려면:
- 관리자 계정으로 컴퓨터에 로그인합니다.
- "Windows" + "R" 키를 눌러 "실행(RUN)" 프롬프트를 엽니다.
- "msconfig"를 입력하고 "Enter" 키를 누릅니다.
- "서비스" 탭을 클릭하고 "모든 Microsoft 서비스 숨기기"에 체크합니다.
- "모두 사용 안 함(Disable All)"을 클릭한 후 "확인"을 클릭합니다.
- "시작 프로그램" 탭을 클릭하고 "작업 관리자 열기" 옵션을 선택합니다.
- 작업 관리자에서 "시작 프로그램" 탭을 클릭합니다.
- 목록에서 "사용" 상태로 표시된 애플리케이션을 선택하고 "사용 안 함"을 클릭합니다.
- 목록의 모든 애플리케이션에 대해 이 과정을 반복한 후 컴퓨터를 재시작합니다.
- 이제 컴퓨터가 "클린 부팅" 상태로 시작됩니다.
- 문제가 사라졌는지 확인합니다.
- 더 이상 오류가 발생하지 않는다면, 서비스를 하나씩 활성화하면서 어떤 서비스를 활성화했을 때 오류가 다시 나타나는지 식별합니다.
- 해당 서비스를 다시 설치하거나 비활성화 상태로 유지합니다.
방법 6. Windows Update 배달 최적화 비활성화
Windows 업데이트는 처리 속도를 높이기 위해 배달 최적화(Delivery Optimization) 기능을 사용합니다. 하지만 이 배달 최적화가 작동 중 멈춰 서비스 호스트의 높은 CPU 사용량을 유발할 수 있습니다. 이 경우 배달 최적화를 끄면 문제가 해결될 수 있습니다. Windows 업데이트 속도나 최적화에 다소 영향이 있을 수 있지만, 높은 CPU 사용량을 제거하는 데는 충분히 감수할 만한 trade-off입니다.
- Windows 버튼을 클릭하고 Windows Update를 검색한 후 결과 목록에서 Windows 업데이트 설정을 클릭합니다.
- 고급 옵션을 클릭합니다.
- 배달 최적화를 클릭합니다.
- 다른 PC의 다운로드 허용 스위치를 끔으로 변경합니다.
- 시스템을 재시작하고 문제가 해결되었는지 확인합니다.
방법 7. Windows Update 서비스 재시작
위의 방법들이 도움이 되지 않았다면 Windows Update가 업데이트 중간에 멈춰 있어 CPU와 디스크 사용량 급증을 유발할 가능성이 있습니다. 아래 단계를 따르세요:
- 명령 프롬프트를 검색하고 "관리자 권한으로 실행"을 클릭합니다.
- 다음 명령어를 하나씩 입력합니다:
net stop bits net stop wuauserv net stop appidsvc net stop cryptsvc ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak ren %systemroot%\system32\catroot2 catroot2.bak net start wuauserv net start bits net start appidsvc net start cryptsvc
- 사용률이 안정화되었는지 확인합니다.
위의 모든 방법으로도 해결되지 않는다면, chkdsk 명령을 실행하여 시스템 하드 드라이브의 문제를 점검하고 복구해 보세요.