Inleiding
Dit document beschrijft een geheugenlek in de context van een Cisco Catalyst 9800 draadloze LAN-controller (WLC).
Geheugenlekkage
Als een programma of proces geheugen toewijst voor tijdelijk gebruik en het niet juist lokaliseert als het niet langer nodig is, dan blijft dat geheugen "in gebruik" vanuit het perspectief van het besturingssysteem. Aangezien het proces blijft werken en er herhaaldelijk niet in slaagt om geheugen te delokaliseren, groeit de totale hoeveelheid geheugen die door het proces wordt gebruikt, en minder geheugen is beschikbaar voor andere processen en systeemfuncties. Geheugenlekken worden meestal veroorzaakt door softwarebugs of problemen met de systeemfirmware of de toepassingen die erop draaien.
In het geval van een Cisco Catalyst 9800 WLC, kan een geheugenlek zich als volgt manifesteren:
- Verminderde Prestaties: Aangezien het geheugen steeds schaarser wordt, vertraagt WLC mogelijk, resulterend in langzamere reactietijden voor beheersfuncties of verminderde prestaties van clientapparaten die aan het netwerk worden aangesloten.
- Systeeminstabiliteit: Kritieke processen kunnen beginnen te mislukken, wat mogelijk kan leiden tot verbroken clientverbindingen, onvermogen om de WLC te beheren of ander afwijkend gedrag.
- Systeemcrashes: In ernstige gevallen kan de WLC mogelijk crashen en opnieuw opstarten, vooral als het geheugen voor essentiële operaties opraakt.
Opmerking: 9800 WLC kan een plotselinge reboot / crash ervaren om het gelekte geheugen terug te winnen en zichzelf te herstellen. Aangezien geheugenlekkage buggy-gedrag is, ontstaan lekken zelfs na het opnieuw opstarten, tenzij de lekkage veroorzakende configuratie/functie is uitgeschakeld.
Syslog
%PLATFORM-4-ELEMENT_WAARSCHUWING:R0/0: klein: RP/0 Gebruikte geheugenwaarde 91% overschrijdt waarschuwingsniveau 88%
Dit bericht drukt de top 3 geheugen verbruikende proces naam samen met de traceky, callsite ID en diff oproepen:
%PLATFORM-4-ELEMENT_WAARSCHUWING: Chassis 1 R0/0: klein: 1/RP/0: Gebruikte geheugenwaarde 91% overschrijdt waarschuwingsniveau 88%. Belangrijkste geheugenallocators zijn: Proces: sessmgrd_rp_0. Tracekey: 1#258b8858a63c7998252e96352473c9c6 Nummerherkenning: 11B8F825A8768000 (diff_call: 20941). Proces: fman_fp_image_fp_0. Tracekey: 1#36b34d8e636a89f6397a3b12acab9706 Nummerherkenning: 1944E78DF68EC002 (diff_call: 19887). Proces: linux_iosd-imag_rp_0. Tracekey: 1#8ec74901dc8e23a44e060e69d5820ece Callsite-id: E2A338E11594003 (diff_call: 13404).
Hoe de 9800 WLC te identificeren hebben ervaren geheugenlekkage probleem
Het is belangrijk om geheugenlekken direct aan te pakken aangezien zij de stabiliteit en de betrouwbaarheid van de netwerkdiensten kunnen compromitteren die door WLC worden verleend. Om een geheugenlek op een WLC te diagnosticeren, kunt u diverse opdrachten op de CLI gebruiken om het geheugengebruik in de loop der tijd te controleren. Ze kunnen op zoek gaan naar processen die een steeds grotere hoeveelheid geheugen gebruiken zonder het vrij te geven, of patronen die aangeven dat geheugen niet wordt hersteld zoals verwacht.
Controleer hoeveel geheugen volledig aan het platform is toegewezen.
9800WLC#show version | in memory
cisco C9800-L-F-K9 (KATAR) processor (revision KATAR) with 1634914K/6147K bytes of memory.
32768K bytes of non-volatile configuration memory.
16777216K bytes of physical memory.
!! Determines Total platform memory available, Here it is 16GB
Controleer hoeveel geheugen is toegewezen aan elke pool.
9800WLC#show processes memory
Processor Pool Total: 1674013452 Used: 823578520 Free: 850434932
reserve P Pool Total: 102404 Used: 88 Free: 102316
lsmpi_io Pool Total: 6295128 Used: 6294296 Free: 832
Controleer het resourcegebruik, inclusief geheugengebruik. Als deze waarde hoger is dan de niveaus Waarschuwing of Kritiek, kan dit wijzen op een mogelijk geheugenlek.
Geheugengebruik op 9800 WLC
Het totale geheugengebruik van de monitor voor de middelen van het controlevliegtuig
9800WLC#show platform software status control-processor brief
Slot Status 1-Min 5-Min 15-Min
1-RP0 Healthy 0.52 0.75 0.80
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
1-RP0 Healthy 16327028 4898110(30%) 114218918 (70%) 5387920 (33%)
Controleer de toegewezen en gebruikte geheugengrootte voor de hoogste processen. Als het geheugengebruik blijft stijgen terwijl het vrije geheugen vast blijft of te laag is, is er een grote kans op een geheugenlek op IOSd-niveau.
Per procesgeheugen begint het hoogste holdingproces
Voor geheugenlekkage op platformniveau, controleer de RSS (Resident Set Size) tellers. RSS geeft de hoeveelheid geheugen aan die is toegewezen aan een proces tijdens de uitvoering. Als deze waarde snel stijgt, kan dit wijzen op een mogelijk geheugenlek.
Platform verwerkt geheugengebruik van het hoogste holdingproces
Geheugenlekkage in IOS-proces oplossen
In IOS XE werkt IOS als een proces (daemon) dat bovenop de Linux-kernel draait, bekend als IOSd. Typisch, IOSd wordt toegewezen tussen 35% tot 50% van het totale beschikbare platform DRAM.
Basis logboeken van WLC
Tijdstempel inschakelen voor tijdreferentie voor alle opdrachten.
9800WLC#term exec prompt timestamp
U kunt de configuratie en geheugengerelateerde informatie als volgt bekijken:
9800WLC#show tech-support wireless
9800WLC#show tech-support memory
Verzamel Core Dump-bestand of systeemrapport indien gegenereerd
Via GUI
Naviagte naar Troubleshooting > Core Dumps and System Report
Core Dump and System rapport
Via CLI
9800WLC#show bootflash: | in core/system-report
9800WLC#copy bootflash:system-report/Core_file {tftp: | ftp: | https: ..}
Voor processorgeheugenpool
Controleer per procesgeheugen vanaf het hoogste holdingproces.
9800WLC#show process memory sorted
Controleer de totale geheugenstatus voor de betreffende pool. Het toont ook de grootste gratis blok en het laagste beschikbare geheugen sinds boot.
9800WLC#show memory Statistics
Controleer de programmateller (PC) die veel geheugen heeft toegewezen.
9800WLC#show memory allocation-process totals
Controleer gelekte blokken en stukjes.
9800WLC#show memory debug leak chunks
!!This is CPU intensive cli and use only if above CLI output is not helping.
Voor IOS-geheugenpool
Controleer de bovenste allocatoren.
9800WLC#show memory io allocating-process totals
Als de bovenste allocator 'Packet Data of Pool Manager' is, controleer dan welke caller_pc om een groot aantal buffers vroeg
9800WLC#show buffers
9800WLC#show buffers usage
Als de bovenste allocator is 'mananged_chunk_process()' of 'Chunk Manager' proces, dan betekent het dat een of meer stukjes is/zijn het toewijzen van een grote hoeveelheid geheugen.
9800WLC#show chunk summary
9800WLC#show chunk brief
Als het proces MallocLite de belangrijkste allocator is
9800WLC#show memory lite-chunks totals
9800WLC#show memory lite-chunks stats
Geheugenlek op polis-/platformniveau oplossen
Controleer geheugengebruik % voor beschikbare geheugenbronnen op platform.
9800WLC#show Platform resources
Controleer de algemene momentopname van het systeemgeheugen.
9800WLC#show platform software process slot chassis active R0 Monitor | in Mem
Controleer alle platform processen geheugen gesorteerd.
9800WLC#show process memory platform sorted
9800WLC#show platform software process memory chassid active r0 all sorted
Controleer de status van de laatst geannuleerde oproepen.
9800WLC#show process memory platform accounting
Kies de top contender van de vorige twee CLI-uitgangen en schakel de debugs voor de afzonderlijke processen in.
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite stop
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite clear
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace start <CALL_SITE> depth 10
9800WLC#debug platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite start
!! Running these debugs has no impact to device
Verzamel de output een paar minuten (15 minuten tot een uur) na het initiëren van de debugs.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc backtrace
!! Capture this output three times, with a 5-10 minutes interval between each capture, to identify the pattern.
Controleer op call_diff, wijst waarde toe en vrijmaakt met de respectievelijke backtrace voor elk proces.
9800WLC#show platform software memory <process> chassis <1-2/active/standby> R0 alloc callsite brief
Opmerking: call_diff = allocs - free
Als allocs = vrij, geen geheugenlek
Als frees = 0, geheugenlek
Als allocs != vrijkomt, is het mogelijk dat het geheugen lekt of niet (Als call_diff meer is, duidt dit op een grote kans op geheugenlekkage)
Leg gegevens van het databasegeheugen vast voor elk afzonderlijk proces.
9800WLC#show platform software memory <process> chassis <1-2/active/standby>active R0 alloc type data brief
9800WLC#show platform software memory database <process> chassis <1-2/active/standby> chassis active R0 brief
Controleer de informatie op het systeem om het geheugengebruik te controleren op een tijdelijk aangemaakt virtueel bestandssysteem.
9800WLC#show platform software mount
Aanbeveling
Raadpleeg de relevante configuratiehandleidingen, gegevensbladen en releaseopmerkingen voor geheugenaanbevelingen en schalinglimieten en zorg ervoor dat de WLC is bijgewerkt naar de laatst aanbevolen release.