Confuso com os valores da CPU no comando 'top' do Unix

11

Na captura de tela abaixo, a CPU geral está sendo relatada como 3%, mas o processo mysqld é relatado como usando 57%. São 57% dos 3% do total e, portanto, o mysqld está usando apenas 1,5% da CPU?

captura de tela superior http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

ATUALIZAÇÃO : Um comentarista abaixo solicitado pressionou a tecla '1' e postou os resultados: a tecla 1 http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Teflon Ted
fonte

Respostas:

11

O 57,6% significa que o mysqld está usando 0,576 de um processador. É provável que a discrepância seja uma condição de corrida entre a coleta de dados para o sistema como um todo e a coleta dos dados por processo.

EDIT: Com base na sua atualização, parece que você tem 16 núcleos.

57.5% => .575/16 = .036 = 3.6%.

Então é daí que vêm os seus 3%.

Se você soma todas as porcentagens ociosas e subtrai de 1600%, isso também sai para 57,5%.

brian-brazil
fonte
3

Você pode tentar pressionar o número 1 quando a parte superior está em execução e ver o que acontece.

Editar:

O Sr. Desconhecido diz isso bem.

top está dizendo "Se você tivesse um núcleo de CPU, seria 57,5% ocupado".

Mas você tem 16 núcleos. Então esse número 57 está espalhado por todo o lado, com o mysqld sendo multiencadeado e tudo mais ...

Meio confuso. Mas acho que isso ocorre porque o top acharia mais difícil exibir informações para cada núcleo ... imagine uma linha de informações principais com 16 ou mais núcleos!

Além disso, se você adicionar todo o tempo da CPU "% us"

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

É daí que vem o número de 3% ...

Agora não
fonte
feito; veja a pergunta atualizada.
Teflon Ted
1

Alguém recomendou htop? Não que isso ajude com essa pergunta em particular mais do que as respostas anteriores já têm, mas me sinto obrigado a mencionar htopsempre que vejo alguém ainda usando top!

user14018
fonte
0

Não sei dizer se seu top está mesclando várias CPUs que você possui, mas isso ainda não faria muito sentido.

O que pode estar acontecendo é que top não obtém os valores para cada processo e o uso total da CPU ao mesmo tempo. Há uma pequena quantidade de tempo em que o mysql pode ter parado ou iniciado o uso de muita CPU entre o momento em que as informações do processo são lidas e a global é lida. Poderia muito bem ser apenas uma condição de corrida simples.

Obviamente, isso teria que ter acontecido tempo suficiente para você perceber, então acho que isso poderia ser apenas um bug estranho em algum lugar no topo ou na contabilidade do kernel.

David Pashley
fonte
0

us: userspace - o que você está executando acima do kernel sy: system calls - o que está executando dentro do kernel ni: processos reniced id: idle wa: espera por E / S oi: interrupções de hardware - quanto tempo é gasto com hardware si: interrupções de software - quanto tempo é gasto lidando com interrupções criadas por software (chamadas do sistema etc.)

Ric
fonte