Contenu

Introduction

Informations générales

Dépanner

Identifiez l'application responsable de la fuite

Décodez le PC de programme d'allocation

Étudiez les statistiques de mémoire de MallocLite

Débronchement MallocLite

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.

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épanner

Note: Certaines commandes d’affichage (« show ») sont offertes par l’outil « Cisco CLI Analyzer » réservé aux clients inscrits. Utilisez cet outil pour obtenir une analyse des rapports produits par ces commandes.

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.

Note: 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.