本文档列出了产生 %SYS-3-CPUHOG 错误消息的原因,并说明了如何对它们进行故障排除。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
为减少失控进程的影响,Cisco IOS® 软件使用了一个进程监视器计时器,以允许调度程序定期轮询当前处于活动状态的进程。此功能与抢占功能不同。此功能一种故障安全机制,可确保系统不会因任何进程完全占用了 CPU 而变得无响应或完全锁定。
如果某个进程看上去已挂起(例如,如果它持续长时间运行),那么调度程序可以强制该进程终止。
每当调度程序允许一个进程在 CPU 上运行时,它都会为该进程启动一个监视器计时器。在预设时间段结束之后,如果该进程仍然运行,则监视器进程会生成中断,并通过一次“软件强制崩溃”而使路由器重新启动(堆栈跟踪显示出是某个监视器进程触发了崩溃)。
第一次监视器过期时,调度程序将显示一条警告消息,如下所示:
%SYS-3-CPUHOG: Task ran for 2148 msec (20/13), Process = IP Input, PC = 3199482 -Traceback= 314B5E6 319948A
此消息指示某个进程占用了 CPU。这里,该进程是“IP Input”进程。此消息通常在临时情况期间出现,例如,在路由器启动时或在流量很大的情况下进行在线热插拔 (OIR)。“%SYS-3-CPUHOG”消息不能在路由器正常运行期间出现。
如果在计划了某个进程运行之后路由器在中断级别处于忙状态,则对该进程运行持续时间的计算可能不准确。这是因为 CPUHOG 仅跟踪进程级别的任务。它不跟踪能够中断并获取 CPU 控制权的中断级别的任务。
在中断级别运行的典型进程是数据包交换。
本部分说明如何在不同情况下针对 CPUHOG 消息进行故障排除。
在引导顺序中出现 CPUHOG 消息是十分常见的。错误信息本身意味着引导进程占用 CPU 的时间仅比系统希望占用的时间略长,然后向控制台输出发出消息以通知这一情况。在本例中,该进程为“Boot Load”,它指示出发生 CPUHOG 的位置:
System Bootstrap, Version 11.1(12)XA, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1) Copyright (c) 1997 by cisco Systems, Inc. C1600 processor with 16384 Kbytes of main memory program load complete, entry point: 0x4018060, size: 0x108968 %SYS-3-CPUHOG: Task ran for 2040 msec (6/6), Process = Boot Load, PC =40B513A -Traceback= 407EB6E 407F628 407D118 40180E0 40005B0 4015C3E 40152B2 4014ED4 40025B8 4003086 4015636 40021A8 400C616program load complete, entry point: 0x2005000, size: 0x4195b9 Self decompressing the image : ############################################################################ ############################################################################ ################################################################## [OK]
您可以安全地忽略此错误消息。在引导进程期间,引导加载器使用 CPU 2-4 秒,且不会将其释放。这在引导时不成为问题,因为此时 CPU 仅需要运行引导加载器。更新的引导 ROM 会抑制该特定消息的输出。
每当路由器加载较大的映像时,您也可能会在引导帮助程序映像中遇到 CPUHOG 消息,例如,在您使用 Cisco 1600 系列路由器时。这些路由器配置有 16 MB 以上的 DRAM。
此消息仅在加载映像时出现,并且对系统运行或加载进程没有影响。无论如何,这是表面问题,因为它对系统的正常运行没有影响。
OIR 时出现 CPUHOG 消息是十分常见的,因为路由器必须执行一组复杂而时间相对较长的任务。只要所插入的卡正常运行,就不必担心OIR期间发生CPUHOG消息。
当您尝试访问闪存设备(例如闪存卡或闪存单列直插式内存模块(SIMM))时,如果设备有缺陷或设备未响应,则可能会出现CPUHOG消息。如果该问题反复出现,请与您的 TAC 代表联系。
注:如果您的Catalyst 6500运行集成Cisco IOS软件(本地模式)或混合模式,并且在格式化MSFC (RP) bootflash:时包含CPUHOG消息,则可能是Cisco Bug ID中提到的问题CSCdw53175(仅限注册客户),此问题在Cisco IOS软件版本12.1.11b、12.1(12c)E5或12.1(13)E及更高版本中解决。
在Cisco 12000系列互联网路由器上,转发信息库(FIB)保留在每个线路卡上,用于分组交换。由于 FIB 树的结构,短子网掩码(在 /1 和 /4 之间)的路由更改可能导致控制台日志中出现类似下面的消息:
SLOT 1: %SYS-3-CPUHOG: Task ran for 4024 msec (690/0), process = CEF IPC Background, PC = 400B8908. -Traceback= 400B8910 408FF588 408FF6F4 408FFE8C 400A404C 400A4038
当 Cisco IOS 软件中的某个进程运行时间超过 2000 毫秒(2 秒)时,将显示 CPUHOG 消息。在针对很短的子网掩码进行 Cisco Express Forwarding (CEF) 更新时,所需的处理时间可能会超过 2000 毫秒,从而可能触发这些消息。"CEF IPC背景"进程是控制添加和删除来自转发树的前缀的父进程。
另外,如果 CPU 长时间锁定,则板卡可能会因 Fabric Ping 失败而崩溃,或者 FIB 可能会因丢失的 IPC 通信超时而被禁用。如果您需要对这些问题进行故障排除,请参阅对 Cisco 12000 系列 Internet 路由器上的 Fabric Ping 超时和失败进行故障排除。
一般来说,使用短于 /7 的掩码进行路由更新是不正确的,或是有恶意的。Cisco 建议所有用户配置足够的路由过滤,以防止处理和传播此类更新。如果您需要配置路由过滤器方面的帮助,请与您的技术支持代表联系。
当您清除边界网关协议 (BGP) 或路由表时,也可能会因“CEF IPC Background”进程而触发 CPUHOG 消息。
大多数情况下,这些错误消息是由 Cisco IOS 软件中的内部软件 Bug 引起的。
对此类错误消息进行故障排除的第一步是查找已知 Bug。您可以使用 Bug 工具包(仅限注册用户)来查找与错误匹配的 Bug。在 Bug Toolkit 页上,单击 Launch Bug Toolkit,然后选择 Search for Cisco IOS-related bugs。为了缩小搜索范围,您可在数字 1 下面选择您的 Cisco IOS 软件版本。在数字 3 下面,您可以执行关键字搜索以查找“CPUHOG, <process>”,其中,process 是对应的进程,如 Virtual Exec 或 IP Input。
您可以升级到该版本系列中最新的 Cisco IOS 软件映像,以消除所有已修复的 CPUHOG Bug。
如果您在执行上述故障排除步骤后仍需帮助,并希望使用 Cisco TAC 建立服务请求(仅限注册用户),请务必提供以下信息: |
---|
注:在收集上述信息之前,请勿手动重新加载路由器或对其重新加电,除非需要对Cisco 12000系列互联网路由器上的板卡崩溃进行故障排除,否则可能导致确定问题根本原因所需的重要信息丢失。 |
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
24-Jun-2008 |
初始版本 |