2009-02-08 3 views
1

Windows 상자에서 코드의 성능을 측정하고 있는데 측정간에 결과가 크게 달라지고 있습니다. 느린 속도의 임시 탐색은 시스템 관리자가 System Idle Processes를 사용하여 거의 100 % CPU를 차지하는 것으로 나타납니다.성능 측정을 방해하는 Windows 시스템의 유휴 프로세스

시스템 유휴 프로세스가 실제로 무엇을 의미하고 어떤 Windows 기능이 실행되고 있는지 알 수 있습니까?

NB : 작업 관리자를 사용하여 성능을 측정하지 않고 방금 느린 측정 중에 다른 제품이 실행되고 있는지 살펴 보았습니다.

프로그래밍 관련이 아니며 질문을 종료한다고 말하기 전에 생각하십시오. 나는 그것이 말할 근거가 있다고 생각하지 않는 한 그것을 묻지 않을 것이다. 이 경우에는 개발 및 테스트 환경에 악영향을 미치고이를 해결하기 위해 분명히 알고 있다고 생각합니다. 좀 더 자세히 알아야합니다. 프로그래밍은 코드 작성으로 시작하고 끝나지 않습니다.

답변

4

유휴 프로세스는 일반적으로 HLT 명령어를 실행하면 CPU 코어를 저전력 상태 (C1)로 설정하는 것 외에는 아무런 유용한 작업을 수행하지 않습니다. 그러나 귀하의 벤치 마크가 100 % CPU 시간을 소비하지 않는다는 사실은 현재 일어나고있는 일에 대한 추측의 문을 열어줍니다.

응용 프로그램이 단일 스레드이고 테스트 시스템이 멀티 코어/하이퍼 스레딩/멀티 CPU 인 경우 두 코어의 CPU 사용 시간이 약 50 %, 4 개의 경우 75 %가 예상됩니다. 작업 관리자의 CPU 시간 백분율에는 모든 코어가 포함됩니다. (이전 버전의 Windows에는이 옵션을 변경할 수있는 옵션이 있지만 Vista에서는 표시되지 않습니다.)

유휴 프로세스가 많은 CPU를 사용하는 경우 응용 프로그램이 많은 시간을 자고. 외부 소스 (예 : 디스크 또는 네트워크)에서 데이터를 기다리는 중일 수 있습니다. 동기화 객체 (예 : 뮤텍스 또는 이벤트)를 기다리는 데 많은 시간을 소비 할 수 있습니다. 또한 Sleep() 함수를 호출하는 데 많은 시간을 소비 할 수도 있습니다. 코드를 프로파일 링하면 시간을 어디에서 소비하는지 확인할 수 있습니다.

완전히 재현 가능한 벤치 마크 결과를 얻으려면 프로세서/디스크/네트워크 집약적 인 백그라운드 응용 프로그램 및 서비스 (예 : 검색 색인 생성, SMS 소프트웨어 인벤토리, 바이러스 검색, Windows Update 다운로드, IncrediBuild/distcc)를 사용하지 않도록 설정하거나 컴퓨터를 연결해야 할 수 있습니다 격리 된 네트워크 (또는 전혀 네트워크에 연결되지 않음).

저는 여러분이 여러분의 응용 프로그램에 대한 벤치 마크를 작성했으며, 작업 관리자를 사용하여 벤치 마크 결과가 예상 한 것과 다른 이유를 진단하려고한다고 가정합니다. 작업 관리자는 응용 프로그램 성능을 정확하게 측정 할 수 없습니다.

2

시스템 유휴 프로세스는 실행을 예약 할 다른 것이 없을 때 Windows가 프로세서에서 실행하는 일종의 기본 프로세스입니다. 이 프로세스는 시스템 전원을 절약하는 등의 일을하는 가정부와 같습니다.

프로그램의 성능을 측정하려면 Windows 작업 관리자를 사용하지 마십시오. 대신 성능 모니터를 사용하십시오 (명령 행에서 'perfmon'을 입력하여 시작할 수 있음). 또는 더 나은 방법은 profiler입니다.

-1

"시스템 유휴 프로세스"가 100 %를 차지하는 경우 본질적으로 시스템이 지루하며 아무 일도 일어나지 않습니다. 작업 관리자에서 진행되는 모든 작업을 추가하는 경우이 숫자를 100 %에서 뺀 다음 "시스템 유휴 프로세스"값을 갖게됩니다. 메모리가 거의 소모되지 않으므로 성능에 영향을 미칠 수 없습니다.

관련 문제