Entendendo o uso da CPU no Linux

0

Eu estou preso com o perfil de um processo meu, chamado (ver top output) xspectra-frameb .

Sua estrutura interna pode ser resumida da seguinte forma:

  • 8 threads são recv ing rajadas de dados de conexões de soquete, acesso de gravação mutexing a um buffer
  • um único thread encarregado da sincronização de dados (o programa se comporta como um tipo de agregador de feed de dados), acesso de leitura mutexing ao buffer

O processador é um Xeon com 4 núcleos de hyper-threading. O gráfico mostra todos eles bastante ociosos durante o estouro da CPU, mas top mostra valores diferentes ( 125,9% ).

Em qual valor eu devo confiar mais?

    
por Patrizio Bertoni 28.08.2018 / 12:31

1 resposta

1

top conta cada núcleo como 100%. Você tem 8 núcleos, então 800% é carga total da CPU.

Vamos somar os valores do Monitor do Sistema:

21.2 + 10.8 + 20.7 + 18.4 + 27.8 + 27.3 + 37.9 + 26.9 = 191%

Isso é aproximadamente igual ao percentual top :

125.9 + 66.4 + 9.0 + 7.3 + 4.0 + 3.7 + 3.0 + 3.0 + 3.0 + 0.3 + 0.3 + 0.3 = 226.2%

Por que a diferença? Cargas de núcleo não são lidas simultaneamente. Cada núcleo é consultado um por um, mais top e o Monitor do Sistema não o faz simultaneamente. É por isso que os resultados serão diferentes.

Você pode querer usar htop , que é menos confuso e mostra as cargas principais separadamente.

    
por 28.08.2018 / 12:55