問題
Cisco的交換機和路由器到底有幾個CPU,都分佈在哪個模塊上?這些是否能通過命令查出,查出來是否有問題,本文來深入分析一下。(本文參考Cisco的文檔和現場實例進行編寫的)
分析依據
要查Cisco交換機和路由器上的多CPU,必須有CISCO-PROCESS MIB,從該MIB中表cpmCPUTotalTable 查找到對象cpmCPUTotal5minRev(即5分鐘CPU收到的佔有率),通過通過這個表的CPU索引 cpmCPUTotalPhysicalIndex 找到CPU所在位置;最好後通過索引,從entPhysicalName 對象找到CPU分佈在那些模塊。
cpmCPUTotal5minRev的值需要確認IOS版本,再確認不同的對象。
綜上,分三步查找:
1、 cpmCPUTotal5minRev (.1.3.6 .1.4.1.9.9.109.1.1.1.1.5) (以IOS在12.0(3)T-12.2(3.5) 之間爲例),查找該設備有幾個CPU,同時每個CPU佔有率多少。
2、 cpmCPUTotalPhysicalIndex (.1.3.6 .1.4.1.9.9.109.1.1.1.1.2) 查找CPU在cpmCPUTotalTable 中的索引。
3、 entPhysicalName (.1.3.6 .1.2.1.47.1.1.1.1.7) 通過引用索引,定位CPU在哪個板卡上。
實例分析(Cisco catalyst 6509)
三步:
1、查找CPU的個數,及5分鐘佔有率
C:\ >snmpwalk 10.1.0 .2 .1.3.6.1.4.1.9.9.109.1.1.1.1.5
cisco.ciscoMgmt.109.1.1.1.1 .5.1 : Unsigned32: 6
cisco.ciscoMgmt.109.1.1.1.1 .5.2 : Unsigned32: 7
cisco.ciscoMgmt.109.1.1.1.1 .5.3 : Unsigned32: 91
cisco.ciscoMgmt.109.1.1.1.1 .5.4 : Unsigned32: 91
該Cisco 6509交換機有4個CPU,分別佔用爲 6% 、7%、91%、91%。
2、查找CPU的索引
C:\ >snmpwalk 10.1.0 .2 .1.3.6.1.4.1.9.9.109.1.1.1.1.2
cisco.ciscoMgmt.109.1.1.1.1 .2.1 : INTEGER: 4017
cisco.ciscoMgmt.109.1.1.1.1 .2.2 : INTEGER: 4001
cisco.ciscoMgmt.109.1.1.1.1 .2.3 : INTEGER: 1007
cisco.ciscoMgmt.109.1.1.1.1 .2.4 : INTEGER: 5007
3、通過索引,定位CPU在哪些板卡上
C:\ >snmpget 10.1.0 .2 .1.3.6.1.2.1.47.1.1.1.1.7.4017
47.1.1.1.1 .7.4017 : OCTET STRING- (ascii): CPU of Routing Processor 5
C:\ >snmpget 10.1.0 .2 .1.3.6.1.2.1.47.1.1.1.1.7.4001
47.1.1.1.1 .7.4001 : OCTET STRING- (ascii): CPU of Switching Processor 5
C:\ >snmpget 10.1.0 .2 .1.3.6.1.2.1.47.1.1.1.1.7.5007
47.1.1.1.1 .7.5007 : OCTET STRING- (ascii): CPU of Sub-Module 1 DFC Card
C:\>snmpget 10.1.0 .2 .1.3.6.1.2.1.47.1.1.1.1.7.1007
47.1.1.1.1 .7.1007 : OCTET STRING- (ascii): CPU of Sub-Module 2 DFC Card
通過參看交換機的板卡,定位對應關係:
從上面的分析上看
可以看出6509 配置的5個模塊,CPU的分佈如下:
板卡號 |
模塊名 |
子模塊名 |
Cpu個數 |
CPU佔用率 |
1 |
16口SFM 1000MB模塊 |
DFC 卡 |
1 |
91% |
2 |
16口SFM 1000MB模塊 |
DFC 卡 |
1 |
91% |
3 |
8口1000 MB 模塊 |
- |
0 |
|
4 |
48口100 MB 模塊 |
- |
0 |
|
5 |
SUP 720 引擎 |
PFC和MSFC2 |
2 |
PFC 6%, MSFC2 7% |
爲什麼DFC卡 CPU 佔有率如此高?
DFC中有一個進程爲 lcp schedular ,這個進程在系統初始化的時候,佔用CPU時間爲100% ,之後其他的進程需要CPU時間時,分配給其他的進程,也就是說lcp scheduler 佔用的都是沒有用的CPU時間, lcp scheduler 進程是接管所有沒有用的CPU時間來動態分配CPU。
某些網管軟件和命令 show process cpu 不關心DFC的cpu ,所以查不到。
參考:
How to Collect CPU Utilization on Cisco IOS Devices Using SNMP