Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Descripción General de Diseño de Memoria ASR

Asignación de memoria bajo el conjunto lsmpi_io

Uso de la memoria

Verificación del Uso de Memoria en IOS-XE

Verificación del Uso de Memoria en IOSd

Verifique el uso de TCAM en un ASR1K

Verificar el uso de la memoria en QFP

Introducción

Este documento describe cómo verificar la memoria del sistema y resolver problemas relacionados con la memoria en los routers de servicios de agregación de la serie ASR 1000 de Cisco (ASR1K).

Prerequisites

Requirements

Cisco recomienda que tenga conocimientos básicos sobre estos temas:

- Software Cisco IOS-XE

- CLI ASR

Nota: Es posible que necesite una licencia especial para iniciar sesión en el shell de Linux en el router serie ASR 1001.

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- Todas las plataformas ASR1K

- Todas las versiones de software Cisco IOS-XE compatibles con la plataforma ASR1K

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Descripción General de Diseño de Memoria ASR

Con la mayoría de las plataformas de router basadas en software, la mayoría de los procesos de software internos se ejecutan dentro de la memoria Cisco IOS®. La plataforma ASR1K presenta una arquitectura de software distribuida que elimina muchas responsabilidades del sistema operativo del proceso IOS. El IOS en esta arquitectura, que anteriormente era responsable de casi todas las operaciones internas, ahora se ejecuta como uno de muchos procesos Linux. Esto permite que otros procesos Linux compartan la responsabilidad por el funcionamiento del router.

ASR1K ejecuta IOS-XE, no el IOS tradicional. En IOS-XE, un componente Linux ejecuta el núcleo y el IOS se ejecuta como un demonio, que en lo sucesivo se denomina IOSd (IOS-Daemon). Esto crea un requisito para que la memoria se divida entre el kernel de Linux y la instancia de IOSd.

La memoria que se divide entre IOSd y el resto del sistema se fija al inicio y no se puede modificar. Para un sistema de 4 GB, IOSd se asigna aproximadamente 2 GB y para un sistema de 8 GB, el IOSd se asigna aproximadamente 4 GB (con redundancia de software desactivada).

Dado que el ASR1K tiene una arquitectura de 64 bits, cualquier puntero que se encuentre en cada estructura de datos del sistema consume el doble de memoria en comparación con las plataformas de una sola CPU tradicionales (8 bytes en lugar de 4 bytes). El direccionamiento de 64 bits permite al IOS superar la limitación de memoria direccionable de 2 GB del IOS, lo que le permite ampliarse a millones de rutas.

Nota: Asegúrese de tener suficiente memoria disponible antes de activar cualquier función nueva. Cisco recomienda que tenga al menos 8 GB de DRAM si recibe toda la tabla de routing de protocolo de gateway fronterizo (BGP) cuando se habilita la redundancia de software para evitar el agotamiento de la memoria.

Asignación de memoria bajo el conjunto lsmpi_io

El conjunto de memoria de la interfaz de punto de memoria compartida de Linux (LSMPI) se utiliza para transferir paquetes del procesador de reenvío al procesador de routing. Este conjunto de memoria se divide en la inicialización del router en memorias intermedias preasignadas, a diferencia del grupo de procesadores, donde IOS-XE asigna bloques de memoria dinámicamente. En la plataforma ASR1K, el conjunto lsmpi_io tiene poca memoria libre â  generalmente menos de 1000 bytes â  lo que es normal. Cisco recomienda que deshabilite la supervisión del grupo de la LSMPI de las aplicaciones de administración de redes para evitar falsas alarmas.

ASR1000# show memory statistics

Head      Total(b)    Used(b)    Free(b)     Lowest(b)   Largest(b)

Processor  2C073008  1820510884  173985240  1646525644  1614827804  1646234064

lsmpi_io   996481D0  6295088     6294120    968         968         968

Si hay algún problema en la trayectoria de LSMPI, el contador Error al salir del dispositivo parece aumentar en este resultado del comando (se omitió algún resultado):

ASR1000-1# show platform software infrastructure lsmpi driver

LSMPI Driver stat ver: 3

Packets:

In: 674572

Out: 259861

Rings:

RX: 2047 free    0    in-use    2048 total

TX: 2047 free    0    in-use    2048 total

RXDONE: 2047 free    0    in-use    2048 total

TXDONE: 2047 free    0    in-use    2048 total

Buffers:

RX: 7721 free    473  in-use    8194 total

Reason for RX drops (sticky):

Ring full        : 0

Ring put failed  : 0

No free buffer   : 0

Receive failed   : 0

Packet too large : 0

Other inst buf   : 0

Consecutive SOPs : 0

No SOP or EOP    : 0

EOP but no SOP   : 0

Particle overrun : 0

Bad particle ins : 0

Bad buf cond     : 0

DS rd req failed : 0

HT rd req failed : 0

Reason for TX drops (sticky):

Bad packet len   : 0

Bad buf len      : 0

Bad ifindex      : 0

No device        : 0

No skbuff        : 0

Device xmit fail : 0

Device xmit rtry : 0

Tx Done ringfull : 0

Bad u->k xlation : 0

No extra skbuff  : 0

<snip>

Uso de la memoria

ASR1K incluye estos elementos funcionales en su sistema:

- Procesador de ruta (RP) ASR de la serie 1000

- Procesador de servicios integrados (ESP) ASR de la serie 1000

- Procesador de interfaz SPA (SIP) ASR de la serie 1000

Como tal, se requiere monitorear la utilización de la memoria por cada uno de estos procesadores en un entorno de producción.

Los procesadores de control ejecutan el software Cisco IOS-XE que consta de un núcleo basado en Linux y un conjunto común de programas de utilidad de nivel OS, que incluye Cisco IOS que se ejecuta como proceso de usuario en la tarjeta RP.

Verificación del Uso de Memoria en IOS-XE

Ingrese el comando show platform software status control-processor brief para monitorear el uso de memoria en el RP, ESP y el SIP. El estado del sistema debe ser idéntico en lo que respecta a aspectos como la configuración de la función y el tráfico, mientras que se compara el uso de la memoria.

ASR1K# show platform software status control-processor brief

<snip>

Memory (kB)

Slot  Status   Total    Used (Pct)     Free (Pct)     Committed (Pct)

RP0   Healthy  3907744  1835628 (47%)  2072116 (53%)  2614788 (67%)

ESP0  Healthy  2042668  789764 (39%)   1252904 (61%)  3108376 (152%)

SIP0  Healthy  482544   341004 (71%)   141540 (29%)   367956 (76%)

SIP1  Healthy  482544   315484 (65%)   167060 (35%)   312216 (65%)

Nota: La memoria comprometida es una estimación de la cantidad de RAM que necesita para garantizar que el sistema nunca se quede sin memoria (OOM) para esta carga de trabajo. Normalmente, el núcleo supera la memoria. Por ejemplo, cuando se ejecuta un malloc de 1 GB, en realidad no sucede nada. Sólo recibe una memoria real a demanda cuando comienza a utilizar esa memoria asignada y sólo tanto como utilice.

Cada procesador enumerado en la salida anterior podría informar del estado como Sano, Advertencia o Crítico, que depende de la cantidad de memoria libre. Si alguno de los procesadores muestra el estado como Advertencia o Crítico, ingrese el comando monitor platform software process<slot> para identificar al colaborador principal.

ASR1K# monitor platform software process ?

0   SPA-Inter-Processor slot 0

1   SPA-Inter-Processor slot 1

F0  Embedded-Service-Processor slot 0

F1  Embedded-Service-Processor slot 1

FP  Embedded-Service-Processor

R0  Route-Processor slot 0

R1  Route-Processor slot 1

RP  Route-Processor

<cr>

Puede que se le pida que configure el terminal-type antes de ejecutar el comando monitor platform software process:

ASR1K# monitor platform software process r0

Terminal type 'network' unsupported for command

Change the terminal type with the 'terminal terminal-type' command.

El tipo de terminal se establece en red de forma predeterminada. Para configurar el tipo de terminal apropiado, ingrese el comando terminal-type:

ASR1K#terminal-type vt100

Una vez configurado el tipo de terminal correcto, puede ingresar el comando monitor platform software process (se omitió alguna salida):

ASR1000# monitor platform software process r0

top - 00:34:59 up  5:02,  0 users,  load average: 2.43, 1.52, 0.73

Tasks: 136 total,   4 running, 132 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.8%us,  2.3%sy,  0.0%ni, 96.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   2009852k total,  1811024k used,   198828k free,   135976k buffers

Swap:        0k total,        0k used,        0k free,  1133544k cached

PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

25956 root      20   0  928m 441m 152m R  1.2 22.5   4:21.32 linux_iosd-imag

29074 root      20   0  106m  95m 6388 S  0.0  4.9   0:14.86 smand

24027 root      20   0  114m  61m  55m S  0.0  3.1   0:05.07 fman_rp

25227 root      20   0 27096  13m  12m S  0.0  0.7   0:04.35 imand

23174 root      20   0 33760  11m 9152 S  1.0  0.6   1:58.00 cmand

23489 root      20   0 23988 7372 4952 S  0.2  0.4   0:05.28 emd

24755 root      20   0 19708 6820 4472 S  1.0  0.3   3:39.33 hman

28475 root      20   0 20460 6448 4792 S  0.0  0.3   0:00.26 psd

27957 root      20   0 16688 5668 3300 S  0.0  0.3   0:00.18 plogd

14572 root      20   0  4576 2932 1308 S  0.0  0.1   0:02.37 reflector.sh

<snip>

Nota: Para ordenar el resultado en orden descendente de uso de la memoria, presione Shift + M.

Verificación del Uso de Memoria en IOSd

Si observa que el proceso linux_iosd-imag contiene una cantidad inusualmente grande de memoria en el resultado del comando monitor platform software process rp active, centre sus esfuerzos de resolución de problemas en la instancia de IOSd. Es probable que un proceso específico en el subproceso IOSd no libere la memoria. Solucione los problemas relacionados con la memoria en la instancia del IOSd de la misma manera que resuelve cualquier problema de las plataformas de reenvío basadas en software, como las series 2800, 3800 o 3900 de Cisco.

ASR1K# monitor platform software process rp active

PID   USER   PR  NI VIRT  RES  SHR  S  %CPU  %MEM TIME+    COMMAND

25794 root   20  0  2929m 1.9g 155m R  99.9  38.9 1415:11  linux_iosd-imag

23038 root   20  0  33848 13m  10m  S  5.9   0.4  30:53.87 cmand

9599  root   20  0  2648  1152 884  R  2.0   0.0  0:00.01  top

<snip>

Ingrese el comando show process memory sort para identificar el proceso del problema:

ASR1000# show process memory sorted

Processor Pool Total: 1733568032  Used: 1261854564  Free: 471713468

lsmpi_io  Pool Total: 6295088     Used: 6294116     Free: 972

PID  TTY  Allocated   Freed       Holding    Getbufs    Retbufs  Process

522  0    1587708188  803356800   724777608  54432      0        BGP Router

234  0    3834576340  2644349464  232401568  286163388  15876    IP RIB Update

0    0    263244344   36307492    215384208  0          0        *Init

Nota: Abra un caso del TAC si necesita ayuda para resolver problemas o identificar si el uso de la memoria es legítimo.

Verifique el uso de TCAM en un ASR1K

La clasificación del tráfico es una de las funciones más básicas que se encuentran en routers y switches. Muchas aplicaciones y funciones requieren que los dispositivos de infraestructura ofrezcan estos servicios diferenciados para diferentes usuarios en función de los requisitos de calidad. El proceso de clasificación del tráfico debe ser rápido, de modo que el rendimiento del dispositivo no se degrade en gran medida. La plataforma ASR1K utiliza la 4ª generación de Memoria direccionable de contenido ternario (TCAM4) para este fin.

Para determinar el número total de celdas TCAM disponibles en la plataforma y el número de entradas libres que permanecen, ingrese este comando:

ASR1000# show platform hardware qfp active tcam resource-manager usage

Total TCAM Cell Usage Information

----------------------------------

Name                         : TCAM #0 on CPP #0

Total number of regions      : 3

Total tcam used cell entries : 65528

Total tcam free cell entries : 30422

Threshold status             : below critical limit

Nota: Cisco recomienda que compruebe siempre el estado del umbral antes de realizar cambios en las políticas de listas de acceso o calidad de servicio (QoS), de modo que TCAM tenga suficientes celdas libres disponibles para programar las entradas.

Si el procesador de reenvío se ejecuta críticamente bajo en celdas TCAM libres, ESP podría generar registros similares a los que se muestran a continuación y podría producirse un desperfecto. Si no hay redundancia, esto da como resultado una interrupción del tráfico.

%CPPTCAMRM-6-TCAM_RSRC_ERR: SIP0: cpp_sp: Allocation failed because of insufficient

TCAM resources in the system.

%CPPOSLIB-3-ERROR_NOTIFY: SIP0: cpp_sp:cpp_sp encountered an error -

Traceback=1#s7f63914d8ef12b8456826243f3b60d7 errmsg:7EFFC525C000+1175

Verificar el uso de la memoria en QFP

Además de la memoria física, también hay memoria conectada al ASIC de procesador de flujo Quantum (QFP) que se utiliza para reenviar estructuras de datos, que incluye datos como la base de información de reenvío (FIB) y políticas de QoS. La cantidad de DRAM disponible para el ASIC QFP es fija, con rangos de 256 MB, 512 MB y 1 GB, dependiendo del módulo ESP.

Ingrese el comando show platform hardware qfp active infrastructure exmem statistics para determinar el uso de la memoria exmem. La suma de la memoria para la IRAM y la DRAM que se utiliza proporciona la memoria QFP total que está en uso.

BGL.I.05-ASR1000-1# show platform hardware qfp active infra exmem statistics user

Type: Name: IRAM, CPP: 0

Allocations  Bytes-Alloc  Bytes-Total  User-Name

------------------------------------------------------

1            115200       115712       CPP_FIA

Type: Name: DRAM, CPP: 0

Allocations  Bytes-Alloc  Bytes-Total  User-Name

-----------------------------------------------------

4            1344          4096         P/I

9            270600        276480       CEF

1            1138256       1138688      QM RM

1            4194304       4194304      TCAM

1            65536         65536        Qm 16

La IRAM es la memoria de instrucciones para el software QFP. En caso de agotamiento de la DRAM, se puede utilizar la IRAM disponible. Si la IRAM se ejecuta críticamente en memoria baja, es posible que vea este mensaje de error:

%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 97 percent depleted

%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 98 percent depleted

Para determinar el proceso que consume la mayor parte de la memoria, ingrese el comando show platform hardware qfp active infra exmem statistics user:

ASR1000# show platform hardware qfp active infra exmem statistics user

Type: Name: IRAM, CPP: 0

Allocations  Bytes-Alloc  Bytes-Total  User-Name

----------------------------------------------------

1            115200       115712       CPP_FIA

Type: Name: DRAM, CPP: 0

Allocations  Bytes-Alloc  Bytes-Total  User-Name

----------------------------------------------------

4          1344         4096         P/I

9          270600       276480       CEF

1          1138256      1138688      QM RM

1          4194304      4194304      TCAM

1          65536        65536        Qm 16