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).
Cisco raccomanda la conoscenza di base dei seguenti argomenti:
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
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.
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.
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>
L'ASR1K comprende questi elementi funzionali nel suo sistema:
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.
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%)
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>
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
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
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
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
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
19-Nov-2013 |
Versione iniziale |