监控窃取时间 (st) 的工具

mgj*_*gjk 12 top xen virtualization

我们在一个虚拟的“专用”服务器上运行,理论上,这应该意味着我们是服务器上唯一的人。在实践中......我想我们可能不会。

在此处输入图片说明

请注意,虽然看起来我们正在杀死我们的机器,但“窃取时间”为 71%

我正在对负载进行统计,但我很失望这个统计数据没有出现在我的图表中。是否有任何工具可以监控这一点可能会有所帮助?


附加信息:

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

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

bah*_*mat 12

您的问题定义得很清楚,但是您没有提供很多有关您的环境、您当前的监控方式或您正在使用的绘图工具的信息。但是,鉴于 SNMP 的用途非常广泛,我假设您正在使用它并且至少对它有一定的了解。

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

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

$ iostat -c | awk 'NR==4 {print $5}'
0.00
Run Code Online (Sandbox Code Playgroud)

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

exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'
Run Code Online (Sandbox Code Playgroud)

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

每个exec调用snmpd.conf都从 1 开始索引。因此,如果您只有一个 exec 语句,那么您将需要 poll UCD-SNMP-MIB::extOutput.1。如果这是第 5 条 exec 语句,则 pollUCD-SNMP-MIB::extOutput.5等。

对于数字OIDUCD-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。这应该会给你一些漂亮的图表。


Nil*_*ils 9

sar -u可能对您的情况有所帮助。sar 通常是sysstat 包的一部分。