为什么top报告的cpu使用率与CloudWatch不同?


9

top显示高峰时段的平均CPU使用率约为20%,而CloudWatch监视显示的平均CPU使用率为40%。是什么原因导致这种差异?

Answers:


15

一个很好的观察,我们也遇到了这个问题。这是我发现的:

小心从EC2实例中测量CPU使用率。可能会看到CPU使用率远低于100%,但仍被完全用尽。相信我:去过那里,做到了。(顺便说一下,CloudWatch CPUUtilization是从实例外部测量的,并且始终是正确的。)

这里对整个事情都有很好的描述:https : //axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/

在上面的示例中,为m1.small EC2实例分配了0.4个处理器单元,因此40%的CPU繁忙意味着基础内核的使用百分比。但是,由于40%是可以分配给该VM的最大CPU份额,因此有效CPU使用率为40%/ 40%= 100%。这是CloudWatch显示的数字。

如果您想知道40%来自何处,那么数学很简单。m1.small linux系统拥有1个EC2计算单元,可提供1.0–1.2 GHz 2007 Opteron或2007 Xeon处理器的等效CPU容量。由于VM在时钟频率为2.6 GHz的计算机上运行,​​因此有权在该特定XEN节点上获得38.4%到46.2%的处理器份额。您可以运行cat / proc / cpuinfo命令来查找EC2实例背后的CPU体系结构。

请特别注意有关如何处理不知道特殊数学运算的工具的提示:

可以用于改造不与CloudWatch集成的现有基于代理或基于SNMP的监视工具的另一种选择是使用CPU空闲指标。您需要做的就是重新编写规则以测量CPU空闲而不是CPU繁忙。例如,如果您为CPU繁忙定义了> 75%的阈值,请为CPU空闲创建<25%的规则。如果CPU空闲为0,则您的服务器绑定了CPU。

很简单。非常好。

当您在EC2实例中运行最高时,它正在测量运行您的实例和其他实例的物理核心计算机的CPU使用率。如果您想单独测量实例(分配给您实例的EC2计算单元)的cpu使用率,则此用法不正确。

这就是为什么cloudwatch指标是真实的,因为它是在实例外部为单独分配给您的实例的EC2计算单元测量的。

看到这里-https://forums.aws.amazon.com/thread.jspa?threadID=99993


换句话说,它们都是正确的,但衡量的是不同的事物。
bahamat 2012年

1
你可以这样说。但是,OP担心他认为自己看到的不是亚马逊所说的。因此,就他而言,顶级数据对他而言是不正确的。但是,如果您要测量基础内核的CPU使用率以调试性能问题,则运行top非常有用。如果您仅关注实例的使用,则可以使用cloudwatch。因此,是的,它们都测量不同的事物。
Chida 2012年

1
我想我应该跟着我的“前者是你的语句觉得你想要的,后者则是你什么真正想要的”,但我认为已经覆盖。
bahamat 2012年

+1就是您所说的话:)
Chida

1
我从Wayback机器检索了死链接的内容,并将其直接添加到帖子中。
Johano Fierra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.