2016년 6월 13일 월요일

Windows OS에서 흔히 보는 무거운 프로세스 베스트 10



1위: svchost.exe

용도: Windows 서비스의 호스트 프로세스
파일 이름: svchost.exe
위치: %windir%\System32\svchost.exe
이것은 Windows OS 중에서 동작하는 각종 "서비스"를 호스팅 하는 프로세스이다. Windows OS의 서비스는 작업 관리자의 서비스 탭에서 확인할 수 있다. 이러한 서비스를 먼저 시작하기 위해 사용하는 것이 svchost.exe이다. 서비스 처리 부하가 높아지면 이 svchost 프로세스의 CPU 사용률 값이 상승한다.
하나의 Windows 시스템에서 서비스는 수십 개의 동작 하고 있다. 그들은 몇 가지로 그룹화되어 각 그룹마다 svchost.exe 프로세스가 하나씩 시작된다. 따라서 하나의 시스템 중에는 여러 svchost.exe 프로세스가 존재한다.


2위:  TrustedInstaller / TiWorker / msiexec

용도: Windows 설치 프로그램
파일 이름: TrustedInstaller.exe / TiWorker.exe / MSIEXEC.EXE
위치: %windir%\servicing\TrustedInstaller.exe /
% windir%\WinSxS\이하 ( WinSxS 폴더 안에는 여러 버전의 파일을 폴더 별로 나누어 져 저장되어있다 ) /
%windir%\System32\msiexec.exe, 외
이들은 Windows OS에 새로운 프로그램이나 모듈 업데이트 등을 설치하기 위해 이용되는 프로그램이나 그 보조 과정이다. 사용자가 명시 적으로 설치하는 경우뿐만 아니라, 예를 들어 Windows Update에 의한 자동 백그라운드에서 설치 시 등에도 실행 되고 있다.


3위: MsMpEng

용도: Microsoft Security Essentials의 실행 프로그램
파일 이름: MsMpEng.exe
위치: % ProgramFiles%\Microsoft Security Client\MsMpEng.exe
이것은 안티 멀웨어 소프트웨어인 Microsoft Security Essentials의 실행 프로그램이다. 시스템이 부팅 직후부터 실행을 시작하고 상시 파일을 검사하여 악성 코드에 감염되지 않았는지 등을 검사 하고 있다.
일반적으로 백그라운드에서 동작하므로 사용자의 작업에는 별로 영향을 주지 않도록 되어 있다. 그러나 설치되어있는 프로그램이 많으면 스캔에 시간이 걸려 부하도 높아진다.
C 드라이브의 사용량이 많으면 MsMpEng 프로세스의 부하가 높아질 수 있다(부팅 후 수십 분 부하가 높다). 경험상 C 드라이브의 사용량을 억제하거나 하드 디스크가 아닌 SSD로 하면 상당히 개선된다.
MsMpEng 설정을 변경하여 검사의 빈도를 낮추는 방법도 있다. 그러나 보안을 생각하면 그다지 추천 할 수 없다.


4위 : SearchIndexer / SearchProtocolHost / SearchFilterHost

용도: Windows Search (인덱스) 서비스 호스트 프로세스
파일 이름: SearchIndexer.exe / SearchProtocolHost.exe / SearchFilterHost.exe
위치: %windir%\System32\SearchIndexer.exe/
%windir%\System32\SearchProtocolHost.exe/
%windir%\System32\SearchFilterHost.exe
이들은 파일 검색 속도를 고속화 하는 "인덱스"를 만드는 프로세스이다. 새로운 파일이 추가 또는 수정 된 경우에 부하가 무거워 지므로 억제하고 싶으면 제어판의 색인 옵션에서 검색 범위를 제한하는 등의 설정을 실시한다.


5위: wuauclt

용도: Windows Update 관련 프로세스
파일 이름: wuauclt.exe
위치: %windir%\System32\wuauclt.exe
이것은 Windows Update 관련 프로세스이다. 새로운 Windows Update의 업데이트가 있는지 시스템에 적용할지 여부 등의 판단 · 처리 한다.
Windows Update의 처리에 과거 몇 차례 CPU 사용률이 비정상적으로 상승하는 문제가보고 된 적이 있다. CPU 사용률의 증가가 Windows Update의 처리로 인한 여부는 Windows Update 처리 (확인)를 수동으로 시작하거나 정지 시키면서 체크해 보면 된다.
또한 Windows Update에서 업데이트를 적용 하려면 이 wuauclt 프로세스가 아닌 svchost.exe 및 설치 관련 프로세스의 CPU 사용률이 증가 할 수 있다.


6위 : mscorsvw / ngen

용도: .NET Framework의 최적화 과정
파일 이름: mscorsvw.exe / ngen.exe
위치: %windir%\Microsoft.NET\Framework\<옵션>\mscorsvw.exe/
%windir%\Microsoft.NET\Framework\<옵션>\ngen.exe
이것은 .NET Framework를 사용한 프로그램의 " 최적화" 프로세스이다.
.NET Framework를 사용하는 프로그램이나 패치 등을 설치/업데이트 한 직후에 실행 되는 것을 잘 볼 수 있다.
.NET Framework를 사용하여 작성된 프로그램(.NET 어셈블리)는 중간 언어 CIL(Common Intermediate Language) 로 작성 되어 있다. 이러한 프로세스는 이를 미리 컴파일 하여 타겟 CPU의 바이너리 코드로 변환하는 작업을 하고 있다.
예를 들어 개발 도구 Visual Studio를 설치 한 경우, 설치된 .NET 어셈블리의 수가 많으면 처리에 시간이 걸린다. 그럼에도 불구하고 1 ~ 2 시간 정도 지나면 종료 할 것이다.


7위 : taskhost

용도: Windows 작업 호스트 프로세스
파일 이름: taskhost.exe
위치: %windir%\System32\taskhost.exe
taskhost.exe는 Windows OS의 'task'을 시작하는 프로세스이다.
태스크는 정해진 시간과 타이밍(시작하거나 로그온 시 등)에 시작되는 프로세스이다. 작업은 컴퓨터 관리 도구에서 시스템 도구] - [태스크 스케줄러]에서 설정, 관리한다. 지정된 시간과 타이밍이되면 taskhost.exe가 실제 태스크를 담당하는 프로세스를 시작 하도록 한다.
따라서 taskhost.exe가 무거워지는 것이 아니고, taskhost에서 시작되는 프로세스가 무거워지는 경우가 대부분이다. 작업 관리자에서 실행 된 프로세스는 taskhost는 별도의 프로세스로 표시된다.
만약 taskhost의 CPU 사용률이 높아지고 있다면, 그것은 시작하려고 한 작업 측에 문제가 있어서 올바르게 시작할 수 없거나, 혹은 여러 번 다시 시작하려고 시도하고 있다 라고 생각할 수 있다.


8위 : System

용도: Windows NT 커널 시스템
이름:System
PID: 4 (프로세스 ID는 항상 4)
위치: - (없음)
System 프로세스는 Windows OS의 커널에서 실행되는 처리를 담당하는 프로세스이다. 다음의 "System Idle Process"와 같이 가상적인 과정이며, 프로세스 ID는 항상 4이며 대응하는 실행 이미지 파일은 존재하지 않는다(굳이 말한다면, 커널 전체가 이 프로세스에 대응한다).
Windows OS의 커널 내부에서 다양한 모듈 및 서브 시스템 장치 드라이버 등이 작동 하고 있다. 모두 이 시스템 프로세스(및 그 내부에 있는 시스템 스레드)에서 작동 하고 있다. 일반적으로 커널의 처리는 그다지 부하가​​ 높지 않고 System 프로세스가 CPU 사용률의 상위에 나올 수는 없다. 고작 몇 %정도(성능이 낮은 PC라면 더 높을 수도 있다).
하지만 가끔 장치 드라이버 등에서 고장 나면 CPU를 비정상적으로 점유 해 버리는 경우가 있다. 그런 경우 System 프로세스가 CPU 사용률의 상위에 나오거나, 일정한 CPU 사용률이 계속 지속되는 등의 문제가 발생할 수 있다.
새로운 장치와 지원 프로그램 등을 설치하여 CPU 사용률을 계속 높게 유지하는 경우(예를 들어 1 코어씩 계속 소비하는 것을 계속하는 등) 설치 한 장치에 대한 문제 등을 의심해 보면 좋을 것이다.


9위 : System Idle Process

용도: 시스템 유휴 프로세스(가상적인 과정)
이름: System Idle Process
PID: 0 (프로세스 ID는 항상 0)
위치: - (없음)
프로세스를 CPU 사용률 순서로 정렬한 경우 항상 이 "System Idle Process"라는 프로세스가 상단에 있고, CPU 사용률도 90 % 이상으로 되어 있는 경우가 많다. 하지만 이것은 가상적인 과정이며, 실제 이와 같은 이름(파일 이름) 프로그램이 있는 것은 아니다.
시스템에서 실행중인 모든 프로세스는 실행을 위한 큐(대기중인 행렬)에 등록 되어있다. 실행하는 프로세스가 하나도 없으면 가상으로 이 System Idle Process라는 프로세스가 실행되는 것처럼 행동하게 되어 있다.
즉, 이 프로세스가 99 % 실행되는 것은 실제로 CPU가 99% 유휴(대기) 상태라는 것을 나타낸다. 수치가 높아도 걱정할 것은 아니다.
이 프로세스의 PID(프로세스 ID)는 항상 0이다. 만약 0이 아닌 경우 바이러스 등이 위장 하고 있을 가능성이 있다.


10위 : 시스템의 인터럽트

용도: 인터럽트 처리(가상적인 과정)
이름: 지연 프로시저 호출과 인터럽트 서비스 루틴
PID: - (없음 프로세스 ID 부분의 표시는 항상 "-")
위치:  - (없음)
이 시스템 인터럽트도 편의상 프로세스로 표시 되어 있을 뿐 실제로는 해당 프로세스(실행 파일)이 있는 것은 아니다. 이 프로세스를 보면 인터럽트의 '지연 프로 시저 호출' 처리에 얼마나 많은 CPU 파워가 소비되고 있는지를 확인할 수 있다. 그러나 Windows 8 / Windows Server 2012 이후의 작업 관리자에서만 표시된다.
인터럽트는 장치 등에서 송신되는 이벤트 트리거 이며, 예를 들면 데이터 준비가 끝나서 오류가 발생했다는 같은 경우 OS에 그것을 알리기 위해 사용된다.
인터럽트 처리 루틴에서 장치 상태를 확인하고 데이터를 읽어내는 '준비'만 하고 인터럽트 처리를 완료한다. 실제로 데이터의 수신 처리를 실시하는 것은, 인터럽트 "지연 프로시저(지연 절차)"의 책임이다. 즉 인터럽트 발생시 신속하게 대응하는 것이 인터럽트 처리 루틴, 나중에 천천히 사후 처리하는 것이 지연 절차이다.
시스템의 인터럽트 프로세스 CPU 사용률이 높아진다는 것은 인터럽트의 지연 처리 절차가 남아있는 것을 나타낸다. 성능이 낮은 CPU에서는 이 프로세스의 처리에 시간이 걸리기 때문에 시스템의 인터럽트 프로세스의 CPU 사용률이 높아진다.
또한 장치 드라이버에 문제가 있어서 처리가 늦어지고 있는 경우도 CPU 사용률은 증가 하게 된다. 이 경우에도 장치 드라이버 주위의 문제를 의심 할 필요가 있을 것이다.



번외: rundll32
용도: Windows DLL 호스트 프로세스
파일 이름: rundll32.exe
위치: %windir%\System32\ rundll32.exe
이것은 다른 DLL(예를 들면 제어판 애플릿의 DLL) 등을 실행하는 데 사용되는 호스트 프로세스이다. 이 프로세스의 CPU 사용률이 높다는 것은 사실 이 rundll32에 의해 시작되는 프로그램의 CPU 사용률이 높다는 것이다. rundll32가 무엇을 시작했는지는 rundll32 프로세스에 전달 된 매개 변수를 살펴볼 필요가 있다.
그러나 작업 관리자에서 봐도 단순히 "rundll32.exe"이라고만 표시 되고 무엇을 시작하고 있는지 자세히 알 수 없다. 자세히 알아 보려면 SysInternals의 "Process Explorer"와 같은 도구를 이용할 필요가 있다.


번외 : taskmgr / perfmon
용도: 작업 관리자 / 리소스 모니터
파일 이름: taskmgr.exe / perfmon.exe
위치: %windir%\System32\taskmgr.exe /
%WINDIR%\SYSTEM32\perfmon.exe
이것은 작업 관리자와 거기에서 시작되는 리소스 모니터에 해당하는 과정이다. 자신을 가리키는 것이므로 이 항목은 CPU 사용률의 상위에 있다고 걱정할 필요는 없다.


번외 : csrss
용도: 클라이언트 서버 런타임 프로세스
파일 이름: csrss.exe
위치: %windir%\System32\csrss.exe
이것은 Windows OS에 로그온 한 경우의 사용자 세션(사용자 별 프로그램 실행 환경)를 준비 하기 위한 프로세스이다. 이것도 CPU 사용률의 상위에 있다고 해서 특별히 신경 쓸 필요는 없다.


번외 : dwm
용도: 바탕 화면 창 관리자
파일 이름: dwm.exe
위치: %windir%\System32\dwm.exe
이것은 Windows 바탕 화면 관리자 프로세스이다. Windows 7에서 말하는 수의 Aero 미리 보기와 플립 3D 등을 실현 하고 있다. CPU 사용률의 상위에 있다고 해서 특별히 신경 쓸 필요는 없다.


번외 : makecab
용도: Cabinet Maker(.CAB 파일 메이커)
파일: makecab.exe
위치: %windir%\System32\makecab.exe
이것은 .cab 파일 (Windows OS에서 자주 사용되는 파일 압축 형식)을 만들기 위한 프로세스이다. 예를 들어 로그 파일 등을 압축하여 디스크 공간을 넓히기 위해 사용 되고 있다. 대부분의 경우 바로 끝나므로 CPU 사용량 상위에 있다고 해서 특별히 신경 쓸 필요는 없을 것이다.

출처: http://www.devblog.kr/r/8y0gFPAvJ2g8MOY0I3m7vQ93JPqAmT5872Je4n6YT2M