Inhoud

Inleiding

Achtergrondinformatie

Problemen oplossen

Identificeer de toepassing die verantwoordelijk is voor lekkage

PC voor decoderingsallocator

MallocLite Geheugenstatistieken onderzoeken

MallocLite uitschakelen

Inleiding

Dit document beschrijft hoe u MallocLite-geheugenlekken op Cisco IOS®-softwareplatforms kunt oplossen.

Het specificeert ook de informatie die u moet verzamelen voordat u een Cisco Technical Assistance Center (TAC)-case opent of het apparaat opnieuw laadt. Verzamel de output die in dit document wordt vermeld, en voeg ze aan de TAC-case toe om probleemoplossing te helpen versnellen.

Achtergrondinformatie

MallocLite wordt gebruikt door de geheugenmanager om kleine, vaste grootte stukjes geheugen, bekend als stukjes, toe te wijzen voor toewijzingen kleiner dan of gelijk aan 128 bytes. De kleine geheugentoewijzingen hebben niet de overheadkosten van een blokkopbal voor elke toewijzing. Deze optie wordt alleen ondersteund voor processorgeheugenpools.

Elk geheugenblok heeft ongeveer 48 bytes geheugen en het kleinste blok neemt ongeveer 24 bytes. Met een traditionele benadering in Cisco IOS-software voor elke toewijzing zou u ten minste 72 (48 + 24) bytes aan geheugen gebruiken, zelfs als u slechts 8 bytes aan feitelijke gegevens hoeft toe te wijzen.

Met MallocLite kan deze overhead worden verminderd door het gebruik van stukjes. Er zijn nog wel wat overheadkosten, want de stukken moeten beheerd worden. Omdat de stukjes echter een vaste grootte hebben, worden ze op een andere manier beheerd dan blokken, en de overheadkosten zijn minder.

Het is de verantwoordelijkheid van de applicaties die het MallocLite geheugen gebruiken om het goed vrij te maken. MallocLite maskeert de gebruiker van het geheugen.

Problemen oplossen

Opmerking: de Cisco CLI Analyzer (alleen geregistreerde klanten) ondersteunt bepaalde show commando's. Gebruik de Cisco CLI Analyzer om een analyse te bekijken van de output van de opdracht  show .

Identificeer de toepassing die verantwoordelijk is voor lekkage

Het is meestal moeilijk om een bestaande bug te identificeren als je alleen zoekt op basis van het malloclite sleutelwoord.

Dit voorbeeld laat zien dat het *MallocLite*-proces een abnormale hoeveelheid geheugen bevat:

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

U moet de exacte toepassing identificeren die verantwoordelijk is voor lekkage. Drie mogelijke identificatiemethoden zijn:

- Decodeer allocator-pc.

- Onderzoek MallocLite geheugenstatistieken.

- MallocLite uitschakelen.

PC voor decoderingsallocator

Zelfs met MallocLite aangezet, kunt u gewoonlijk zien welke functie om het geheugen vroeg. De output van het bevel van het show geheugen allocating-proces totalen zou verschillende PC waarden kunnen tonen alhoewel de gerapporteerde naam MallocLite is:

#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

Een Cisco TAC engineer kan de PC waarden bovenaan de lijst decoderen (met het hoogste totaal). Dit helpt de toepassing te identificeren die het geheugenlek heeft.

MallocLite Geheugenstatistieken onderzoeken

Onder de verbeteringen toegevoegd in Cisco IOS-softwarerelease 15.1T was een nieuwe CLI die de samenvatting van MallocLite-geheugen toont dat door elke PC is toegewezen. De opdracht lite-chunks van het showgeheugen kan u helpen toepassingen te identificeren die een grote hoeveelheid MallocLite-blokken gebruiken.

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

Raadpleeg de opdrachtreferentie voor informatie over de opdracht lite-chunks van het showgeheugen.

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

Voorbeelden van uitvoer van deze opdracht zijn:

#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

Opnieuw kan de TAC engineer PC waarden decoderen met het hoogste totaal en de applicatie identificeren die het geheugen lekt.

MallocLite uitschakelen

De functie MallocLite is standaard ingeschakeld. Om het lek van MallocLite te onderzoeken, kunt u MallocLite uitschakelen:

(config)#no memory lite

Het gelekte geheugen staat nog steeds onder MallocLite tot de volgende herlading; nochtans, kunt u beginnen om verdere lekken met het gesorteerde geheugen van showprocessen te controleren en de bevelen van het geheugentoewijzend-proces tonen totalen. De lekken zullen nu onder het echte proces verschijnen.

Als het apparaat zeer laag op geheugen loopt, moet u de configuratie opslaan en het apparaat opnieuw laden om het geheugen vrij te geven:

#wr

#reload

Het geheugen kan in de loop van de tijd weer uitputten, dus gebruik de show processen geheugen gesorteerd en toon geheugen allocating-proces totalen opdrachten om het geheugen gebruik vanaf dat punt vooruit te controleren.

Opmerking: Als u MallocLite met de opdracht no memory lite effectief uitschakelt en het apparaat opnieuw laadt, zal de uitvoer van de opdracht show memory lite-chunks leeg zijn.

Raadpleeg de opdrachtreferentie voor meer informatie over de opdracht memory lite.