一般情况下
计算一个路由器的CPU利用率时,http://www.cisco.com/public/mibs/v1/OLD-CISCO-CPU-MIB中的busPer对象表示为百分比的形式。
计算一个半双工10M 接口的利用率时,你可以选择变量——使用MIB II(RFC2233)的变量或特定厂商提供的变量。在MIB II变量情形里,应用程序按照下列步骤人工计算百分比:
1. 计算iflnOctects和iflnOctets的两个采样之间的 (差)
2. 将这些值加在一起
3. 把总值转换成每秒字节数 *8/采样周期质量
4. 将该字节数除以ifSpeed(以字节数为单位的接口速度)
5. 将结果乘以100得到百分比
如果是cisco的设备,还可以用下边的值计算
在站点http://www.cisco.com/public/mibs/v1/OLD-XISCO-INTEFACES-MIB.my 还有一些称作locIfInBitsSec和1ocIfOutBitsSec的Cisco专用变量,这些变量不需要前一个例子里的第一步。注意这个MIB并不始终支持子接口。
评价利用率的几点准则
因为有多种方法可以收集利用率,所以在选择使用哪种类型的变量时,我们建议采用以下规则:
1. 在求助于特定企业的MIB之前,选择公共域MIB对象。如果你坚持使用公共域MIB,很有可能这些MIB对象将跨厂商平台实现;你可以将你的代码重新使用于具有相同功能的其他设备类型
2. 当储存所收集的数据时,使用原始数据而不是设备产生的或NMS计算的平均值数据。对于分析长期趋势来说,数据尽可能原始很重要——合并或汇总以前所计算的或平滑的数据会产生不太准确的结果。
另外,请注意这些变量只报告特定接口看见的流量。
关于利用率,经验法则是你不应该假设0%必定就是好的而100%必定就是坏的。理论上的最大利用率并不总是反映问题的阈值。你必须使用基准分析去确定你的组织关心哪些阈值。
例如,路由器CPU的利用率偶然达到最高点100%并不一定是件坏事。这恰恰表明设备没有闲暇时间。然而,如果一段时期内某个CPU利用率维持在100%,那可能表示在丢包,在这种情况里,你应该检查其他信息,如数据包丢弃。
一个相反的例子是半双工,共享介质的10BaseT以太网利用率。即使10BaseT的最大理论容量是10MB,在某些情况下达到一半容量也可能导致媒质不能用。在这种特殊情况里,原因是当利用率升高时,以太网碰撞率也会升高。根据基准分析,你可以确认某个特定的共享以太网网段应将事件的阈值设为30%,以表示一个高水位标志。
接口利用率是网络利用率的主要指标。根据你测量的连接是半双工的还是全双工的,应该使用以下公式。共享LAN连接往往是半双工的,这主要是因为竞争检测要求设备在发送之前必须侦听。WAN连接通常是全双工的,因为该连接是点对点的连接;两个设备能够同时进行传送和接收,因为它们现在知道只有一个其他设备在共享这个连接。
因为MIB II变量是以计数器的形式储存的,你必须进行两轮轮询并且算出这两者之间的差(即公式里的)。
ifInOctets 在收集snmp ifInOctets对象的两个轮询周期之间的差值,该对象表示输入流量的字节数。
ifOutOctets 在收集snmp ifOutOctets对象的两个轮询周期之间的差值,该对象表示输出量的字节数。
IfSpeed 作为snmp IfSpeed对象报告的接口速率。
对于半双工来说,在计算利用率时使用公式(ifInOctets+?ifOutOctets)/((秒数) IfSpeed)×8×100
对于全双工来说,计算利用率要求更多的技巧。例如,对于全T-1串口连接,线速是1.544Mbps。这意味着一个T-1接口可以接收和传送1.544Mbps,可能的总带宽为3.088Mbps!在计算全双工连接的接口带宽时,更准确的方法是分别测量输入利用率和输出利用率,如下式所示:
输入利用率=(ifInOctets×8×100)/((秒数) *IfSpeed)
输出利用率=(ifOutOctets×8×100)/((秒数) *IfSpeed)