前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >交换机CPU使用率高问题定位

交换机CPU使用率高问题定位

作者头像
网络技术联盟站
发布2020-06-01 17:51:23
2K0
发布2020-06-01 17:51:23
举报
  • 诊断工具
    • display工具
    • log工具
  • 报文冲击导致的CPU使用率高问题
  • CPU使用率高问题信息采集

诊断工具

display cpu-usage [ slot x ]
display cpu-defend statistics
  • 对于报文冲击导致CPU高的情形,可进一步通过cpu-defend统计查询功能确认具体的协议类型。
  • 协议上送过多判断标准:该协议对应的Drop列有大量计数,且相对于Pass计数占比较高,例如上表中的arp-request类型。
display logbuffer
  • CPU使用率高往往还伴有告警、日志出现,可以通过查看日志缓冲区的历史记录,搜索CPU_USAGE_HIGH日志,以便确认CPU占用率TOP 3的任务。

报文冲击导致的CPU使用率高问题

定位思路
  • 最常见协议冲击CPU致使用率高主要表现在bcmRX、FTS、SOCK等任务上。
  • bcmRX是设备硬件中断触发的的收包任务,它会将收取到的报文立刻转交软件层面的FTS任务进行分发处理。
  • 对于属于三层协议处理的报文,往往还伴随有SOCK任务占用率高的情况出现。
故障举例

故障描述:交换机产生CPU_USAGE_HIGH告警:

备注:

如果网管需要主动监测CPU使用率,可通过OID:1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5获取。

第一步:检查CPU占用率及TOP任务
  • 通过故障现象中的告警信息,可以确认CPU占用率TOP任务中包含有bcmRX、FTS报文收取任务,基本可以确认属于协议收报过多导致CPU占用率上升。
  • 可以通过CPU使用率查询功能进一步核实TOP任务中是否包含有收包任务;可以通过slot指明查询的槽位号。
第二步:确认报文类型
  • 通过cpu-defend统计查询功能,确认哪类协议存在冲击情形,可以通过各类协议的Drop列计数进行确认。如果某类协议Drop计数非常大,且Drop列计数相对于Pass列计数占比较高(例如达到20%以上),则认为属于此类协议存在冲击CPU情况。例如上表中的arp-request,后续按照第三步中的ARP协议对应处理方式进行处理。
  • 注意,查看统计时,需要关注协议冲击位于哪个槽位,即“Statistics on slot x”。
第三步:按协议类型分别处理-1
  • ARP通过display interface检查哪些接口存在Broadcast数量异常,并在此接口配置广播流量抑制,限制单个接口广播速率(例如限制为50pps):

broadcast-suppression pps 50.

  • DHCP请确认本机是否需要开启DHCP,如果不需要请在全局undo dhcp enable

如果需要,建议在下行接口开启dhcp error-down功能(具体信息请参考用户手册):

代码语言:javascript
复制
#
dhcp snooping check dhcp-rate enable


dhcp snooping check dhcp-rate trigger error-down

并建议通过基于dhcp报文的流量统计功能,来发现哪个接口发送了过多的DHCP报文。

第三步:按协议类型分别处理-2
  • TCP/ARP-MISS 此种情况一般是由于网络中存在针对不存在的某些直连网段IP地址进行扫描导致的. 当有数 据报文发送到这些不存在的IP地址时,会将数据上送CPU处理,以触发ARP学习过程,建议此时在每个vlanif接口下调整ARP学习延迟时间:
代码语言:javascript
复制
#
interface vlanif1000

 arp-fake expire-time 30
#

TTL-EXPIRED

如果不需要本机在tracert中显示,建议丢弃此类报文:

代码语言:javascript
复制
#
cpu-defend policy test

 deny packet-type ttl-expired
#
Cpu-defend-policy test global

Cpu-defend-policy test
#
第三步:按协议类型分别处理-3
  • Reserved-multicast

此类报文一般属路由协议报文,目的IP地址224.0.0.X,如果设备不需要此类报文(或者启用OSPF路由但未起组播功能),可以直接丢弃处理(或者升级到最新版本):

代码语言:javascript
复制
#
  cpu-defend policy test

 deny packet-type reserved-multicast
#
Cpu-defend-policy test global

Cpu-defend-policy test
#

第三步:按协议类型分别处理-4
  • ND/ICMPV6/DHCPV6

如果本机不需要IPV6功能,建议直接丢弃此类报文:

代码语言:javascript
复制
#
cpu-defend policy test

 deny packet-type  nd
 
 deny packet-type icmpv6
 
 deny packet-type dhcpv6-request
 
deny packet-type dhcpv6-reply
 
#
Cpu-defend-policy test global

Cpu-defend-policy test
第三步:按协议类型分别处理-5
  • OSPF请检查是否存在路由表项过大,或者OSPF PEER过多情形,并根据实际情况考虑对路由进行优化,以降低路由表项数目或OSPF PEER数目。
  • SNMP检查是否存在频繁的网管操作,例如获取接口流量,建议适当降低网管获取交换机信息的 频率。

如果不属于上述常见协议类型,或者其它情况导致的CPU高情形,建议立刻搜集设备当前诊断信息、日志信息、本次定位过程的操作记录等,并返回华为服务处理。

CPU使用率高问题信息采集

信息搜集
  • 搜集cfcard中的logfile目录下的日志信息,针对没有cfcard的盒式设备,请通过如下命令搜集
代码语言:javascript
复制
display logbuffer

display trapbuffer

搜集设备诊断信息,命令为:

代码语言:javascript
复制

display diagnostic-information

搜集cpu-defend统计信息(10分钟内多搜集几次)

isplay cpu-defend statistics all

- 搜集TOP任务的监控信息:

1.通过_hidecmddiagnose进入诊断视图;

2.通过display cpu-usage检查cpu占用较高任务,例如EOAM较高:

[Quidway-hidecmd] display cpu-usage [ slot x ] --可指定槽号检查

代码语言:javascript
复制

CPU Usage            : 38% Max: 99%

CPU Usage Stat. Time : 2013-01-06  03:08:57


CPU utilization for five seconds: 38%: one minute: 33%: five minutes: 35%.

TaskName   CPU  Runtime(CPU Tick High/Tick Low)  Task Explanation

BOX                 0%         0/  18f78e                                           BOX Output
_TIL                0%         0/       0                                                 Infinite loop event task
_EXC                0%         0/       0                                                 Exception Agent Task
VIDL                61%         0/b7abe65c                                      DOPRA IDLE
TICK                0%         0/ 143074e
STND                0%         0/   b3412                                            STNDStandby task
EOAM                24%         0/4994c174                                         EOAMEthernet OAM 802.1ag

3.通过display task查找任务对应的taskid,例如EOAM的taskid为79:

代码语言:javascript
复制
[Quidway-hidecmd] display task [ slot x ]  -- 可指定槽号
name 	      Tid         VOS_Tid  priority    Status           CPU Total(Millsecs)
==============================================================================
BOX       	0x6ec5230     1         8                  sleep                      36830
_TIL      	0x6ebaf90     2         250            eventblock                0
_EXC      	0x6eb0cf0     3         135            eventblock                 0
VIDL      	0x6ea6a50     4         1              preemptready             79669745
TICK      	0x6e9c7b0     5        205           preemptready              476396
STND      	0x6daa8b0     6        80               eventblock                 18097
FTPS      	0x6dbc240     7       100                sleep                       230536
DEV       	0x6e7ffd0       8       140             eventblock                 14818
TCTL      	0x6c6a460    77       100             eventblock                  45
NAP       	0x6c601c0    78       100              eventblock                 45
EOAM      	0x6c55f20    79       100             eventblock                29468818
TRAF      	0x6c4bc80    80       100              eventblock                25659
SLAG      	0x6c419e0    81       100              eventblock                 56

4.根据taskid设置监控阀值。阀值的设置可参考相应任务的现有占用率,如上面的EOAM模块CPU利用率为24%,那么我们设置监控比这个值低一点,例如设置成20%,具体命令为:

代码语言:javascript
复制
set task-monitor-record threshold [threshold] taskid [taskid]


[Quidway-hidecmd]set task-monitor-record threshold 20 taskid 79 [ slot x ] – 可指定槽号Task Monitor has been set on slot 5, TaskId is 79, Threshold is 5

5.查看任务监控记录,具体命令为

代码语言:javascript
复制
display task-monitor-record

[Quidway-hidecmd] display task-monitor-record [ slot x ] – 可指定槽号
=========== Task Cpu-usage Monitor Record (slot:  5) ===========
Current Index:                0

6.最后,必须要关闭任务监控,具体命令为

set task-monitor-record threshold 1 taskid 0。设置taskid为0,就表示关闭任务监控记录。

[Quidway-hidecmd]set task-monitor-record threshold 1 taskid 0[ slot x] –可指定槽号Task Monitor has been closed on slot 5

7.如果是接口板CPU占用率高,需要按照上述1~6步骤搜集相应接口板槽位的任务监控信息(相应的命令行中指定slot即可)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络技术联盟站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 诊断工具
  • 报文冲击导致的CPU使用率高问题
  • CPU使用率高问题信息采集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档