Top이 잘못된 CPU 사용량을 보고하는 이유는 무엇입니까?

Top이 잘못된 CPU 사용량을 보고하는 이유는 무엇입니까?

Intel(R) Xeon(R) CPU E552016개의 눈에 보이는 논리 코어(HT의 경우 8개)가 있는 머신이 있습니다. CPU 시간을 소비하는 작업(단일 스레드)을 실행하면 top은 프로세스의 CPU 사용량을 100% 정확하게 보고하지만 총 사용량은 약 3~4%만 보고합니다.

Cpu(s):  3.6%us,  0.0%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.1%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1567 www       20   0 65632   84    4 R  100  0.0   0:05.96 burnMMX

물론 보고된 사용량은 약 6.25%(16개 코어 중 1개)여야 합니다.

  • 가상머신이라 틀린건가요?
  • 올바른 값을 어떻게 계산할 수 있나요?

답변1

topCPU를 기준으로 하고 모든 코어에 걸쳐 합산된 사용량이 요약에 보고됩니다. 반면에 프로세스 목록을 보면 상위 보고서는 참조된 하나의 코어(실제 또는 HT)의 비율을 보고합니다. 4개의 CPU 코어를 차지할 수 있는 4개의 스레드로 프로세스를 실행해 보면 CPU를 400% 사용하는 것을 알 수 있습니다.

이유는 모르겠지만 이것이 top제가 본 모든 Linux 시스템이 작동하는 방식입니다.

답변2

top설명하신 대로 대부분의 경우 기본적으로 "Irix" 모드에서 작동합니다. 총 CPU 성능의 백분율을 얻으려면(즉, 가능한 CPU 사용량의 합이 cpu_cores_number * 100%가 아니라 100%인 경우) 을 눌러 "Irix" 모드를 전환하세요 I.

관련 정보