Este documento explica las razones por las cuales se utiliza de manera intensa la CPU debido a interrupciones y le provee consejos y pautas para la resolución de problemas.
No hay requisitos específicos para este documento.
Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware.
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
La alta utilización de la CPU en un nivel de interrupción es causada principalmente por los paquetes manejados en el nivel de interrupción. Las interrupciones se generan cada vez que se emite un carácter desde la consola o los puertos auxiliares de un router.
En comparación con los routers, los Receptores/transmisores asíncronos universales (UART) tienen una velocidad de procesamiento lenta. Por eso, es poco probable, pero posible, que las interrupciones de la consola o auxiliares causen una alta utilización de la CPU en el router (a menos que el router esté usando una gran cantidad de líneas TTY).
Existen varios motivos para la alta utilización de la CPU debido a interrupciones:
Se ha configurado un trayecto de conmutación inapropiado en el router
Hay un error en el software del IOS® de Cisco que se ejecuta en el router
Existen interfaces activas del Asynchronous Transfer Mode (ATM) en el router
Demasiados paquetes están siendo enviados del PXF al procesador de rutas (RP)
Para solucionar este problema potencial, verifique lo siguiente:
Compruebe si el router está ejecutando Cisco Express Forwarding:
Verifique la configuración para el comando de configuración global ip cef.
Verifique que Cisco Express Forwarding esté habilitado y en funcionamiento al ejecutar el comando show ip cef summary.
Verifique que Cisco Express Forwarding esté habilitado como el trayecto de conmutación en todas las interfaces. Puede observar esto en el resultado de show cef interface y show ip interface. Si se configura Cisco Express Forwarding, pero no se habilita en una interfaz, esto significa que la encapsulación de interfaz no se soporta en Cisco Express Forwarding. Verifique que Cisco Express Forwarding esté operativo, es decir, verifique si los paquetes se conmutan realmente a través del router usando Cisco Express Forwarding mirando show cef not-cef-switched .
Utilice el comando show cef drop y el comando show interfaces switching (este es un comando oculto que puede utilizar para buscar pérdidas de caché), para verificar que Cisco Express Forwarding no esté liberando paquetes. Si éste es el caso, consulte la página de Troubleshooting de CEF.
Verifique si alguna de las interfaces tiene listas de acceso largas configuradas.
Como regla general, cualquier lista de acceso con más de diez líneas se considera larga.
La revisión reiterada de las listas de acceso largas exige mucho a la CPU. Con la conmutación NetFlow, si el flujo ya está en el caché, no necesita revisar la lista de acceso. En este caso, el switching de NetFlow sería útil. Puede habilitar la conmutación de NetFlow mediante la ejecución del comando ip route-cache flow.
Tenga en cuenta que si Cisco Express Forwarding y NetFlow están configurados en una interfaz, se utilizará Cisco Express Forwarding para tomar una decisión de switching.
Verifique que la conmutación NetFlow se encuentre configurada en el router:
Verifique las estadísticas ejecutando el comando show ip cache flow . Observe el número de nuevos flujos por segundo.
Si Cisco Express Forwarding no está habilitado, habilite Cisco Express Forwarding para acelerar la decisión de conmutación.
Si no hay listas de acceso largas, intente inhabilitar la conmutación de NetFlow.
Los errores de alineación son causados por lecturas y escrituras mal alineadas. Por ejemplo, una lectura de dos bytes donde la dirección de memoria no es un múltiplo par de dos bytes es un error de alineación.
Los errores de alineación son causados generalmente por un error de software. La CPU corrige este error, pero si hay muchas correcciones que hacer, esto se convierte en CPU-intensiva. Para solucionar este tipo de error, consulte Solución de problemas de accesos falsos, errores de alineación e interrupciones falsas.
La salida de los comandos show interfaces y show interfaces switching (hidden) proporciona información sobre las interfaces que están sobrecargadas. Siga los pasos que se indican a continuación para capturar el resultado de estos comandos en un archivo de registro para realizar un análisis posterior.
Ejecute el comando terminal length 0.
Verifique el resultado de show interfaces. Examine la carga y el número de aceleradores en las interfaces. La carga es un valor promedio computado, en forma predeterminada, en un periodo de cinco minutos. Para cambiar este intervalo, ejecute el comando load-interval seconds , donde los segundos representan la cantidad de tiempo durante la cual se utilizan los datos para calcular las estadísticas de carga. Utilice un valor múltiplo de 30.
Los aceleradores son un buen indicio de un router sobrecargado. Muestran el número de veces que el receptor en el puerto ha sido inhabilitado, posiblemente debido a la sobrecarga del buffer o del procesador. Junto con la alta utilización de CPU en un nivel de interrupción, los aceleradores indican que el router está sobrecargado de tráfico.
Verifique el resultado del comando show interfaces switching (hidden) para ver qué tipo de tráfico (protocolo y trayectoria de conmutación) pasa a través de la interfaz sobrecargada. Si algunas interfaces están demasiado sobrecargadas de tráfico, considere rediseñar el flujo de tráfico en la red o actualizar el hardware.
El loop de red también puede ser una razón para la sobrecarga de tráfico. Compruebe la topología de red.
Si existe la posibilidad de que un solo dispositivo genere paquetes a una velocidad extremadamente alta y, por lo tanto, sobrecargue el router, puede determinar la dirección MAC de ese dispositivo agregando el comando de configuración de la interfaz ip accounting mac-address {input|output} a la configuración de la interfaz sobrecargada.
El comando show interfaces [ ] mac-accounting muestra la información recolectada. Una vez que se encuentra la dirección MAC del dispositivo de origen, se puede encontrar la dirección IP correspondiente comprobando la salida del comando show ip arp.
Si sospecha que se está ejecutando un bug en la versión del software del IOS de Cisco en el router, puede verificar el Bug Toolkit (sólo para clientes registrados) en busca de un bug que informe síntomas similares en un entorno similar.
Incluso si no hay tráfico, el software continúa supervisando la señalización asociada al canal (CAS), que utiliza los recursos de la CPU.
Incluso si no hay tráfico, las interfaces ATM envían celdas nulas (según los estándares ATM) y continúan usando recursos de la CPU.
Cuando PXF ubica demasiados paquetes en el RP, el RP puede sobrecargarse. Puede comparar la cantidad de paquetes punteados con la cantidad total de paquetes entrantes mediante la ejecución del comando show pxf accounting summary. Utilice el mismo comando para averiguar por qué los paquetes están apuntando al RP. Esto podría ser un bug de software o el tráfico no es soportado por PXF.
La creación de perfiles de CPU es una forma de determinar dónde pasa el tiempo la CPU. El sistema funciona muestreando la ubicación del procesador cada cuatro milisegundos. El recuento de esa ubicación en la memoria aumenta. La causa raíz de esta utilización de la CPU vendrá determinada por la definición de perfiles de CPU.
Complete estos pasos para realizar la generación de perfiles de CPU. El uso de la CPU se ha realizado cuando se está experimentando un uso elevado de la CPU.
Nota: Todos estos comandos deben escribirse en el modo de activación
Capture el resultado de show region y tome la dirección inicial, la dirección final y el tamaño de main:text region
Capture el resultado de show memory statistics y verifique el tamaño del bloque más grande en la memoria del procesador.
Realice la interrupción de la tarea de perfil para configurar la generación de perfiles sólo para interrupciones.
Compare el tamaño de la región main:text con el tamaño del bloque más grande de memoria libre del procesador. Idealmente, el bloque más grande debe ser mayor que el bloque main:text.
Si el bloque más grande es más pequeño que main:text size, ajuste la granularidad para asegurarse de que la generación de perfiles pueda obtener un bloque de memoria del procesador.
Si el bloque más grande es mayor que la región main:text, utilice una granularidad de 4.
Si el bloque más grande es mayor que la mitad de la región main:text, utilice una granularidad de 8.
Si el bloque más grande es mayor que un cuarto de la región main:text, utilice una granularidad de 10 ( 16 en hexadecimal).
Nota: La granularidad debe ser una potencia de 2 y debe ser lo más pequeña posible (pero no inferior a 4)
Comience la creación de perfiles mediante perfiles
Profile <starting address> <ending address> <granularity value>
La dirección inicial y final se determina a partir del paso 1.
Espere de 5 a 10 minutos
Detener la creación de perfiles haciendo profile stop
Capture el resultado de show profile terse.
Asegúrese de liberar la memoria haciendo unprofile all
Este comando se utiliza para determinar trayectos de switching activos en interfaces. Para obtener más información sobre las trayectorias de conmutación en el software del IOS de Cisco, consulte Configuración de trayectorias de conmutación .
El siguiente es un ejemplo del resultado del comando show interfaces switching para una interfaz:
RouterA#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
El resultado enumera las trayectorias de conmutación para todos los protocolos configurados en la interfaz, de modo que pueda ver fácilmente qué tipo y la cantidad de tráfico pasa a través del router. La tabla siguiente explica los campos de salida:
Campo | Definición |
---|---|
Proceso | Paquetes procesados. Pueden ser paquetes destinados al router, o paquetes para los cuales no había entrada en la memoria caché de fast switching. |
No se encuentra la memoria caché | Paquetes sin entrada en memoria caché de fast switching. Se procesará el primer paquete para este destino (o flujo, según el tipo de fast switching configurado). Todos los paquetes subsecuentes serán procesados por fast switching, a menos que éste último esté explícitamente inhabilitado en la interfaz saliente. |
Rápido | Paquetes de conmutación rápida. Fast Switching está habilitado de forma predeterminada. |
Auton/SSE | Paquetes conmutados autónomos, conmutados por silicio o conmutados distribuidos. Solamente disponible en los routers de la serie 7000 de Cisco con procesador de switch o procesador de switch de silicio (para conmutación autónoma o conmutación de silicio, respectivamente) o en los routers de la serie 7500 de Cisco con una VIP (para conmutación distribuida). |
Este script guarda las salidas en flash:CPU_Profile cuando la utilización de la CPU es superior al 75%:
service internal event manager applet High_CPU event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.6 get-type next entry-opge entry-val 75 exit-time 10 poll-interval 5 action 0.1 syslog msg "CPU Utilization is high" action 0.2 cli command "enable" action 0.4 cli command "show log | append flash:CPU_Profile.txt" action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt" action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt" action 1.1 cli command "configure terminal" action 1.2 cli command "profile xxxxxxx yyyyyyyyZ" action 1.3 cli command "profile start" action 2.3 syslog msg "Entering TCLSH" action 2.4 cli command "tclsh" action 2.5 cli command "after 240000" action 2.6 cli command "exit" action 2.9 syslog msg "Exiting TCLSH" action 3.0 cli command "profile stop" action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt" action 3.2 cli command "clear profile" action 3.3 cli command "unprofile all" action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..." action 4.2 cli command "end"
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
12-Mar-2003
|
Versión inicial |