Temos um processo de longa duração, que utiliza o OpenMP para saturar todas as CPUs disponíveis com cálculos feitos em vários segmentos (um para cada núcleo).
Eu estou olhando para o topo (1) em um servidor, onde o programa está sendo executado em todos os 24 núcleos.
Como seria de esperar, a coluna% CPU mostra o processo consumindo 2380-2400% da CPU. Está funcionando sem parar por algumas horas já:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27647 xxx 20 0 1416m 232m 11m R 2390.8 0.1 2324:59 pig
No entanto, a média de carga oscila apenas entre 9 e 11:
top - 19:22:37 up 25 days, 5:35, 5 users, load average: 10.78, 10.24, 9.60
Considerando que eu esperaria que seja pairando em ou logo abaixo de 24 também.
% CPU está mentindo para mim - com o processo realmente fazendo E / S durante metade do tempo, mas ainda é relatado como se estivesse em execução? Ou a média de carga é calculada incorretamente?
Isto está no Linux, RHEL-6, kernel 2.6.32-696.6.3 ...
Tags cpu-usage multithreading