Introdução
Este documento descreve um vazamento de memória no contexto de um Cisco Catalyst 9800 Wireless LAN Controller (WLC).
Vazamento de memória
Quando um programa ou processo aloca memória para uso temporário e não a desaloca corretamente quando não é mais necessária, essa memória permanece "em uso" da perspectiva do sistema operacional. À medida que o processo continua a operar e falha repetidamente em desalocar memória, a quantidade total de memória usada pelo processo aumenta e menos memória fica disponível para outros processos e funções do sistema. Vazamentos de memória são geralmente causados por bugs de software ou por problemas no firmware do sistema ou nos aplicativos em execução nele.
No caso de um Cisco Catalyst 9800 WLC, um vazamento de memória pode se manifestar da seguinte maneira:
- Desempenho reduzido: à medida que a memória se torna cada vez mais escassa, o WLC possivelmente fica mais lento, resultando em tempos de resposta mais lentos para as funções de gerenciamento ou redução do desempenho dos dispositivos cliente conectados à rede.
- Instabilidade do sistema: processos críticos podem começar a falhar, possivelmente levando a conexões de clientes perdidas, incapacidade de gerenciar o WLC ou outros comportamentos erráticos.
- Travamentos do sistema: em casos graves, o WLC pode travar e reiniciar, especialmente se ficar sem memória para operações essenciais.
Observação: a WLC 9800 pode passar por uma reinicialização/travamento repentino para recuperar a memória vazada e se recuperar. Como o vazamento de memória é um comportamento com bugs, os vazamentos ocorrem mesmo após a reinicialização, a menos que o vazamento que causa a configuração/o recurso seja desativado.
Syslog
%PLATFORM-4-ELEMENT_WARNING:R0/0: smand: RP/0 Valor de Memória Usada 91% excede o nível de aviso 88%
Esta mensagem imprime o nome dos 3 principais processos que consomem memória junto com as chamadas traceky, callsite ID e diff:
%PLATFORM-4-ELEMENT_WARNING: Chassi 1 R0/0: smand: 1/RP/0: O valor de memória usada 91% excede o nível de aviso 88%. Os principais alocadores de memória são: Processo: sessmgrd_rp_0. Tracekey: 1#258b8858a63c7998252e96352473c9c6 ID do local de chamada: 11B8F825A8768000 (diff_call: 20941). Processo: fman_fp_image_fp_0. Tracekey: 1#36b34d8e636a89f6397a3b12acab9706 ID do local de chamada: 1944E78DF68EC002 (diff_call: 19887). Processo: linux_iosd-image_rp_0. Tracekey: 1#8ec74901dc8e23a44e060e69d5820ece ID do local de chamada: E2AA338E11594003 (diff_call: 13404).
Como identificar se a WLC 9800 teve problemas de vazamento de memória
É importante lidar com os vazamentos de memória imediatamente, pois eles podem comprometer a estabilidade e a confiabilidade dos serviços de rede fornecidos pela WLC. Para diagnosticar um vazamento de memória em uma WLC, você pode usar vários comandos na CLI para monitorar o uso de memória ao longo do tempo. Eles podem procurar processos que estejam usando uma quantidade cada vez maior de memória sem liberá-la ou padrões que indiquem que a memória não está sendo recuperada como esperado.
Verifique quanta memória está totalmente alocada para a plataforma.
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
Verifique quanta memória está alocada para cada 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
Verifique a utilização de recursos, incluindo o uso de memória. Se ele exceder os níveis de Aviso ou Crítico, poderá indicar um possível vazamento de memória.
Utilização de memória no 9800 WLC
Monitorar o uso geral de memória para recursos do plano de controle
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%)
Monitore o tamanho da memória alocada e usada para os principais processos. Se o uso de memória continuar a aumentar enquanto a memória livre permanecer fixa ou for muito baixa, há uma grande chance de um vazamento de memória no nível do IOSd.
Estatísticas de memória por processo iniciando do processo de retenção mais alto
Para problemas de vazamento de memória no nível da plataforma, monitore os contadores RSS (Resident Set Size, Tamanho do conjunto residente). RSS indica a quantidade de memória alocada para um processo durante a execução. Se esse valor aumentar rapidamente, pode significar um possível vazamento de memória.
A plataforma processa o uso da memória a partir do processo de retenção mais alto
Troubleshooting de Vazamento de Memória no Processo do IOS
No IOS XE, o IOS opera como um processo (daemon) sendo executado sobre o kernel do Linux, conhecido como IOSd. Normalmente, o IOSd é alocado entre 35% a 50% do total de DRAM da plataforma disponível.
Logs básicos do WLC
Habilite timestamp para ter referência de tempo para todos os comandos.
9800WLC#term exec prompt timestamp
Para revisar as informações relacionadas à configuração e à memória:
9800WLC#show tech-support wireless
9800WLC#show tech-support memory
Coletar arquivo de despejo principal ou relatório do sistema, se gerado
Via GUI
Navegue até Troubleshooting > Core Dumps and System Report
Relatório de despejo central e do sistema
Via CLI
9800WLC#show bootflash: | in core/system-report
9800WLC#copy bootflash:system-report/Core_file {tftp: | ftp: | https: ..}
Para Pool de Memória do Processador
Verificar a memória por processo a partir do processo de retenção mais alto.
9800WLC#show process memory sorted
Verifique o total de estatísticas de memória para o pool em questão. Ele também mostra o maior bloco livre e a menor memória disponível desde a inicialização.
9800WLC#show memory Statistics
Verifique o contador do programa (PC) que alocou uma grande quantidade de memória.
9800WLC#show memory allocation-process totals
Verificar blocos e partes vazados.
9800WLC#show memory debug leak chunks
!!This is CPU intensive cli and use only if above CLI output is not helping.
Para Pool de Memória de E/S
Verifique os principais alocadores.
9800WLC#show memory io allocating-process totals
Se o alocador superior for 'Packet Data or Pool Manager' , verifique qual caller_pc solicitou um grande número de buffers
9800WLC#show buffers
9800WLC#show buffers usage
Se o alocador superior for 'mananged_chunk_process()' ou estiver 'Chunk Manager' processando, isso significa que um ou mais blocos estão alocando uma grande quantidade de memória.
9800WLC#show chunk summary
9800WLC#show chunk brief
Se o processo MallocLite for o principal alocador
9800WLC#show memory lite-chunks totals
9800WLC#show memory lite-chunks stats
Troubleshooting de Vazamento de Memória no Nível Polaris/Plataforma
Verifique a % de uso de memória para os recursos de memória disponíveis na plataforma.
9800WLC#show Platform resources
Verifique o instantâneo geral da memória do sistema.
9800WLC#show platform software process slot chassis active R0 Monitor | in Mem
Verifique se a memória de todos os processos da plataforma está classificada.
9800WLC#show process memory platform sorted
9800WLC#show platform software process memory chassid active r0 all sorted
Verificar o último status horário dos locais de chamada.
9800WLC#show process memory platform accounting
Selecione o principal candidato das duas saídas CLI anteriores e ative as depurações para os processos individuais.
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
Colete a saída alguns minutos (15 minutos a uma hora) após iniciar as depurações.
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.
Verifique call_diff, aloca e libera valor com o respectivo backtrace para cada processo.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite brief
Observação: call_diff = allocs - free
Se allocs = libera, nenhuma perda de memória
Se liberado = 0, vazamento de memória
Se aloca != libera, pode ou não ser vazamento de memória (Se call_diff é mais, indica altas chances de vazamento de memória)
Capturar dados da memória do banco de dados para processo individual.
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
Verifique as informações de montagem do sistema para verificar o uso de memória do sistema de arquivos virtual criado temporariamente.
9800WLC#show platform software mount
Recomendação
Consulte os guias de configuração, as fichas técnicas e as notas de versão relevantes para obter recomendações de memória e limites de escalabilidade, e verifique se a WLC está atualizada para a versão recomendada mais recente.