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

Unable to simulate 100% CPU usage on an AWS EC2 instance

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

EC2 实例很简单 t2.micro 我使用了压力命令:stress -c 1 -t 400s

我可以在顶部看到进程已经启动并且 CPU 以 100% 使用,但问题是它不是恒定的。有时它掺杂到 10% 有时它高达 100%,并且在 cloudwatch 监控中,即使在 5 分钟的压力之后,CPU 平均使用率低于 20%!

我尝试了其他参数(stress -c 2 或 stress -c 4),结果是一样的。我也试过这个命令:是> /dev/null &

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

有什么问题吗?亚马逊是否有任何保护措施来限制 CPU 上的巨大负载?

感谢您的帮助。

根据 AWS,t2.micro 是可突发性能实例。 documentation 状态:

T2 instances are Burstable Performance Instances that provide a baseline level of CPU performance with the ability to burst above the baseline.

一旦达到 100% 的利用率,您可能会获得额外的 CPU 分配。另请注意,这些实例是虚拟的,因此不能始终依赖报告的 vCPU 利用率。

我建议您尝试通用 M5。使用此实例,您应该能够产生所需的行为。

Tx 实例是 "burstable performance instances",这意味着您无法始终获得 100% CPU。这是换取低小时价格的权衡。

CPU 由资源积分管理。您的实例每分钟收到 CPU 个积分。您的实例将以 100% 的使用率消耗 1 CPU 积分 1 分钟。这意味着当您的实例未被充分利用时,它会累积 CPU 个积分供以后使用。当没有更多信用可用时,您的 CPU 将被限制。

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

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

底线:不要 运行 CPU 对 Tx 实例类型进行基本压力测试。这些实例类型专为 low/moderate 基准而设计,偶尔会出现性能突增。