이 질문과 관련:Perfmon "% Processor Time" 카운터가 어떻게 100%를 초과할 수 있습니까?
사용자가 문제를 보고했을 때 작업 관리자에서 프로세스를 수동으로 관찰하고 있었고 Oracle 프로세스는 지속적인 시간(5-15분) 동안 80%-95%를 사용하고 있었습니다.
그래서 저는 지난 며칠 동안 해당 프로세스를 추적하기 위해 perfmon을 사용해 왔으며 짧은 기간 동안 100% 이상으로 진행되는 것을 확인했습니다. 따라서 perfmon에서는 모든 프로세서에 대한 합계인 것으로 보입니다.
내 질문은 내가 작업 관리자에서 본 80-95%가 실제로 성능몬의 160-180%에 해당한다는 것입니다. 그렇죠?
(분명히 일부 프로세스는 모든 프로세서를 효율적으로 사용하지 못할 수도 있다는 점을 고려합니다.)
작업 관리자는 여기에서 80-95%의 CPU를 표시했습니다.
성능 모니터는 단일 프로세스 개체에 대해 100% 이상으로 급증할 수 있습니다.
답변1
다중 프로세서 시스템에서 시스템 모니터에 보고된 프로세서\% 프로세서 시간 값은 특정 프로세서나 스레드에 대해 100%를 초과하지 않습니다.
반면에 프로세스 개체에 대해 보고된 % 프로세서 시간 값은 100%가 넘는 값을 보고할 수 있습니다. 이러한 값이 발생하면 프로세스의 스레드가 누적적으로 프로세서의 100% 이상을 사용하고 있음을 나타낼 수 있습니다.
기본적으로 여러 실행 경로가 있는 프로세스를 검사할 때 코드를 동시에 실행하는 코어가 두 개 이상인 경우 100% 이상을 볼 수 있다고 말합니다. 프로세스에는 여러 개의 코어를 사용할 수 있으며 몇 개에서 실행하도록 선택할 수 있습니다.
반면에 CPU 스레드를 조사하면 측정되는 실제 리소스이므로 100%를 초과하는 값을 볼 수 없습니다. CPU 스레드는 Microsoft에서 말하는 CPU 코어입니다. HT 지원 코어에는 두 개의 스레드가 있습니다.