Introdução
Este original descreve como pesquisar defeitos escapes de memória de MallocLite em Plataformas do ®software do Cisco IOS.
Igualmente especifica a informação que você deve recolher antes que você abra um exemplo do centro de assistência técnica da Cisco (TAC) ou recarregue o dispositivo. Recolha as saídas mencionadas neste original, e anexe-as ao caso de TAC a fim ajudar a expedir a definição de problema.
Informações de Apoio
MallocLite é usado pelo gerente da memória a fim atribuir pequeno, as partes do tamanho fixo de memória, conhecidas como pedaços, para atribuições inferior ou igual a bytes 128. As alocações de memória pequenas não têm as despesas gerais de um encabeçamento de bloco para cada atribuição. Esta característica é apoiada para associações de memória de processador somente.
Cada encabeçamento de bloco de memória toma aproximadamente 48 bytes da memória, e o bloco o menor toma aproximadamente 24 bytes. Com uma aproximação tradicional no software do Cisco IOS para cada atribuição, você consumiria pelo menos 72 (48 + 24) bytes da memória, mesmo se você precisa de atribuir somente 8 bytes de dados reais.
Com MallocLite, estas despesas gerais podem ser reduzidas pelo uso dos pedaços. Há ainda algumas despesas gerais, porque os pedaços têm que ser controlados. Contudo, desde que os pedaços são tamanho fixo, são controlados de uma forma diferente do que blocos, e as despesas gerais são menos.
É a responsabilidade dos aplicativos que usam a memória de MallocLite para a livrar corretamente. MallocLite mascara o usuário da memória.
Troubleshooting
Nota: O Cisco CLI Analyzer (somente clientes registrados) aceita alguns comandos show. Use o Cisco CLI Analyzer para visualizar uma análise da saída do comando show.
Identifique o responsável do aplicativo para o escape
É geralmente difícil identificar um erro existente se você procura somente pela palavra-chave do malloclite.
Este exemplo mostra que o processo do *MallocLite* está guardando uma quantidade de memória anormal:
#show processes memory sorted
Processor Pool Total: 1614282720 Used: 1544726580 Free: 69556140
I/O Pool Total: 313524224 Used: 115564032 Free: 197960192
PID TTY Allocated Freed Holding Getbufs Retbufs Process
0 0 0 0 1476043512 0 0 *MallocLite*
Você precisa de identificar o aplicativo exato que é responsável para o escape. Três métodos possíveis da identificação são:
- Descodifique o PC do distribuidor.
- Investigue estatísticas da memória de MallocLite.
- Desabilite MallocLite.
Descodifique o PC do distribuidor
Mesmo com MallocLite girou sobre, você pode geralmente ver o que para funcionar pediu a memória. A saída do comando show memory allocating-process totals pôde mostrar valores diferentes do PC mesmo que o nome relatado fosse MallocLite:
#show memory allocating-process totals
<snip>
Allocator PC Summary for: Processor
Displayed first 2048 Allocator PCs only
PC Total Count Name
0x620BE3C4 42807572 594 MallocLite
0x620ADDD4 13597308 193 MallocLite
0x60738BB0 8909824 122 MallocLite
0x620AE0E0 2060716 31 MallocLite
0x620AE10C 1982780 30 MallocLite
Um engenheiro de TAC da Cisco pode descodificar os valores do PC da parte superior da lista (com o total o mais alto). Isto ajuda a identificar o aplicativo que tem o escape de memória.
Investigue estatísticas da memória de MallocLite
Entre os realces adicionados no Cisco IOS Software Release 15.1T era um CLI novo que indicasse o sumário da memória de MallocLite atribuído por cada PC. O comando dos lite-pedaços da memória da mostra pode ajudá-lo a identificar os aplicativos que estão usando uma grande quantidade de blocos de MallocLite.
show memory lite-chunks { statistics | totals } { summary { pool | { all | pool } } }
Refira a referência de comandos para detalhes do comando dos lite-pedaços da memória da mostra.
CLI : show memory lite-chunks totals
DESC : Summary of all pools, based on alloc pc.
This cli can be used to find the alloc_pc which is using large amount memory
allocated from all mlite pools
CLI : show memory lite-chunks statistics
DESC : Displays number of allocated & free mlite chunks
CLI : show memory lite-chunks summary pool pool
DESC : Show summary of particular mlite pool
This cli can be used to find the alloc_pc which is using large amount of memory
in individual mlite pool
CLI : show memory lite-chunks summary pool all
DESC : Show individual summary of all mlite pools
CLI : show memory lite-chunks pool pool
DESC : Show All chunk elements in the specified pool
CLI : show memory lite-chunks pool all
DESC : show all chunk elements in all mlite pools
Exemplos da saída deste comando include:
#show memory lite-chunks ?
pool Malloc lite pool
statistics Malloc lite statistics
summary Malloc Lite summary
totals Malloc Lite Allocating totals
#show memory lite-chunks statistics
Pool Inuse Free
8-Bytes 140 1904
20-Bytes 173 1313
44-Bytes 171 791
68-Bytes 24 687
96-Bytes 26 519
128-Bytes 20 410
#show memory lite-chunks totals
PC Total Count
26067AE0 2112 33
2269E68C 1932 29
2269FACC 1664 29
2269F964 1664 26
2269FA9C 1580 29
26067FB4 1360 34
23CD2A0C 1036 7
#show memory lite-chunks pool ?
128-Bytes 128 bytes pool
20-Bytes 20 bytes pool
44-Bytes 44 bytes pool
68-Bytes 68 bytes pool
8-Bytes 8 bytes pool
96-Bytes 96 bytes pool
all all pools
#show memory lite-chunks summary pool 8
8 bytes pool
PC Total Count
2269FB10 812 29
23612084 700 25
2269F9F8 700 25
2269F9EC 700 25
Além disso, o coordenador TAC pode descodificar valores do PC com o total o mais alto e identificar o aplicativo que está escapando a memória.
Inutilização MallocLite
A característica de MallocLite é permitida à revelia. A fim investigar o escape de MallocLite, você pode desabilitar MallocLite:
(config)#no memory lite
A memória escapada ainda estará sob MallocLite até o reload seguinte; contudo, você pode começar monitorar uns escapes mais adicionais com a memória dos processos da mostra classificada e comandos show memory allocating-process totals. Os escapes aparecerão agora sob o processo real.
Se o dispositivo é executado muito baixo na memória, você deve salvar a configuração e recarregar o dispositivo a fim liberar a memória:
#wr
#reload
A memória pôde esgotar outra vez ao longo do tempo, assim que use a memória dos processos da mostra classificada e comandos show memory allocating-process totals a fim monitorar para a frente a utilização de memória desse ponto.
Nota: Se você desabilita eficazmente MallocLite com nenhum comando de lite da memória e recarrega o dispositivo, a saída do comando dos lite-pedaços da memória da mostra estará vazia.
Refira a referência de comandos para detalhes do comando de lite da memória.