监视偷窃时间的工具(st)


12

我们正在虚拟的“专用”服务器上运行,从理论上讲,这应该意味着我们是服务器上唯一的人。实际上....我认为我们可能不是。

在此处输入图片说明

请注意,尽管看起来我们正在杀死我们的机器,但“隐身时间”为71%

我正在获取有关负载的统计信息,但令我失望的是该统计信息未显示在我的图表中。是否有监视此问题的工具可能会有所帮助?


附加信息:

我们正在运行4个核心,模型:

# grep "model name" /proc/cpuinfo | sort -u
model name  : Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz

1
虚拟专用?如果使用XEN,则需要固定专用内核以供VM中专用。看起来您的提供商通过不公平的代价超额预定了CPU。他对此怎么说?
尼尔斯2012年

1
您获得了多少个vCPU,并且报告了哪种类型的CPU grep "model name" /proc/cpuinfo|sort -u?如果这真的是一台专用服务器,那么Dom0上的CPU时间就会耗尽。或者,它们为您提供了比Dom0中更多的vCPU。
尼尔斯2012年

1
除非这是一个暂时的异常,否则看起来您的isp欺骗了您,实际上它们正在此计算机上运行其他cpu繁重的vm,或者配置错误的某件事导致dom0占用了大量cpu时间。
psusi 2012年

1
SuSE建议仅为Dom0保留两个内核,以便它可以执行所有IO处理而不会打扰其他VM。在我眼中,这仅对于DomU中时间被盗和IO流量大的系统是必需的。我想知道您的提供商是否分配了比逻辑核心更多的vCPU(例如分配4个vCPU,而Dom0中仅提供2个逻辑CPU),这也可以解释“被盗”(这是一个很死的想法-但在XEN中可能) 。
尼尔斯2012年

1
导致此问题的根本原因是ISP的VM配置不正确。那个客人被告知,它的内核比实际更多。这似乎对调度造成破坏。ISP无法提供智能技术支持,但我们可以通过在/ proc中禁用奇数内核来“证明”该问题。此后再也没有问题。
mgjk 2014年

Answers:


12

您的问题定义明确,但是您没有提供有关您的环境,当前监视方式或所用绘图工具的大量信息。但是,鉴于SNMP已被广泛使用,因此我假设您正在使用它,并且至少对它有所了解。

尽管(据我所知)CPU窃取时间目前无法从snmpd获得,但是您可以使用UCD-SNMP-MIB::extOutput对象和exec命令自己扩展它。

(我发现)获得窃取时间的最简单方法是从iostat。按下面的步骤我们可以得到偷时间:

$ iostat -c | awk 'NR==4 {print $5}'
0.00

因此,请将以下内容附加到您的snmpd.conf中:

exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'

(或者,您可以将命令放入包装器脚本中,然后从内部调用包装器snmpd.conf。)

每次exec调用snmpd.conf都从1开始索引。因此,如果只有一个exec语句,则需要轮询UCD-SNMP-MIB::extOutput.1。如果这是第5条exec语句,则进行poll UCD-SNMP-MIB::extOutput.5

OID的数字UCD-SNMP-MIB::extOutput是,.1.3.6.1.4.1.2021.8.1.101因此如果您在索引1处,它将是.1.3.6.1.4.1.2021.8.1.101.1,索引5将是.1.3.6.1.4.1.2021.8.1.101.5,等等。

然后,创建一个轮询类型为SNMPD OID(范围为0-100)的图形。这应该给您一些漂亮的图形。


好答案。这些静力学多久收集一次?只是在轮询期间,还是在RMON-MIB中有没有一种方法可以在不进行外部轮询的情况下记录值?
尼尔斯2012年

我相信每次snmpd查询该OID 都会拉动它。
bahamat 2012年

如果未安装iostat:top -bn1 | SED -nr '3S /.*,// GP'
达维德

9

sar -u在您的情况下可能会有所帮助。sar通常是sysstat -package的一部分。


我希望我可以将一个以上的答案设置为可接受的答案。这两个答案都非常有用:-)谢谢!
mgjk 2012年

0

最受欢迎的答案很好,但是目前还不能完全解决:net-snmp失去了exec通话管道,因此应该看起来像这样

extend-sh cpu_steal_time /usr/bin/iostat -c 1 1 | /usr/bin/awk '!/%user|Linux|^$/ {print $5}'

结果将在下面显示nsExtendOutput1Table

# snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Table
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu_steal_time" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu_steal_time" = INTEGER: 0

其中nsExtendOutput1Lineoid是.1.3.6.1.4.1.8072.1.3.2.3.1.1:

snmpwalk localhost .1.3.6.1.4.1.8072.1.3.2.3.1.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
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.