전 Microsoft 엔지니어이자 원래 Windows 작업 관리자의 개발자였던 Dave Plummer는 Windows 작업 관리자에 표시되는 CPU 사용량이 실시간 데이터가 아니라 정기적으로 새로 고쳐지는 주기적인 평균임을 온라인에서 밝혔습니다.Plummer는 Windows ZIP 파일 지원 및 Windows NT 시작 메뉴와 같은 대표적인 프로젝트에 참여했으며 작업 관리자의 첫 번째 버전을 직접 구축했습니다.
이 도구가 시스템 리소스를 낭비하지 않도록 하기 위해 그는 이 도구를 프로그래밍 및 엔지니어링 관점에서 매우 간단하게 설계하여 1990년대 컴퓨터에서 원활하게 실행할 수 있도록 했습니다. 그러나 부정확한 수치의 기초를 다지는 것은 바로 이러한 미니멀리스트 디자인입니다.
Plummer는 작업 관리자의 새로 고침이 타이머에 의해 구동되며 정기적으로 데이터를 캡처한다고 말했습니다. 실시간 로드가 아닌 두 번의 새로 고침 사이의 CPU 통계를 보여줍니다.
단순히 CPU 사용 시간을 새로 고침 간격으로 나누면 결과는 GUI 타이머의 정확성에 따라 크게 달라집니다.
그는 다음과 같이 비유했습니다. 마치 픽업트럭 뒤에 메트로놈을 싣고 움푹 패인 비포장도로를 운전하는 것과 같습니다. 절대적으로 안정적으로 유지하는 것은 기본적으로 불가능합니다.
따라서 그는 보다 엄격한 알고리즘을 채택했습니다. 작업 관리자가 시작 이후 각 프로세스의 총 실행 시간(커널 시간 + 사용자 시간)을 기록하도록 하고, 현재 값에서 마지막 새로 고침의 총 값을 빼서 해당 간격 동안 프로세스의 CPU 소비를 구한 다음 이를 이 기간 동안 모든 프로세스의 총 CPU 소비로 나눕니다.
이 방법은 매우 복잡해 보이지만 직접 나누는 것보다 훨씬 정확합니다.
그러나 기술의 발전으로 인해 이 알고리즘은 적합하지 않게 되었습니다. 최신 CPU는 동적 주파수 변조, 터보 가속, 온도 제어 주파수 감소 및 완전 절전을 지원하여 완료된 실제 작업 부하에서 CPU 시간 사용량을 분리합니다. 단일 백분율은 프로세서의 작동 상태를 완전히 반영할 수 없습니다.
Plummer는 CPU 사용 시간이 작업 부하를 잘 반영했지만 이제는 둘 사이의 상관 관계가 매우 느슨하다고 지적했습니다. 그는 이상적인 CPU 사용량은 완료할 수 있는 이론적 최대 작업량에 대한 실제 완료된 작업량의 비율을 측정해야 한다고 믿지만 그는 Microsoft에서 은퇴했으며 변화를 촉진할 수 없습니다.
