Introduzione
Questo documento descrive una perdita di memoria nel contesto di un Cisco Catalyst 9800 Wireless LAN Controller (WLC).
Perdita di memoria
Quando un programma o un processo alloca memoria per un uso temporaneo e non la dealloca correttamente quando non è più necessaria, tale memoria rimane "in uso" dal punto di vista del sistema operativo. Poiché il processo continua a funzionare e più volte non riesce a deallocare memoria, la quantità totale di memoria utilizzata dal processo aumenta e per altri processi e funzioni di sistema è disponibile una quantità inferiore di memoria. Le perdite di memoria sono in genere causate da bug del software o da problemi nel firmware del sistema o nelle applicazioni in esecuzione su di esso.
Nel caso di un Cisco Catalyst 9800 WLC, una perdita di memoria può verificarsi come segue:
- Prestazioni ridotte: con l'aumentare della memoria insufficiente, il WLC potrebbe rallentare, rallentando i tempi di risposta per le funzioni di gestione o diminuendo le prestazioni dei dispositivi client connessi alla rete.
- Instabilità del sistema: i processi critici possono iniziare a fallire, causando probabilmente l'interruzione delle connessioni client, l'impossibilità di gestire il WLC o altri comportamenti errati.
- Arresti anomali del sistema: nei casi più gravi, il WLC può bloccarsi e riavviarsi, specialmente se la memoria si esaurisce per le operazioni essenziali.
Nota: 9800 WLC può sperimentare un riavvio/arresto anomalo per recuperare la memoria perduta e recuperare se stesso. Poiché la perdita di memoria è un comportamento di bug, le perdite si verificano anche dopo il riavvio, a meno che la configurazione che causa la perdita non sia disabilitata.
Syslog
%PLATFORM-4-ELEMENT_WARNING:R0/0: smand: RP/0 Il valore della memoria utilizzata del 91% supera il livello di avviso dell'88%
Questo messaggio stampa il nome dei primi tre processi che utilizzano molta memoria insieme alle chiamate trackey, callsite ID e diff:
%PLATFORM-4-ELEMENT_WARNING: Chassis 1 R0/0: smand: 1/RP/0: Il valore di memoria utilizzata del 91% supera il livello di avviso dell'88%. I primi allocatori di memoria sono: Processo: sessmgrd_rp_0. Tracekey: 1#258b8858a63c7998252e96352473c9c6 Callsite ID: 11B8F825A8768000 (diff_call: 20941). Processo: fman_fp_image_fp_0. Tracekey: 1#36b34d8e636a89f6397a3b12acab9706 ID callsite: 1944E78DF68EC002 (diff_call: 19887). Processo: linux_iosd-image_rp_0. Tracekey: 1#8ec74901dc8e23a44e060e69d5820ece ID callsite: E2AA338E11594003 (diff_call: 13404).
Come identificare 9800 WLC hanno riscontrato un problema di perdita di memoria
È importante risolvere tempestivamente le perdite di memoria in quanto possono compromettere la stabilità e l'affidabilità dei servizi di rete forniti dal WLC. Per diagnosticare una perdita di memoria su un WLC, è possibile usare vari comandi della CLI per monitorare l'utilizzo della memoria nel tempo. Possono cercare processi che utilizzano una quantità crescente di memoria senza rilasciarla oppure modelli che indicano che la memoria non viene recuperata come previsto.
Verificare la quantità di memoria completamente allocata alla piattaforma.
9800WLC#show version | in memory
cisco C9800-L-F-K9 (KATAR) processor (revision KATAR) with 1634914K/6147K bytes of memory.
32768K bytes of non-volatile configuration memory.
16777216K bytes of physical memory.
!! Determines Total platform memory available, Here it is 16GB
Controllare la quantità di memoria allocata a ogni pool.
9800WLC#show processes memory
Processor Pool Total: 1674013452 Used: 823578520 Free: 850434932
reserve P Pool Total: 102404 Used: 88 Free: 102316
lsmpi_io Pool Total: 6295128 Used: 6294296 Free: 832
Controllare l'utilizzo delle risorse, incluso l'utilizzo della memoria. Se supera i livelli Warning (Avvertenza) o Critical (Critica), può indicare una potenziale perdita di memoria.
Utilizzo della memoria su 9800 WLC
Monitoraggio dell'utilizzo complessivo della memoria per le risorse del control plane
9800WLC#show platform software status control-processor brief
Slot Status 1-Min 5-Min 15-Min
1-RP0 Healthy 0.52 0.75 0.80
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
1-RP0 Healthy 16327028 4898110(30%) 114218918 (70%) 5387920 (33%)
Monitorare le dimensioni della memoria allocata e utilizzata per i primi processi. Se l'utilizzo della memoria continua ad aumentare mentre la memoria libera rimane fissa o è troppo bassa, vi sono elevate probabilità di una perdita di memoria a livello di IOSd.
Statistiche della memoria per processo a partire dal processo di memorizzazione più elevato
Per problemi di perdita di memoria a livello di piattaforma, monitorare i contatori RSS (Resident Set Size). RSS indica la quantità di memoria allocata a un processo durante l'esecuzione. Se questo valore aumenta rapidamente, è possibile che si verifichi una perdita di memoria.
La piattaforma elabora l'utilizzo della memoria dal processo di attesa più elevato
Risoluzione dei problemi di perdita di memoria nel processo IOS
In IOS XE, IOS opera come un processo (daemon) in esecuzione sul kernel Linux, noto come IOSd. In genere, IOSd è assegnato tra il 35% e il 50% della DRAM totale disponibile per piattaforma.
Log di base da WLC
Abilitare l'opzione Timestamp per avere un riferimento temporale per tutti i comandi.
9800WLC#term exec prompt timestamp
Per esaminare le informazioni relative alla configurazione e alla memoria:
9800WLC#show tech-support wireless
9800WLC#show tech-support memory
Raccogli file di dump di base o report di sistema se generato
Tramite GUI
Passa a Troubleshooting > Core Dumps and System Report
Report sul dump e sul sistema di base
Tramite CLI
9800WLC#show bootflash: | in core/system-report
9800WLC#copy bootflash:system-report/Core_file {tftp: | ftp: | https: ..}
Per il pool di memoria del processore
Verifica la memoria per processo a partire dal processo di blocco più alto.
9800WLC#show process memory sorted
Controllare lo stato totale della memoria per il pool in questione. Mostra inoltre il blocco libero più grande e la memoria disponibile più bassa dall'avvio.
9800WLC#show memory Statistics
Controllare il contatore del programma (PC) che ha allocato una grande quantità di memoria.
9800WLC#show memory allocation-process totals
Controllare blocchi e blocchi persi.
9800WLC#show memory debug leak chunks
!!This is CPU intensive cli and use only if above CLI output is not helping.
Per pool di memoria IO
Controllare i primi allocatori.
9800WLC#show memory io allocating-process totals
Se l'allocatore principale è 'Packet Data or Pool Manager', verificare quale caller_pc ha richiesto un numero elevato di buffer
9800WLC#show buffers
9800WLC#show buffers usage
Se l'allocatore superiore è 'mananged_chunk_process()' o 'Chunk Manager' elabora, significa che uno o più blocchi stanno allocando una grande quantità di memoria.
9800WLC#show chunk summary
9800WLC#show chunk brief
Se il processo MallocLite è l'allocatore principale
9800WLC#show memory lite-chunks totals
9800WLC#show memory lite-chunks stats
Risoluzione dei problemi di perdita di memoria a livello di piattaforma Polaris
Verificare l'utilizzo di memoria % per le risorse di memoria disponibili sulla piattaforma.
9800WLC#show Platform resources
Controllare lo snapshot complessivo della memoria di sistema.
9800WLC#show platform software process slot chassis active R0 Monitor | in Mem
Controllare tutti i processi della piattaforma ordinati in base alla memoria.
9800WLC#show process memory platform sorted
9800WLC#show platform software process memory chassid active r0 all sorted
Controlla lo stato dell'ultima ora dei siti chiamate.
9800WLC#show process memory platform accounting
Selezionare il contendente principale dai due output CLI precedenti e abilitare i debug per i singoli processi.
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite stop
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite clear
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace start <CALL_SITE> depth 10
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite start
!! Running these debugs has no impact to device
Raccogliere l'output pochi minuti (da 15 minuti a un'ora) dopo l'avvio dei debug.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace
!! Capture this output three times, with a 5-10 minutes interval between each capture, to identify the pattern.
Verificare la presenza di call_diff, alloca e libera il valore con la rispettiva backtrace per ogni processo.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite brief
Nota: call_diff = allocs - frees
Se allocs = frees, nessuna perdita di memoria
Se liberazioni = 0, la perdita di memoria
Se allocs != libera, è possibile che si verifichi o meno una perdita di memoria (se call_diff è maggiore, è possibile che si verifichino perdite di memoria)
Acquisire i dati della memoria del database per il singolo processo.
9800WLC#show platform software memory <process> chassis <1-2/active/standby>active R0 alloc type data brief
9800WLC#show platform software memory database <process> chassis <1-2/active/standby> chassis active R0 brief
Controllare le informazioni sul montaggio del sistema per verificare l'utilizzo della memoria per il file system virtuale creato temporaneamente.
9800WLC#show platform software mount
Suggerimento
Per i consigli sulla memoria e i limiti di scalabilità, consultare le guide alla configurazione, i data sheet e le note di rilascio pertinenti e verificare che il WLC sia aggiornato alla versione più recente consigliata.