无法在AWS EC2实例上模拟100%CPU使用率

时间:2019-02-25 09:00:25

标签: amazon-web-services amazon-ec2 autoscaling stress-testing

为了测试我的AutoScaling组,我想模拟一个巨大的CPU使用率,以便创建一个新实例(基于我在Cloudwatch中配置的指标:平均CPU> = 60)

EC2实例是一个简单的t2.micro,我使用了Stress命令:Stress -c 1 -t 400s

我首先可以看到该进程已经开始并且CPU使用率为100%,但是问题是它不是恒定的。有时它掺杂到10%,有时甚至达到100%,并且在Cloudwatch监视中,即使经过5分钟的压力,CPU的平均使用率也低于20%!

我尝试了其他参数(重音-c 2或重音-c 4),这是同一回事。我也尝试使用此命令:yes> / dev / null&

Cloudwatch始终看不到100%的CPU使用率。

出什么问题了?亚马逊是否提供任何保护措施来限制CPU的巨大负载?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

Tx实例是“突发性能实例”,这意味着您不能一直获得100%的CPU。这是以低时价交换的权衡。

CPU由资源积分管理。您的实例每分钟都会获得CPU积分。您的实例将以1%的使用率(100%)消耗1个CPU信用。这意味着当您的实例未得到充分利用时,它将累积CPU信用,以后可以使用。如果没有可用的信用额度,您的CPU将受到限制。

CPU积分数和基准性能取决于确切的实例类型。

详细信息在这里:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

底线:不要在Tx实例类型上运行CPU基本压力测试。这些实例类型专为低/中等基准而设计,偶尔会有性能爆发。

答案 1 :(得分:1)

根据AWS,t2.micro是一个可爆发的性能实例。 documentation指出:

  

T2实例是可突发性能实例,它们提供CPU性能的基线水平,并且能够突发超过基线。

一旦达到100%的利用率,就有可能分配额外的CPU。还要注意,这些实例是虚拟的,因此不能始终依赖所报告的vCPU利用率。

我建议您尝试使用通用M5。在这种情况下,您应该能够产生所需的行为。