Software Cisco IOS y NX-OS : Cisco IOS 15.1M&T

Errores MALLOCFAIL y Troubleshooting general de los problemas de memoria

17 Octubre 2016 - Traducción Automática
Otras Versiones: PDFpdf | Inglés (22 Agosto 2015) | Comentarios

Introducción

Este documento discute los errores MALLOCFAIL en el ® nativo del Cisco IOS, así como los pasos para tomar e información a recolectar antes de que usted abra un caso del Centro de Asistencia Técnica de Cisco (TAC) o recargue el dispositivo para apresurar la solución de problemas. Este documento no es exhaustivo, sino proporciona las Pautas generales usadas para resolver problemas los problemas de la memoria con mucho Routers y Switches.

Contribuido por Brandon Lynch, ingeniero de Cisco TAC.

Errores MALLOCFAIL

Los problemas de memoria se manifiestan de varias maneras en el Switches y el Routers. En muchos casos, se recarga un dispositivo que experimenta los errores de memoria antes de que se recopilen los datos apropiados.

Los problemas de la memoria aparecen generalmente bajo la forma de errores MALLOCFAIL en los registros de su router o Switch. Estos errores son importantes porque proporcionan las “señales de tráfico” de dirigir la investigación. Aquí está un error MALLOCFAIL de la muestra:

%SYS-2-MALLOCFAIL: Memory allocation of 65536 bytes failed
from 0x60103098,
alignment 0
Pool: Processor  Free: 5453728  Cause: Memory fragmentation
Alternate Pool: None  Free: 0  Cause: No Alternate pool

La primera cosa a notar es cuánto necesita la memoria usted afectar un aparato y cuánta memoria libre usted tiene. Este ejemplo muestra que un escenario donde usted debe afectar un aparato 65KB de un pool que tenga solamente aproximadamente 5.45MB libera. La salida indica que, aunque hay memoria libre suficiente, el bloque contiguo más grande es más pequeño que 65KB, y la asignación de memoria fallada. Mientras que, por definición, esto se considera fragmentación de la memoria, ésta no es generalmente la causa. Lo más a menudo posible, es causada simplemente por memoria baja en el pool sí mismo.

La segunda cosa a notar es el tipo del pool. El ejemplo del prevoius ocupado del agrupamiento de procesador. Esto es importante porque es la primera señal de tráfico que dirige la investigación y qué necesidades de ser marcado. El pool especificado debe ser procesador o entrada-salida. Aquí está un ejemplo memoria de I/O de un error:

%SYS-2-MALLOCFAIL: Memory allocation of 65548 bytes failed from 0x400B8564, 
alignment 32
Pool: I/O  Free: 39696  Cause: Not enough free memory
Alternate Pool: None  Free: 0  Cause: No Alternate pool

Las siguientes secciones detallan a estos pools más lejos. El pool se identifica una vez, usted puede enfocar sus esfuerzos por consiguiente en los puntos derechos.

Agrupamiento de procesador

Utilizan al agrupamiento de procesador, mientras que el nombre implica, para los diversos procesos que se ejecutan en el router o el Switch. Hay los procesos específicos que son la base de la mayoría de las versiones deL Cisco IOS y de las Plataformas que utilicen la memoria. Por ejemplo, el init es un proceso establecido en el arranque inicial de la mayoría de los dispositivos, y está presente a través de las diversas Plataformas. Otros procesos que pudieron ser presente se basan en la configuración del dispositivo individual. Por ejemplo, en las Plataformas en las cuales exprese se configura y los procesos usados, Voz-específicos consumen la memoria, mientras que en configuraciones generalizadas sin la Voz, estos procesos no celebran tanto, o cualquier memoria en absoluto.

Ciertos procesos celebran más memoria que otras. Si hay preguntas o preocupaciones por un proceso determinado, es el mejor abrir un caso TAC para hacerlo investigar.

Causas y qué a recoger

  1. Si el dispositivo ha experimentado recientemente una actualización de Cisco IOS, la primera cosa a marcar es el DRAM requerido mínimo para la nueva imagen. Éste debe ser igual o menos que a la cantidad de DRAM instalada en el dispositivo sí mismo. El mínimo requirió el DRAM es mencionado bajo imagen dentro de la herramienta de la descarga del software. Ingrese el comando show version para confirmar la cantidad de DRAM instalada:
    Cisco 2821 (revision 53.51) with 210944K/51200K bytes of memory.

    Para determinar el DRAM total, agregue estos números. Este router Cisco determinado tiene 256MB del DRAM.

  2. Otra posible causa es una fuga de memoria causada por un bug del Cisco IOS. En esta situación, un proceso consume una cantidad excesiva de memoria hasta que se ejecute hacia fuera. Ingrese estos comandos cuando la memoria es baja para recoger la información:
    show clock
    show mem stat
    show proc mem sorted
    show mem all totals
    show log

    El mem del proc de la demostración clasificó las listas de comandos todos los procesos en el orden descendente de la cantidad de memoria más alta llevada a cabo al más bajo. Identifique el proceso más alto, pero excluya el init. Una vez que la investigación es completa, encuentre el identificador de proceso (PID) para ese proceso en el lado izquierdo de la salida, y recoja esta información:
    show proc mem <PID #>

    Si el proceso más alto está muerto, recoja esta información además de las salidas anteriores:
    show mem dead totals
    show mem dead

    Ciertos procesos requieren una investigación más profundizada, pero no se cubren en este documento.

  3. Otra causa potencial de los problemas de la memoria se encuentra cuando usted se ejecuta de la memoria debido a los procesos y a la configuración en el dispositivo. Un ejemplo de esto es el router BGP (Border Gateway Protocol). A veces, el BGP lleva a cabo una gran cantidad de memoria debido al número de rutas que admita. Esto no es causada por un bug del Cisco IOS. Este problema debe ser corregido alterando la configuración para alcanzar el ruteo óptimo y reducir la consumición de la memoria.

    Si usted es inseguro, recoja las salidas enumeradas previamente (excluya los totales muertos del mem de la demostración y muestre el mem absolutamente), y abra un caso TAC, porque este problema requerirá probablemente la investigación adicional.

Pool entrada-salida

El pool entrada-salida refiere a los buffers entrada-salida vistos con el comando show buffers. Estos buffers se utilizan para el tráfico process-switched, entre otras cosas, por ejemplo las actualizaciones de ruteo o los broadcasts. Memoria de I/O se analiza en los pools, que se muestran en la salida del comando show buffers. Basan a estos pools en el tamaño de paquetes, que permite la asignación más eficiente de la memoria basada en las necesidades.

Causas y qué a recoger

  1. La primera cosa a marcar con memoria de I/O los problemas es una fuga de búfer potencial causada por un bug del Cisco IOS. Esto se manifiesta a menudo como pool determinado que aumenta su cantidad de buffers sin liberarlos nuevamente dentro del pool entrada-salida que se necesitan una vez no más. Aquí está un ejemplo de esto:
     --------- show buffers --------

    Buffer elements:
         500 in free list (500 max allowed)
         3220350364 hits, 0 misses, 0 created

    Public buffer pools:
    Small buffers, 104 bytes (total 6144, permanent 6144):
         3867 in free list (2048 min, 8192 max allowed)
         248913132 hits, 0 misses, 0 trims, 0 created
         0 failures (0 no memory)
    Medium buffers, 256 bytes (total 86401, permanent 3000, peak 86401 @ 05:18:11):
         0 in free list (64 min, 3000 max allowed)
         9697361 hits, 203293 misses, 2208 trims, 85609 created
         167633 failures (651288 no memory)
    Middle buffers, 600 bytes (total 512, permanent 512):
         0 in free list (64 min, 1024 max allowed)
         9284431 hits, 237750 misses, 0 trims, 0 created
         224619 failures (680486 no memory)
    Big buffers, 1536 bytes (total 1000, permanent 1000):
         0 in free list (64 min, 1000 max allowed)
         69471745 hits, 895218 misses, 0 trims, 0 created
         842142 failures (1821074 no memory)
    VeryBig buffers, 4520 bytes (total 10, permanent 10, peak 122 @ 1w3d):
         0 in free list (0 min, 100 max allowed)
         2120517 hits, 1632477 misses, 112 trims, 112 created
         1632421 failures (3272987 no memory)
    Large buffers, 9240 bytes (total 8, permanent 8, peak 18 @ 1w3d):
         0 in free list (0 min, 10 max allowed)
         9593 hits, 832217 misses, 44 trims, 44 created
         832195 failures (1651309 no memory)
    Huge buffers, 18024 bytes (total 2, permanent 2):
         0 in free list (0 min, 4 max allowed)
         1325 hits, 831497 misses, 0 trims, 0 created
         831494 failures (1649904 no memory)

    La salida anterior muestra claramente que el problema está con el pool medio. Su valor total es mucho más alto que la cantidad permanente fijada para ese pool. La salida muestra que, incluso con sobre 86,000 buffers en el pool, usted tiene 0 disponible en la lista disponible. Finalmente, la salida muestra que el número de ajustes es mucho más bajo que el número creado, que indica que éstos no se han liberado nuevamente dentro del pool entrada-salida para el consumo adicional. Para la explicación adicional de estos campos, vea las definiciones para los campos de los recursos compartidos del almacén intermedio conectar en la sección de información relacionada en el extremo de este documento.

    Para este escenario, primero capture estas salidas:
    show clock
    show mem stat
    show buffers
    show log

    Una vez determinan, ingresa el pool o a los pools problemáticos este comando para centrarse en el agrupamiento de problemas:
    show buffer pool <pool name> packet

    Este comando pudo proporcionar la salida extensa. Usted puede determinar generalmente qué paquetes residen en estos buffers y quién los afectó un aparato dentro de algunas páginas de la salida.

  2. Otra posible causa es un evento de la red/del tráfico. Esto se manifiesta a menudo como utilización excesiva en los agrupamientos múltiples. Se recomienda que las salidas anteriores estén recogidas, junto con el comando packet del name> del <pool del show buffer pool hecho salir para los pools que muestran esta utilización, y que usted abre un caso TAC. Esto es causada a menudo por un flujo de tráfico anormal o inesperado que deba ser process-switched por el dispositivo. Porque el flujo pudo ser bursty y rápido, usted puede ejecutarse de memoria de I/O en relativamente un período corto. Para resolver problemas este tipo de problema, usted debe identificar generalmente la fuente del tráfico para ver si este flujo es anormal y, si es así lo elimina o bloquea.

  3. Otro, más evento extraño es que un pool específico pesado-está utilizado más debido a cierto tráfico que se necesite en un entorno de red. Este tráfico pudo, por alguna razón, necesitar ser process-switched, y no hay manera de evitar esto en la red. Este escenario se debe confirmar más lejos, y entonces la acción apropiada debe ser tomada. Las mismas salidas del paso 1 se aplican aquí.

Elementos a investigar

En la mayoría del Routers, los ejemplos del error MALLOCFAIL presentados previamente son estándar. En los Cisco Catalyst 6500 Series Switch y los 7600 Series Router con los motores del supervisor (SUP) o el Route Switch Processor (RSP), estos errores pudieron variar. Por ejemplo, este error fue tomado del Route Processor que el (RP) abre una sesión un 6500 Series Switch:

%SYS-SP-2-MALLOCFAIL: Memory allocation of 820 bytes failed from 0x40C83B60,
alignment 32
Pool: I/O  Free: 48  Cause: Not enough free memory
Alternate Pool: None  Free: 0  Cause: No Alternate pool

El error MALLOCFAIL muestra que el switch processor (SP) del SUP señala el problema, no el RP. Si el problema se asocia al RP, la designación SP en el error no está presente. Por este motivo, las salidas anteriores se deben tomar del SP. Para lograr esto, preceda los comandos con:

remote command switch

El mensaje de error pudo también referir al SUP/RSP espera RP o SP según lo denotado por STDBY, y a las necesidades de ser recogido por consiguiente.

Resumen

Usted puede ser que acelere la resolución del caso y traiga la estabilidad a su dispositivo más rápidamente si usted recoge las salidas enumeradas en este documento. Si se presentan algunas preguntas o si hay incertidumbre sobre el funcionamiento de la memoria en un dispositivo, es el mejor abrir un caso TAC para hacerlo investigar.

Información Relacionada



Document ID: 116467