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