Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Panoramica sul layout della memoria ASR

Allocazione di memoria nel pool lsmpi_io

Utilizzo memoria

Verifica dell'utilizzo della memoria su IOS-XE

Verifica dell'utilizzo della memoria in IOSd

Verifica dell'utilizzo di TCAM su ASR1K

Verifica dell'utilizzo della memoria in QFP

Introduzione

In questo documento viene descritto come controllare la memoria di sistema e risolvere i problemi relativi alla memoria su Cisco ASR serie 1000 Aggregation Services Router (ASR1K).

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza di base dei seguenti argomenti:

- Software Cisco IOS-XE

- ASR CLI

Nota: Per accedere alla shell Linux sul router ASR serie 1001, potrebbe essere necessaria una licenza speciale.

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- Tutte le piattaforme ASR1K

- Tutte le versioni software Cisco IOS-XE che supportano la piattaforma ASR1K

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Panoramica sul layout della memoria ASR

Con la maggior parte delle piattaforme di router basate su software, la maggior parte dei processi software interni viene eseguita nella memoria Cisco IOS®. La piattaforma ASR1K introduce un'architettura software distribuita che sposta molte responsabilità del sistema operativo fuori dal processo IOS. Il sistema operativo IOS di questa architettura, che in precedenza era responsabile di quasi tutte le operazioni interne, ora funziona come uno dei molti processi Linux. Ciò consente ad altri processi Linux di condividere la responsabilità per il funzionamento del router.

ASR1K esegue IOS-XE, non il tradizionale IOS. In IOS-XE, un componente Linux esegue il kernel, mentre IOS viene eseguito come un daemon, di seguito denominato IOSd (IOS-Daemon). In questo modo, è necessario che la memoria sia divisa tra il kernel Linux e l'istanza IOSd.

La memoria divisa tra IOSd e il resto del sistema è fissa all'avvio e non può essere modificata. Per un sistema da 4 GB, a IOSd sono assegnati circa 2 GB e per un sistema da 8 GB, a IOSd sono assegnati circa 4 GB (con ridondanza software disabilitata).

Poiché ASR1K ha un'architettura a 64 bit, qualsiasi puntatore presente in ogni struttura di dati del sistema consuma il doppio della quantità di memoria rispetto alle tradizionali piattaforme a CPU singola (8 byte invece di 4 byte). L'indirizzamento a 64 bit consente a IOS di superare la limitazione della memoria indirizzabile a 2 GB di IOS, che consente la scalabilità a milioni di percorsi.

Nota: Prima di attivare le nuove funzionalità, assicurarsi di disporre di memoria sufficiente. Cisco consiglia di avere almeno 8 GB di DRAM se si riceve l'intera tabella di routing Border Gateway Protocol (BGP) quando la ridondanza del software è abilitata per evitare l'esaurimento della memoria.

Allocazione di memoria nel pool lsmpi_io

Il pool di memoria LSMPI (Linux Shared Memory Punt Interface) viene usato per trasferire i pacchetti dal processore di inoltro al processore di routing. Questo pool di memoria viene suddiviso al momento dell'inizializzazione del router in buffer preallocati, a differenza del pool di processori, in cui IOS-XE alloca dinamicamente i blocchi di memoria. Sulla piattaforma ASR1K, il pool lsmpi_io ha poca memoria libera â generalmente meno di 1000 byte â il che è normale. Cisco consiglia di disabilitare il monitoraggio del pool LSMPI da parte delle applicazioni di gestione della rete per evitare falsi allarmi.

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

In caso di problemi nel percorso LSMPI, il contatore Device xmit fail aumenta in questo output del comando (alcuni output sono stati omessi):

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>

Utilizzo memoria

L'ASR1K comprende questi elementi funzionali nel suo sistema:

- ASR serie 1000 Route Processor (RP)

- ASR serie 1000 Embedded Services Processor (ESP)

- ASR serie 1000 SPA Interface Processor (SIP)

Di conseguenza, è necessario monitorare l'utilizzo della memoria da parte di ciascuno di questi processori in un ambiente di produzione.

I processori di controllo eseguono il software Cisco IOS-XE costituito da un kernel basato su Linux e da un set comune di programmi di utilità a livello di sistema operativo, tra cui Cisco IOS eseguito come processo utente sulla scheda RP.

Verifica dell'utilizzo della memoria su IOS-XE

Immettere il comando show platform software status control-processor brief per monitorare l'utilizzo della memoria sull'RP, sull'ESP e sul SIP. Lo stato del sistema deve essere identico, per quanto riguarda aspetti quali la configurazione delle funzionalità e il traffico, mentre si confronta l'utilizzo della 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 impegnata è una stima della quantità di RAM necessaria per garantire che il sistema non sia mai fuori memoria (OOM) per questo carico di lavoro. Normalmente il kernel esegue un overcommit della memoria. Ad esempio, quando si esegue un malloc da 1 GB, in realtà non accade nulla. La memoria reale su richiesta è disponibile solo quando si inizia a utilizzare la memoria allocata e solo per la quantità utilizzata.

Ogni processore elencato nell'output precedente potrebbe indicare lo stato Integro, avvertenza o critico, a seconda della quantità di memoria disponibile. Se uno dei processori visualizza lo stato Warning (Avviso) o Critical (Critico), immettere il comando monitor platform software process<slot>per identificare il principale collaboratore.

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>

È possibile che venga richiesto di impostare il tipo di terminale prima di poter eseguire il 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.

Per impostazione predefinita, il tipo di terminale è rete. Per impostare il tipo di terminale appropriato, immettere il comando terminal-type:

ASR1K#terminal-type vt100

Una volta configurato il tipo di terminale corretto, è possibile immettere il comando monitor platform software process (alcuni output sono stati omessi):

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: Per ordinare l'output in ordine decrescente di utilizzo della memoria, premere Maiusc + M.

Verifica dell'utilizzo della memoria in IOSd

Se si nota che il processo linux_iosd-image contiene una quantità di memoria insolitamente elevata nell'output del comando rp active del processo software della piattaforma di monitoraggio, concentrare gli sforzi di risoluzione dei problemi sull'istanza IOSd. È probabile che un processo specifico nel thread IOSd non liberi la memoria. La risoluzione dei problemi relativi alla memoria nell'istanza di IOSd è simile alla risoluzione dei problemi di qualsiasi piattaforma di inoltro basata su software, ad esempio Cisco serie 2800, 3800 o 3900.

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>

Per identificare il processo con il problema, immettere il comando show process memory sort:

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: Aprire una richiesta TAC se si desidera assistenza per risolvere i problemi o stabilire se l'utilizzo della memoria è legittimo.

Verifica dell'utilizzo di TCAM su ASR1K

La classificazione del traffico è una delle funzioni più base disponibili nei router e negli switch. Molte applicazioni e funzionalità richiedono che i dispositivi dell'infrastruttura forniscano questi servizi differenziati per utenti diversi in base ai requisiti di qualità. Il processo di classificazione del traffico deve essere rapido, in modo che la velocità effettiva del dispositivo non risulti notevolmente ridotta. A questo scopo, la piattaforma ASR1K utilizza la 4a generazione di TCAM4 (Ternary Content Addressable Memory).

Per determinare il numero totale di celle TCAM disponibili sulla piattaforma e il numero di voci libere rimaste, immettere questo 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 consiglia di controllare sempre lo stato della soglia prima di apportare modifiche agli elenchi degli accessi o alle policy QoS (Quality of Service), in modo che il TCAM disponga di un numero sufficiente di celle libere per programmare le voci.

Se il processore di inoltro esegue un numero di celle TCAM libere insufficiente, l'ESP potrebbe generare log simili a quelli mostrati di seguito e potrebbe bloccarsi. In assenza di ridondanza, il traffico viene interrotto.

%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

Verifica dell'utilizzo della memoria in QFP

Oltre alla memoria fisica, esiste anche una memoria collegata all'ASIC QFP (Quantum Flow Processor) utilizzata per inoltrare le strutture di dati, che include dati come la base FIB (Forwarding Information Base) e le policy QoS. La quantità di DRAM disponibile per QFP ASIC è fissa, con intervalli di 256 MB, 512 MB e 1 GB, a seconda del modulo ESP.

Immettere il comando show platform hardware qfp active infrastructure exmem statistics per determinare l'utilizzo della memoria exmem. La somma della memoria per IRAM e DRAM utilizzata fornisce la memoria QFP totale in 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 è la memoria di istruzioni per il software QFP. In caso di esaurimento della DRAM, è possibile utilizzare la IRAM disponibile. Se la memoria IRAM è quasi esaurita, è possibile che venga visualizzato questo messaggio di errore:

%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

Per determinare il processo che utilizza la maggior parte della memoria, immettere il 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