Roteadores : Roteadores de serviços integrados Cisco 2900 Series

Pesquisa de defeitos dos escapes de memória de MallocLite

12 Agosto 2015 - Tradução por Computador
Outras Versões: Versão em PDFpdf | Inglês (23 Abril 2015) | Feedback

Introdução

Este documento 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 documento, e anexe-as ao caso de TAC a fim ajudar a expedir a definição de problema.

Contribuído por Michal Stanczyk e por David Chen, engenheiros de TAC da Cisco.

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 Cisco IOS Software 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

Notas:

Use a Command Lookup Tool ( somente clientes registrados) para obter mais informações sobre os comandos usados nesta seção.

A ferramenta Output Interpreter (clientes registrados somente) apoia determinados comandos de exibição. Use a ferramenta Output Interpreter a fim ver uma análise do emissor de comando de execução.

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 distribuidor PC.
  • Investigue estatísticas da memória de MallocLite.
  • Desabilite MallocLite.

Descodifique o distribuidor PC

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 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 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 PC com o total o mais alto e identificar o aplicativo que está escapando a memória.

Desabilitaçã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.


Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.


Document ID: 117517