Por que o top informa o uso incorreto da CPU?

10

Eu tenho uma máquina com Intel(R) Xeon(R) CPU E5520visível como 16 núcleos lógicos (8 com HT). Se eu executar algo para consumir tempo de CPU (thread único), a parte superior informa corretamente 100% do uso da CPU para o processo, mas apenas cerca de 3-4% do uso total.

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

Certamente o uso relatado deve ser de ~ 6,25% (1 de 16 núcleos).

  • Está incorreto porque é uma máquina virtual?
  • Como eu poderia calcular um valor correto?

fonte
11
você pode tentar atope mudar a parte superior para uso relatório de cada CPU individualmente (pressionando 1)
Hubert Kario
@HubertKario, o uso relatado para cada núcleo está correto. Por que, então, o total está errado?
Se os níveis de utilização de núcleos individuais estão corretas, então isso sugeriria um bug no topo tão improvável quanto parece ...
Hubert Kario
Esta não seria a primeira postagem sobre os principais resultados incorretos nas VMs. Você pode descrever sua tecnologia VM e seus sistemas operacionais host e convidado?
Nils
@Nils Xen com um convidado Ubuntu / 2.6.32-21-server. Nenhuma informação sobre o SO host.

Respostas:

12

topno resumo relata o uso relativo à CPU com todos os núcleos adicionados. Por outro lado, quando você olha na lista de processos, os principais percentuais de relatórios referenciados a um núcleo (real ou HT). Tente executar um processo com 4 threads que podem consumir até 4 núcleos de CPU; você o encontrará usando 400% da CPU.

Não sei dizer por que, mas é assim que topfunciona em todos os sistemas Linux que eu já vi.

Patkos Csaba
fonte
5

Na maioria das vezes, topfunciona no modo 'Irix' por padrão, assim como você o descreve. Se você deseja obter uma porcentagem do total de recursos da CPU (ou seja, quando a soma do possível uso da CPU atingir 100% e não cpu_cores_number * 100%), basta alternar o modo 'Irix' pressionando I.

moon.musick
fonte