Por que o monitoramento ec2 mostra 100% de CPU e top apenas 20%?

9

Estou executando um script python em uma instância ec2 que insere linhas em um banco de dados em outra instância. No monitoramento do ec2, vi uma utilização de 100% da CPU, enquanto a parte superior mostra apenas 20% para o processo python. O que está faltando no topo? Sobrecarga de rede?

    
por RickyA 20.06.2012 / 15:26

2 respostas

16

Os dados expostos por top costumam ser insuficientes ou enganosos em ambientes virtualizados como Amazon EC2 e a porcentagem relatada depende seu tipo de instância e a utilização do núcleo do processador subjacente (que normalmente não corresponde ao hardware virtualizado do hypervisor), entre outras coisas - o que você está vendo provavelmente é causado pelo tempo de roubo da CPU como exposto na maioria das ferramentas de monitoramento Unix / Linux relacionadas atualmente - veja por exemplo colunas% steal ou st em sar ou top :

st -- Steal Time
The amount of CPU 'stolen' from this virtual machine by the hypervisor for other tasks (such as running another virtual machine).

A postagem no blog monitoramento do EC2: o caso da CPU roubada fornece uma boa exploração e ilustração deste tópico:

When the top com­mand dis­plays 40% CPU busy but Cloud­Watch says the server is maxed out at 100% — which side do you take? The answer is sim­ple (Cloud­Watch is cor­rect, top is not) [...]

Por favor, note que esta métrica de hipervisor parece ser (facilmente) acessível apenas em sistemas Unix / Linux, mas não parece ser observável no Windows (ainda), veja minha pergunta Existe um equivalente no Windows do tempo de roubo da CPU do Unix '? para saber mais sobre este problema .

    
por 20.06.2012 / 16:50
-2

A Amazon provavelmente verifica a carga e não usa porcentagem do TOP. Se você tem dois processos em cpu, eles podem ser utilizados em 20%, mas você pode ter 2 de carga.

    
por 20.06.2012 / 15:28