根据http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#scalar_notcurrent ssCpuUser
、、、等已被弃用,取而代之的是原始变体(ssCpuSystem
、等)。ssCpuIdle
ssCpuRawUser
前面的值(不包括 nice、wait、kernel、interrupt 等内容)返回一个百分比值:
过去一分钟内计算出的处理用户级代码所花费的 CPU 时间百分比。
该对象已被弃用,取而代之的是“
ssCpuRawUser(50)
”,它可用于计算相同的指标,但适用于任何所需的时间段。
原始值返回 CPU 花费的“原始”滴答数:
处理用户级代码所花费的“滴答”数(通常为 1/100 秒)。
在多处理器系统上,'
ssCpuRaw*
'计数器是所有 CPU 的累积计数器,因此它们的总和通常为 N*100(对于 N 个处理器)。
我的问题是:如何将刻度数转换为百分比?
也就是说,你怎么知道每秒有多少个滴答声(它是通常— 这意味着并非总是 — 1/100 秒,要么意味着每 100 秒出现 1 次,要么意味着一个刻度代表 1/100 秒)。
我想你还需要知道有多少个 CPU或者您需要获取所有 CPU 值,然后将它们全部加在一起。我似乎找不到 MIB 来为您提供 CPU 数量的整数值,这使得前一种方式很不方便。后一种方式似乎不可靠,因为有些数字重叠(有时)。例如,ssCpuRawWait
有以下警告:
此对象将不会在底层操作系统不测量此特定 CPU 指标的主机上实现。 这个时间也可能包含在“
ssCpuRawSystem(52)
”计数器内。
非常感谢您的帮助。似乎到处都只是说 % 已被弃用,因为它可以被推导,但我没有找到任何地方显示执行此推导的官方标准方法。
第二点是这些“滴答”似乎是累积的,而不是在某个时间段内。如何在某个时间段内对值进行采样?
我想要的最终信息是:用户、系统、空闲、良好(理想情况下是窃取,尽管这似乎没有标准的 MIB)“当前”(过去 1-60 秒内可能就足够了,最好使用较小的时间跨度)。