Confuso pelos valores da CPU no comando 'top' do Unix

11

Na imagem abaixo, a CPU em geral está sendo reportada como 3%, mas o processo do mysqld é reportado como usando 57%. Isso é 57% do total de 3% e, portanto, o mysqld está usando apenas 1.5% da CPU?

imagem de topo http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

UPDATE : Um comentador abaixo solicitou que eu pressione a tecla '1' e poste os resultados: a 1 chave http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

    
por Teflon Ted 21.06.2009 / 00:14

5 respostas

11

O 57,6% significa que o mysqld está usando .576 de um cpu. A discrepância provavelmente será uma condição de corrida entre a coleta de dados para o sistema como um todo e a coleta de dados por processo.

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

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

Então é de onde seus 3% estão vindo.

Se você somar todas as porcentagens de ociosidade e subtrair de 1600%, isso também será de aproximadamente 57,5%.

    
por 21.06.2009 / 00:25
3

Você pode tentar pressionar o número 1 quando a parte superior estiver 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 este número 57 está espalhado por todo o lugar, com o mysqld sendo multi-threaded e tudo ...

Meio confuso. Mas acho que isso é porque top teria mais dificuldade em exibir informações para cada núcleo ... imagine uma linha de informações com 16 ou mais núcleos!

Além disso, se você adicionar todo o tempo de 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

É aqui que o número de 3% vem de ...

    
por 21.06.2009 / 00:36
1

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

    
por 23.07.2009 / 05:08
0

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

O que pode estar acontecendo é que o topo não recebe 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 começado a usar muita CPU entre o tempo em que as informações do processo são lidas e o global é lido. Poderia ser apenas uma condição de corrida simples.

Claro, isso teria que ter acontecido o tempo suficiente para você ter notado, então estou achando que isso poderia ser um bug estranho em algum lugar no topo ou na contabilidade do kernel.

    
por 21.06.2009 / 00:24
0

us: userspace - o que você está executando acima do kernel sy: chamadas do sistema - o que está sendo executado dentro do kernel ni: processos renomados id: ocioso wa: esperando por i / o 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 de sistema, etc.)

    
por 02.07.2010 / 09:34