Introduzione
Questo documento descrive i suggerimenti generali per la risoluzione dei problemi relativi alla raccolta di informazioni aggiuntive per un problema di perdita di memoria.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza di base dei seguenti argomenti:
- Conoscenze base di Cisco IOS® XE
- Conoscenze base di Embedded Event Manager (EEM)
Componenti usati
Il documento può essere consultato per tutte le versioni software o hardware. Si applica a tutte le piattaforme di routing Cisco IOS XE come ASR1000, ISR4000, ISR1000, Cat8000 o Cat8000v.
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.
Premesse
In questo documento sono riportati i log comuni generati dal dispositivo in caso di utilizzo elevato della memoria.
È inoltre possibile verificare i vantaggi offerti dalla funzionalità Embedded Event Manager per consentire a TAC di monitorare e ottenere dati in situazioni in cui il router IOS XE sta spesso esaurendo la memoria.
Lo scopo di questo documento non è quello di spiegare in modo esaustivo le procedure di risoluzione dei problemi, se disponibili, ma solo i riferimenti a guide più dettagliate per la risoluzione dei problemi.
Sintomi dei router IOS XE che stanno per esaurire la memoria
Quando si verificano problemi di utilizzo elevato della memoria, in genere viene visualizzato un messaggio di registro che indica che è stato raggiunto il limite di avviso dell'85%. Questo valore varia a seconda della versione. Vengono generati log diversi a seconda della posizione in cui il sistema ha rilevato il problema:
Problemi TCAM:
CPP_FM-3-CPP_FM_TCAM_WARNING
IOSd (Piano di controllo):
SYS-2-MALLOCFAIL
SYS-2-CHUNKEXPANDFAIL
SYS-4 CHUNKSIBLINGSEXCEED
QFP (Piano dati):
QFPOOR-4-LOWRSRC_PERCENT_WARN
QFPOOR-4-SUP_EXMEM_UTENTE
CPPEXMEM-3-NOMEM
CPPEXMEM-3-TOPUSER
TMPFS (Temporal File System):
PLATFORM-3- ELEMENT_TMPFS_WARNING
Registro di sistema generale (isolamento necessario):
PLATFORM-4-ELEMENT_WARNING
PLATFORM-3-ELEMENT_CRITICAL
Nota: I miglioramenti ai registri sono disponibili a partire dalla versione 16.12 e successive.
Informazioni TAC Richieste per il triage iniziale
show clock
show version
mostra risorse della piattaforma
show platform software status control-processor brief
mostra memoria del processo ordinata
mostra statistiche della memoria
mostra totali processo di allocazione memoria
mostra piattaforma memoria processo ordinata
show logging (visualizza registri)
- In caso di un ricaricamento imprevisto dovuto a una condizione di memoria insufficiente:
report di file/sistema di base
- Grafico dell'utilizzo della memoria nel tempo.
Associare una show tech è utile per TAC, ma anche per l'automazione sviluppata da TAC, che consente di individuare più rapidamente i problemi.
Le condizioni che determinano un utilizzo elevato della memoria sono sempre correlate al software. Non tutte le istanze di utilizzo elevato della memoria sono tuttavia impreviste. È importante considerare la DRAM disponibile e la combinazione di funzionalità in esecuzione sul dispositivo.
La risoluzione dei problemi di utilizzo elevato della memoria è più agevole, efficace e con una migliore interazione TAC se si utilizza Radkit. Questo strumento, sviluppato da Cisco, offre a TAC un modo estremamente sicuro e facile per accedere ai dispositivi selezionati nella rete. Per ulteriori informazioni, visitare il sito: Cisco RADKit
Nota: Assicurarsi di eseguire una versione supportata. Cercare il documento di fine del ciclo di vita utile e di vendita per il rilascio. Se necessario, passare a una versione attualmente in Release di manutenzione software. In caso contrario, TAC può essere limitato alle opzioni di risoluzione dei problemi.
Per un documento completo sulla risoluzione dei problemi relativi alla memoria, consultare le seguenti guide:
Su ISR4K: guida alla risoluzione dei problemi di memoria per Cisco serie 4000 ISR.
Su ASR1K: ASR serie 1000 Router Memory Troubleshoot Guide (Guida alla risoluzione dei problemi di memoria del router ASR serie 1000).
Informazioni sull'utilizzo elevato della memoria
Nei router Cisco IOS XE, la DRAM è una delle risorse più importanti in grado di supportare le funzionalità principali. La DRAM viene utilizzata per memorizzare diversi tipi di dati e processi/caratteristiche di informazioni essenziali sia per le operazioni dei control plane che dei data plane.
Le principali applicazioni della DRAM nei router IOS XE includono:
Memoria IOSd (Control Plane Structures): Memorizza le informazioni correlate ai processi relative al control plane del dispositivo, ad esempio: informazioni/protocolli di routing, strutture di gestione della rete, configurazioni di sistema e informazioni sulle funzionalità.
Memoria QFP (Data Plane Structures): Archivia tutto ciò che riguarda le operazioni QFP gestite dal microcodice, ad esempio le strutture chiave delle funzionalità archiviate in QFP, le istruzioni di microcodice e le istruzioni di inoltro.
File system temporaneo (TMPFS): Montato nella DRAM e gestito da IOSd, TMPFS funge da area di storage ad accesso rapido per i file necessari ai processi. Se i file sono persistenti, vengono spostati su un disco rigido/bootflash. Migliora le prestazioni del sistema riducendo i tempi di lettura/scrittura per i dati temporanei.
Processi generali in esecuzione sul kernel Linux: Poiché IOS XE opera su un kernel basato su Linux, DRAM supporta anche vari processi di sistema che vengono eseguiti su tale kernel.
Un elevato utilizzo della memoria superiore all'85% indica in genere un consumo significativo di DRAM, che può influire sulle prestazioni del router. Questo utilizzo elevato può essere il risultato di richieste legittime, ad esempio l'archiviazione di tabelle di routing estese o l'attivazione di funzionalità che richiedono un uso intensivo delle risorse. Tuttavia, può anche segnalare problemi come una gestione inefficiente della memoria da parte di alcune funzioni o perdite di memoria, in cui la memoria non viene rilasciata correttamente al sistema dopo l'uso.
Monitorando l'utilizzo della memoria su IOSd, QFP, TMPFS e i processi Linux generali, l'utente e TAC possono identificare tempestivamente potenziali problemi.
EEM per monitorare l'utilizzo della memoria
Per la risoluzione dei problemi relativi alla memoria, TAC deve raccogliere una serie di comandi per un determinato periodo di tempo al fine di identificare il processo che causa il problema. A volte, dopo l'identificazione del processo responsabile, sono necessari ulteriori comandi specifici, rendendo la risoluzione dei problemi di memoria uno dei tipi di risoluzione dei problemi più dispendiosi in termini di tempo.
Per semplificare la risoluzione dei problemi, è possibile utilizzare la funzionalità EEM per monitorare e raccogliere automaticamente le informazioni. Esistono due considerazioni principali per la scrittura dello script EEM: trigger e comandi da raccogliere.
Trigger
Motivo. È possibile utilizzare lo schema della sezione Sintomi dei router Cisco IOS XE con memoria insufficiente. Il formato è simile al seguente:
event syslog pattern <pattern> ratelimit 300 maxrun 180
Una delle considerazioni da tenere in considerazione quando si utilizza un modello come trigger è che il registro viene generato una volta raggiunta la soglia di avviso, a seconda della frequenza di utilizzo della memoria, se si tenta di eseguire questa operazione manualmente, il tempo disponibile per una risoluzione dei problemi più dettagliata non è sufficiente.
Timer cron. Esempio di timer cron da attivare ogni 30 minuti:
nome cron timer evento HalfHour voce cron "*\30 * * * *"
Uno dei vantaggi di un timer cron rispetto a un modello è che non è necessario attendere che il dispositivo quasi esaurisca le risorse di memoria per raccogliere informazioni. A seconda del tasso di consumo della memoria, con un monitoraggio e informazioni adeguati, TAC può identificare il processo offeso prima di raggiungere la soglia di avviso.
Nota: Le opzioni Ratelimit e maxrun vengono utilizzate per garantire la raccolta dell'intero insieme di output. Consentono inoltre di evitare ulteriori disturbi o l'attivazione di EEM in situazioni in cui vengono visualizzati più registri in un breve periodo di tempo.
Esempi EEM con comandi generali per la selezione iniziale:
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"
Monitoraggio giornaliero con un timer 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"
Per un elenco più completo dei comandi, fare riferimento alle guide della sezione per informazioni sulle esigenze TAC per la valutazione iniziale.
File di base
Quando l'utilizzo della memoria raggiunge un livello critico, è possibile che il sistema operativo forza un arresto anomalo per riprendersi da questa condizione, generando un report di sistema che contiene un file core.
Il file principale è il dump completo della memoria per un particolare processo che si è arrestato in un determinato momento. Questo file di base è fondamentale per consentire a TAC di ispezionare la memoria e analizzare il codice sorgente per comprendere le condizioni e le potenziali cause di ricaricamento/arresto anomalo del processo.
Il file principale consente a TAC e agli sviluppatori di individuare la causa principale del problema, di eseguirne il debug e di risolverlo.
Nota: Anche se TAC e gli sviluppatori si sforzano di ottenere una causa principale, ci sono volte in cui l'incidente è stato una conseguenza di un evento di rete, o un problema di tempistica che rende virtualmente impossibile riprodurlo in laboratorio.
Per ulteriori informazioni su ricaricamenti imprevisti e su come recuperare un file core, consultare il documento sulla risoluzione dei problemi di ricaricamenti imprevisti sulle piattaforme Cisco IOS® con TAC.