top
mostra um uso médio da CPU durante os horários de pico de cerca de 20%, enquanto o monitoramento CloudWatch mostra um uso médio da CPU de 40%. O que causa essa discrepância?
top
mostra um uso médio da CPU durante os horários de pico de cerca de 20%, enquanto o monitoramento CloudWatch mostra um uso médio da CPU de 40%. O que causa essa discrepância?
Respostas:
Uma observação muito boa e também encontramos isso. Aqui está o que eu encontrei:
Cuidado ao medir o uso da CPU em uma instância do EC2. É possível ver o uso da CPU bem abaixo de 100% - e ainda assim estar completamente maximizado. Confie em mim: estive lá, fiz isso. (A propósito, o CloudWatch CPUUtilization é medido de fora da instância e está sempre correto.)
Há uma descrição muito boa de tudo isso aqui: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
No exemplo acima, a instância do m1.small EC2 recebeu 0,4 unidades de processador e, portanto, 40% de CPU ocupada significa a porcentagem de uso do núcleo subjacente. No entanto, como 40% é o compartilhamento máximo da CPU que pode ser alocado para esta VM, o uso efetivo da CPU é 40% / 40% = 100%. Qual é o número exibido pelo CloudWatch.
Se você está se perguntando de onde vem 40%, a matemática é bem simples. O sistema m1.small linux tem direito a 1 unidade de computação EC2, que fornece a capacidade equivalente da CPU de um processador Opteron de 2007 a 1,2 GHz ou 2007 Xeon de 1,0 a 1,2 GHz. Como a VM é executada em uma máquina com velocidade de clock de 2,6 GHz, ela tem direito a 38,4% a 46,2% de compartilhamento do processador nesse nó XEN em particular. Você pode executar o comando cat / proc / cpuinfo para descobrir a arquitetura da CPU por trás das instâncias do EC2.
Preste atenção especial à dica sobre como lidar com ferramentas que não sabem sobre a matemática especial:
Outra opção que pode ser usada para atualizar as ferramentas de monitoramento existentes baseadas em agente ou SNMP, que não se integram ao CloudWatch, é usar a métrica ociosa da CPU. Tudo o que você precisa fazer é reescrever regras para medir a ociosidade da CPU em vez da CPU ocupada. Por exemplo, se você tiver um limite> 75% definido para a CPU ocupada, crie uma regra <25% para a CPU ociosa. Se a CPU inativa for 0, seu servidor estará vinculado à CPU.
Muito simples. Muito agradável.
Quando você executa a parte superior da instância do EC2, ele mede o uso da CPU da máquina de núcleo físico que está executando sua instância e outras. Esse uso está incorreto se você deseja medir apenas o uso da CPU da sua instância (a unidade de computação EC2 atribuída à sua instância).
É por isso que as métricas do cloudwatch são reais, pois são medidas externamente à instância para a (s) unidade (s) de computação EC2 atribuída (s) apenas à sua instância.
Veja aqui - https://forums.aws.amazon.com/thread.jspa?threadID=99993