Routeurs : Routeurs à services intégrés de la gamme Cisco 2900

Dépannage de fuites de mémoire de MallocLite

16 décembre 2015 - Traduction automatique
Autres versions: PDFpdf | Anglais (23 avril 2015) | Commentaires

Introduction

Ce document décrit comment dépanner des fuites de mémoire de MallocLite sur des Plateformes de ®software de Cisco IOS.

Il spécifie également les informations que vous devriez recueillir avant que vous ouvriez une valise du centre d'assistance technique Cisco (TAC) ou rechargiez le périphérique. Collectez les sorties mentionnées dans ce document, et reliez-les dans le cas TAC afin d'aider à accélérer la résolution des problèmes.

Contribué par Michal Stanczyk et David Chen, ingénieurs TAC Cisco.

Informations générales

MallocLite est utilisé par le gestionnaire de mémoire afin d'allouer de petites, à taille fixe parties de mémoire, connues sous le nom de blocs, pour des allocations inférieur ou égal à 128 octets. Les petites allocations de mémoire n'ont pas le temps système d'une en-tête de bloc pour chaque allocation. Cette caractéristique est prise en charge pour des groupes de mémoire du processeur seulement.

Chaque en-tête de bloc de mémoire prend environ 48 octets de mémoire, et le plus petit bloc prend environ 24 octets. Avec une approche traditionnelle en logiciel de Cisco IOS pour chaque allocation, vous consommeriez au moins 72 (48 + 24) octets de mémoire, même si vous devez allouer seulement 8 octets de données réelles.

Avec MallocLite, ce temps système peut être réduit en employant des blocs. Il reste du temps système, parce que les blocs doivent être gérés. Cependant, puisque les blocs sont à taille fixe, ils sont gérés d'une manière différente que des blocs, et le temps système est moins.

Il est de la responsabilité des applications qui emploient la mémoire de MallocLite pour la libérer correctement. MallocLite masque l'utilisateur de la mémoire.

Dépannez

Notes :

Utilisez l'Outil de recherche de commande (clients enregistrés seulement) pour obtenir plus d'informations sur les commandes utilisées dans cette section.

L'Output Interpreter Tool (clients enregistrés seulement) prend en charge certaines commandes show. Utilisez l'Output Interpreter Tool afin de visualiser une analyse de sortie de commande show.

Identifiez l'application responsable de la fuite

Il est habituellement difficile d'identifier une bogue existante si vous recherchez seulement par le mot clé de malloclite.

Cet exemple prouve que le processus de *MallocLite* tient une quantité de mémoire anormale :

#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*

Vous devez identifier l'application précise qui est responsable de la fuite. Trois méthodes possibles d'identification sont :

  • Décodez le PC de programme d'allocation.
  • Étudiez les statistiques de mémoire de MallocLite.
  • Débronchement MallocLite.

Décodez le PC de programme d'allocation

Même avec MallocLite s'est activé, vous peut habituellement voir ce que fonctionner a demandé la mémoire. La sortie de la commande de totaux de show memory allocating-process pourrait afficher différentes valeurs PC quoique le nom signalé soit 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

Un ingénieur TAC Cisco peut décoder les valeurs PC du haut de la liste (avec le total le plus élevé). Ceci aide à identifier l'application qui a la fuite de mémoire.

Étudiez les statistiques de mémoire de MallocLite

Parmi les améliorations ajoutées dans la version de logiciel 15.1T de Cisco IOS était un nouveau CLI qui affiche le résumé de la mémoire de MallocLite alloué par chaque PC. La commande de lite-blocs de show memory peut vous aider à identifier les applications qui utilisent un grand nombre de blocs de MallocLite.

show memory lite-chunks { statistics | totals } { summary { pool | { all | pool } } }

Référez-vous à la référence de commandes pour des détails de la commande de lite-blocs de show memory.

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

Les exemples de sortie de cette commande incluent :

#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

De nouveau, l'ingénieur TAC peut décoder des valeurs PC avec le total le plus élevé et identifier l'application qui coule la mémoire.

Débronchement MallocLite

La caractéristique de MallocLite est activée par défaut. Afin d'étudier la fuite de MallocLite, vous pouvez désactiver MallocLite :

(config)#no memory lite

La mémoire coulée sera toujours sous MallocLite jusqu'à la prochaine recharge ; cependant, vous pouvez commencer à surveiller d'autres fuites avec le show processes memory trié et des commandes de totaux de show memory allocating-process. Les fuites apparaîtront maintenant sous le processus réel.

Si le périphérique exécute très bas sur la mémoire, vous devez sauvegarder la configuration et recharger le périphérique afin de publier la mémoire :

#wr
#reload

La mémoire pourrait épuiser de nouveau au fil du temps, ainsi utilisez le show processes memory trié et les commandes de totaux de show memory allocating-process afin de surveiller l'utilisation de mémoire de ce point en avant.

Remarque: Si vous efficacement désactivez MallocLite avec l'aucune commande de memory lite et rechargez le périphérique, la sortie de la commande de lite-blocs de show memory sera vide.

Référez-vous à la référence de commandes pour des détails de la commande de memory lite.


Conversations connexes de la communauté de soutien de Cisco

Le site Cisco Support Community est un forum où vous pouvez poser des questions, répondre à des questions, faire part de suggestions et collaborer avec vos pairs.


Document ID: 117517