Introducción
Este documento describe sugerencias generales para la solución de problemas para recopilar información adicional para un problema de pérdida de memoria.
Prerequisites
Requirements
Cisco recomienda tener conocimientos básicos sobre estos temas:
- Conocimientos básicos de Cisco IOS® XE
- Conocimientos básicos de Embedded Event Manager (EEM)
Componentes Utilizados
Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware. Se aplica a cualquier plataforma de routing Cisco IOS XE, como ASR1000, ISR4000, ISR1000, Cat8000 o Cat8000v.
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). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
En este documento, puede encontrar registros comunes que el dispositivo genera en caso de una alta utilización de la memoria.
Además, puede ver cómo puede beneficiarse de la función Embedded Event Manager para ayudar al TAC a supervisar y obtener datos sobre situaciones en las que el router IOS XE se está quedando con frecuencia sin memoria.
El objetivo de este documento no es explicar exhaustivamente los procedimientos de solución de problemas, si están disponibles, sino que sólo se proporcionan referencias a guías de resolución de problemas más detalladas.
Síntomas de routers IOS XE que se quedan sin memoria
Cuando se trata de problemas de uso elevado de memoria, normalmente aparece un mensaje de registro que indica que se ha alcanzado el límite de advertencia del 85%. Este valor varía dependiendo de la versión. Se generan diferentes registros dependiendo de dónde encontró el problema el sistema:
Problemas de TCAM:
CPP_FM-3-CPP_FM_TCAM_WARNING
IOSd (plano de control):
SYS-2-MALLOCFAIL
SYS-2-CHUNKEXPANDFAIL
SYS-4-CHUNKSIBLINGSEXCEED
QFP (plano de datos):
QFPOOR-4-LOWRSRC_PERCENT_WARN
QFPOOR-4-TOP_EXMEM_USER
CPPEXMEM-3-NOMEM
CPPEXMEM-3-TOPUSER
Sistema de archivos temporal (TMPFS):
PLATFORM-3- ELEMENT_TMPFS_WARNING
Registro general del sistema (necesita aislamiento):
PLATFORM-4-ELEMENT_WARNING
PLATFORM-3-ELEMENT_CRITICAL
Nota: Las mejoras de registro están disponibles a partir de la versión 16.12 y posteriores.
Información sobre las necesidades del TAC para el diagnóstico inicial
show clock
show version
show platform resources
show platform software status control-processor brief
show process memory sorted
show memory statistics
show memory allocation-process totals
show process memory platform sorted
show logging
- En caso de una recarga inesperada debido a una condición de memoria baja:
informe del sistema/archivo principal
- Gráfico de utilización de la memoria a lo largo del tiempo.
Adjuntar un show tech es deseable, es útil para el TAC, y usted puede beneficiarse de la automatización que el TAC ha desarrollado para ayudarle a encontrar problemas más rápidamente.
Las condiciones que conducen a una alta utilización de la memoria siempre están relacionadas con el software. Sin embargo, no todos los casos de uso elevado de memoria son inesperados. Es importante tener en cuenta la DRAM disponible y la combinación de funciones que se ejecutan en el dispositivo.
La resolución de problemas de alta utilización de memoria es más suave, más eficaz y con una mejor interacción del TAC si utiliza Radkit. Esta herramienta, desarrollada por Cisco, proporciona al TAC una forma fácil y muy segura de acceder a los dispositivos que seleccione en la red. Para obtener más información, visite: RADKit de Cisco
Nota: Asegúrese de que está ejecutando una versión compatible. Busque el documento de fin de venta y fin del ciclo de vida de la versión. Si es necesario, cambie a una versión que se encuentre actualmente en las versiones de mantenimiento de software. De lo contrario, el TAC se puede limitar en cuanto a las opciones de resolución y resolución de problemas.
Para obtener un documento completo sobre la resolución de problemas de memoria, consulte estas guías:
En ISR4K: Guía de resolución de problemas de memoria para ISR de Cisco serie 4000.
En ASR1K: Guía de resolución de problemas de memoria del router serie ASR 1000.
Uso elevado de memoria
En los routers Cisco IOS XE, la DRAM es uno de los recursos más importantes que admite la funcionalidad principal. DRAM se utiliza para almacenar diferentes tipos de datos y procesos/características de información que son esenciales para las operaciones tanto del plano de control como del plano de datos.
Los usos principales de la DRAM en routers IOS XE incluyen:
Memoria IOSd (estructuras del plano de control): Almacena procesos relacionados con la información relacionada con el plano de control del dispositivo, como: información/protocolos de ruteo, estructuras de administración de red, configuraciones del sistema e información de funciones.
Memoria QFP (estructuras de plano de datos): Almacena todo lo relacionado con las operaciones de QFP gestionadas por el microcódigo, como estructuras clave de funciones almacenadas en QFP, instrucciones de microcódigo e instrucciones de reenvío.
Sistema de archivos temporal (TMPFS): Montado en DRAM y administrado por IOSd, TMPFS sirve como un área de almacenamiento de acceso rápido para los archivos que necesitan los procesos. En caso de que esos archivos sean persistentes, se mueven a un disco duro/bootflash. Mejora el rendimiento del sistema al reducir los tiempos de lectura y escritura de los datos temporales.
Procesos generales que se ejecutan en el núcleo Linux: Dado que IOS XE funciona en un kernel basado en Linux, DRAM también soporta varios procesos del sistema que se ejecutan sobre este kernel.
Una alta utilización de memoria superior al 85% indica normalmente un consumo de DRAM significativo, lo que puede afectar al rendimiento del router. Este uso elevado puede ser el resultado de demandas legítimas, como el almacenamiento de tablas de ruteo extensas o la habilitación de funciones de uso intensivo de recursos. Sin embargo, también puede señalar problemas como la gestión ineficiente de la memoria por ciertas características o pérdidas de memoria, donde la memoria no se libera correctamente al sistema después de su uso.
Al monitorear la utilización de la memoria a través de la memoria IOSd, la memoria QFP, TMPFS y los procesos generales de Linux, usted y el TAC pueden identificar los posibles problemas en forma temprana.
EEM supervisará la utilización de la memoria
Para solucionar problemas de memoria, el TAC necesita recopilar un conjunto de comandos durante un período de tiempo para identificar el proceso infractor. A veces, después de identificar el proceso culpable, se necesitan comandos específicos adicionales, lo que hace que la resolución de problemas de memoria sea uno de los tipos de resolución de problemas que más tiempo consumen.
Para facilitar esta solución de problemas, puede utilizar la función EEM para supervisar y recopilar información automáticamente. Hay dos consideraciones principales para escribir el script EEM: desencadenador y comandos que se deben recopilar.
Desencadenadores
Patrón. Puede utilizar el patrón de la sección Síntomas de los routers Cisco IOS XE que se quedan sin memoria. El formato es similar al siguiente:
event syslog pattern <pattern> ratelimit 300 maxrun 180
Una de las consideraciones al utilizar un patrón como disparador, es que el registro se genera una vez que se alcanza el umbral de advertencia, dependiendo de la tasa de consumo de memoria, al intentar hacerlo manualmente, usted o el TAC no tienen tiempo suficiente para una resolución de problemas más detallada.
Temporizador cron. Ejemplo de un temporizador cron que se activará cada 30 minutos:
event timer cron name HalfHour cron-entry "*\30 * * * *"
Una de las ventajas de un temporizador cron sobre un patrón es que no es necesario esperar hasta que el dispositivo casi se quede sin recursos de memoria para recopilar información. Dependiendo de la tasa de consumo de memoria, con la supervisión y la información adecuadas, el TAC puede identificar el proceso ofendido antes de alcanzar el umbral de advertencia.
Nota: Las opciones de límite de velocidad y maxrun se utilizan para garantizar que se recopilan todos los resultados. También ayudan a evitar ruidos adicionales o la activación de EEM en situaciones en las que aparecen varios registros en un corto período de tiempo.
Ejemplos de EEM con comandos generales para el triaje inicial:
configure terminal
event manager applet TAC_EEM authorization bypass
event syslog pattern " PLATFORM-4-ELEMENT_WARNING" ratelimit 300 maxrun 180
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM.txt"
action 1.1 cli command "show clock | append bootflash:TAC_EEM.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM.txt"
Monitorear diariamente con un temporizador cron:
configure terminal
event manager applet TAC_EEM2 authorization bypass
event timer cron name DAYLY cron-entry "0 0 * * *"
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 0.3 cli command "term length 0"
action 0.4 cli command "show process memory platform sorted | append bootflash:TAC_EEM2.txt"
action 0.5 cli command "show processes memory platform sorted location chassis 1 R0 | append bootflash:TAC_EEM2.txt"
action 0.6 cli command "show processes memory platform sorted location chassis 2 R0 | append bootflash:TAC_EEM2.txt"
action 0.9 cli command "show platform resources | append bootflash:TAC_EEM2.txt"
action 1.0 cli command "show platform software status control-processor brief | append bootflash:TAC_EEM2.txt"
action 1.1 cli command "show log | append bootflash:TAC_EEM2.txt"
action 1.2 cli command "show clock | append bootflash:TAC_EEM2.txt"
action 1.3 cli command "show platform software process memory chassis active r0 all sorted | append bootflash:TAC_EEM2.txt"
action 1.5 cli command "show process memory platform accounting | append bootflash:TAC_EEM2.txt"
Para obtener una lista más completa de comandos, consulte las guías de la sección Información sobre las necesidades del TAC para el triaje inicial.
Archivo principal
Cuando la utilización de la memoria alcanza un nivel crítico, lo más probable es que el sistema operativo fuerce una caída para recuperarse de esta condición, generando un informe del sistema que contiene un archivo de núcleo.
El archivo de núcleo es el volcado completo de memoria para un proceso determinado que se estrelló en un momento determinado. Este archivo de núcleo es crítico para que el TAC inspeccione la memoria y analice el código fuente para entender las condiciones y las posibles razones de la recarga inesperada/caída del proceso.
El archivo de núcleo ayuda al TAC y a los desarrolladores a encontrar la causa raíz del problema, depurar y solucionar el problema.
Nota: A pesar de que TAC y los desarrolladores se esfuerzan por obtener una causa raíz, hay momentos en los que el desperfecto fue consecuencia de un evento de red, o un problema de sincronización que hace que sea prácticamente imposible reproducirlo en el laboratorio.
Para obtener más información sobre las recargas inesperadas y cómo recuperar un archivo de núcleo, refiérase a Resolución de Problemas de Recargas Inesperadas en Plataformas Cisco IOS® con TAC.