Dit document beschrijft hoe u systeemgeheugen en geheugengerelateerde problemen met betrekking tot probleemoplossing kunt controleren op de Cisco ASR 1000 Series aggregation services routers (ASR1K).
Cisco raadt u aan basiskennis van deze onderwerpen te hebben:
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Met de meeste op software gebaseerde routerplatforms wordt het grootste deel van de interne softwareprocessen uitgevoerd binnen het Cisco IOS® geheugen. Het ASR1K-platform introduceert een gedistribueerde softwarearchitectuur die veel besturingssysteemverantwoordelijkheden uit het IOS-proces verplaatst. De IOS in deze architectuur, die voorheen verantwoordelijk was voor vrijwel alle interne bewerkingen, wordt nu uitgevoerd als een van de vele Linux-processen. Dit laat andere Linux processen toe om verantwoordelijkheid voor de werking van de router te delen.
ASR1K runt IOS-XE, niet de traditionele IOS. In IOS-XE draait een Linux-component de kern en draait de IOS als een daemon, die hierna IOS-D (IOS-Daemon) wordt genoemd. Dit creëert een vereiste dat het geheugen gesplitst wordt tussen de Linux-kern en de IOSd-instantie.
Het geheugen dat tussen IOSd en de rest van het systeem wordt verdeeld is vast bij opstarten en kan niet worden aangepast. Voor een systeem van 4 GB, wordt IOSd toegewezen aan ongeveer 2 GB, en voor een systeem van 8 GB, wordt IOSd toegewezen aan ongeveer 4 GB (met gehandicapte softwareredundantie).
Aangezien ASR1K een 64-bits architectuur heeft, verbruikt elke muiswijzer in elke gegevensstructuur in het systeem het dubbele van de hoeveelheid geheugen in vergelijking met de traditionele single-CPU-platforms (8 bytes in plaats van 4 bytes). De 64-bits adressering stelt IOS in staat om de 2-GB adresseerbare geheugenbeperking van IOS te overwinnen, wat het in staat stelt om tot miljoenen routes te schaalen.
De Linux Shared Memory Point Interface (LSMPI)-geheugenpool wordt gebruikt om pakketten van de verzendende processor naar de routeprocessor over te brengen. Dit geheugen poel wordt gekerfd bij routerinitialisatie in vooraf toegewezen buffers, in tegenstelling tot de processor pool, waar IOS-XE geheugen blokken dynamisch toewijst. Op het ASR1K-platform heeft de lsmpi_io-pool weinig vrije geheugen, over het algemeen minder dan 1000 bytes normaal . Cisco raadt u aan om controle van de LSMPI-pool door de netwerkbeheertoepassingen uit te schakelen om valse waarschuwingen te voorkomen.
ASR1000# show memory statistics
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 2C073008 1820510884 173985240 1646525644 1614827804 1646234064
lsmpi_io 996481D0 6295088 6294120 968 968 968
Als er problemen zijn in het LSMPI-pad, lijkt de Apparaatuitzending defect teller te zijn toegenomen in deze opdrachtoutput (sommige uitvoer is weggelaten):
ASR1000-1# show platform software infrastructure lsmpi driver
LSMPI Driver stat ver: 3
Packets:
In: 674572
Out: 259861
Rings:
RX: 2047 free 0 in-use 2048 total
TX: 2047 free 0 in-use 2048 total
RXDONE: 2047 free 0 in-use 2048 total
TXDONE: 2047 free 0 in-use 2048 total
Buffers:
RX: 7721 free 473 in-use 8194 total
Reason for RX drops (sticky):
Ring full : 0
Ring put failed : 0
No free buffer : 0
Receive failed : 0
Packet too large : 0
Other inst buf : 0
Consecutive SOPs : 0
No SOP or EOP : 0
EOP but no SOP : 0
Particle overrun : 0
Bad particle ins : 0
Bad buf cond : 0
DS rd req failed : 0
HT rd req failed : 0
Reason for TX drops (sticky):
Bad packet len : 0
Bad buf len : 0
Bad ifindex : 0
No device : 0
No skbuff : 0
Device xmit fail : 0
Device xmit rtry : 0
Tx Done ringfull : 0
Bad u->k xlation : 0
No extra skbuff : 0
<snip>
ASR1K bestaat uit deze functionele elementen in haar systeem:
Als zodanig is het noodzakelijk het geheugengebruik door elk van deze processors in een productieomgeving te controleren.
De controleprocessors runnen Cisco IOS-XE software die uit een Linux-gebaseerde kern en een gemeenschappelijke reeks OS-niveau nutsprogramma's bestaat, die Cisco IOS omvatten die als een gebruikersproces op de RP-kaart loopt.
Voer de opdracht voor de besturing van de platformsoftware in om het geheugen te controleren op RP, ESP, en SIP. De systeemstatus moet identiek zijn wat betreft aspecten zoals de functieknop en het verkeer, terwijl u het geheugengebruik vergelijkt.
ASR1K# show platform software status control-processor brief
<snip>
Memory (kB)
Slot Status Total Used (Pct) Free (Pct) Committed (Pct)
RP0 Healthy 3907744 1835628 (47%) 2072116 (53%) 2614788 (67%)
ESP0 Healthy 2042668 789764 (39%) 1252904 (61%) 3108376 (152%)
SIP0 Healthy 482544 341004 (71%) 141540 (29%) 367956 (76%)
SIP1 Healthy 482544 315484 (65%) 167060 (35%) 312216 (65%)
Elke processor die in de vorige uitvoer staat, kan de status rapporteren als Gezonde, Waarschuwing of Kritisch, wat afhankelijk is van de hoeveelheid vrij geheugen. Als een van de processors de status als WAARSCHUWING of Kritisch weergeven, voert u het monitorplatform softwareproces<sleuf>-opdracht in om de bovenste contribuant te identificeren.
ASR1K# monitor platform software process ?
0 SPA-Inter-Processor slot 0
1 SPA-Inter-Processor slot 1
F0 Embedded-Service-Processor slot 0
F1 Embedded-Service-Processor slot 1
FP Embedded-Service-Processor
R0 Route-Processor slot 0
R1 Route-Processor slot 1
RP Route-Processor
<cr>
Mogelijk wordt u gevraagd het terminaltype in te stellen voordat u de opdracht voor de uitvoering van de software van het monitorplatform kunt uitvoeren:
ASR1K# monitor platform software process r0
Terminal type 'network' unsupported for command
Change the terminal type with the 'terminal terminal-type' command.
Het terminaltype wordt standaard ingesteld op een netwerk. Als u het juiste terminaltype wilt instellen, voert u de opdracht terminaltype in:
ASR1K#terminal-type vt100
Als het juiste terminaltype is ingesteld, kunt u de opdracht voor het proces van de platformsoftware van de monitor invoeren (een uitvoer weggelaten):
ASR1000# monitor platform software process r0
top - 00:34:59 up 5:02, 0 users, load average: 2.43, 1.52, 0.73
Tasks: 136 total, 4 running, 132 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.8%us, 2.3%sy, 0.0%ni, 96.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2009852k total, 1811024k used, 198828k free, 135976k buffers
Swap: 0k total, 0k used, 0k free, 1133544k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25956 root 20 0 928m 441m 152m R 1.2 22.5 4:21.32 linux_iosd-imag
29074 root 20 0 106m 95m 6388 S 0.0 4.9 0:14.86 smand
24027 root 20 0 114m 61m 55m S 0.0 3.1 0:05.07 fman_rp
25227 root 20 0 27096 13m 12m S 0.0 0.7 0:04.35 imand
23174 root 20 0 33760 11m 9152 S 1.0 0.6 1:58.00 cmand
23489 root 20 0 23988 7372 4952 S 0.2 0.4 0:05.28 emd
24755 root 20 0 19708 6820 4472 S 1.0 0.3 3:39.33 hman
28475 root 20 0 20460 6448 4792 S 0.0 0.3 0:00.26 psd
27957 root 20 0 16688 5668 3300 S 0.0 0.3 0:00.18 plogd
14572 root 20 0 4576 2932 1308 S 0.0 0.1 0:02.37 reflector.sh
<snip>
Als u opmerkt dat het linux_iosd-imageproces een ongewoon grote hoeveelheid geheugen in het platform softwareproces van de monitor actieve opdrachtoutput heeft, richt u uw inspanningen om de problemen op te lossen op de IOSd instantie. Het is waarschijnlijk dat een specifiek proces in de IOSd draad het geheugen niet vrijmaakt. Probleemoplossing voor problemen met betrekking tot het geheugen in het IOSd-exemplaar, op dezelfde manier als wanneer u softwaregebaseerde verzendplatforms, zoals Cisco 2800, 3800 of 3900 Series, probleemoplossing.
ASR1K# monitor platform software process rp active
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25794 root 20 0 2929m 1.9g 155m R 99.9 38.9 1415:11 linux_iosd-imag
23038 root 20 0 33848 13m 10m S 5.9 0.4 30:53.87 cmand
9599 root 20 0 2648 1152 884 R 2.0 0.0 0:00.01 top
<snip>
Geef de opdracht op hoe procesgeheugen is gesorteerd om het probleemproces te identificeren:
ASR1000# show process memory sorted
Processor Pool Total: 1733568032 Used: 1261854564 Free: 471713468
lsmpi_io Pool Total: 6295088 Used: 6294116 Free: 972
PID TTY Allocated Freed Holding Getbufs Retbufs Process
522 0 1587708188 803356800 724777608 54432 0 BGP Router
234 0 3834576340 2644349464 232401568 286163388 15876 IP RIB Update
0 0 263244344 36307492 215384208 0 0 *Init
Verkeersclassificatie is een van de meest fundamentele functies die in routers en switches worden gevonden. Veel toepassingen en functies vereisen dat de infrastructuurauts deze gedifferentieerde diensten voor verschillende gebruikers leveren op basis van kwaliteitseisen. Het verkeersclassificatieproces moet snel zijn, zodat de doorvoersnelheid van het apparaat niet sterk achteruit gaat. Het ASR1K-platform gebruikt hiervoor de 4e generatie van Ternary Content Adresseerbare Geheugen (TCAM4).
Om het totale aantal TCAM-cellen dat op het platform beschikbaar is en het aantal vrije items dat overblijft te bepalen, voert u deze opdracht in:
ASR1000# show platform hardware qfp active tcam resource-manager usage
Total TCAM Cell Usage Information
----------------------------------
Name : TCAM #0 on CPP #0
Total number of regions : 3
Total tcam used cell entries : 65528
Total tcam free cell entries : 30422
Threshold status : below critical limit
Als de verzendende processor kritisch laag draait op gratis TCAM-cellen, kan ESP stammen genereren die vergelijkbaar zijn met de borden hieronder en kunnen storten. Als er geen redundantie is, leidt dit tot verstoring van het verkeer.
%CPPTCAMRM-6-TCAM_RSRC_ERR: SIP0: cpp_sp: Allocation failed because of insufficient
TCAM resources in the system.
%CPPOSLIB-3-ERROR_NOTIFY: SIP0: cpp_sp:cpp_sp encountered an error -
Traceback=1#s7f63914d8ef12b8456826243f3b60d7 errmsg:7EFFC525C000+1175
Naast het fysieke geheugen is er ook geheugen gekoppeld aan de Quantum Flow Processor (QFP) ASIC die wordt gebruikt om gegevensstructuren door te sturen, waaronder gegevens zoals Forwarding Information Base (FIB) en QoS-beleid. De hoeveelheid DRAM die beschikbaar is voor de QFP ASIC is vastgesteld, met marges van 256 MB, 512 MB en 1 GB, afhankelijk van de ESP-module.
Voer de opdracht voor actieve infrastructuur van het platform hardware qfp in om het extremgeheugengebruik te bepalen. De som van het geheugen voor INRAM en DRAM dat wordt gebruikt geeft het totale QFP geheugen dat in gebruik is.
BGL.I.05-ASR1000-1# show platform hardware qfp active infra exmem statistics user
Type: Name: IRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
------------------------------------------------------
1 115200 115712 CPP_FIA
Type: Name: DRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
-----------------------------------------------------
4 1344 4096 P/I
9 270600 276480 CEF
1 1138256 1138688 QM RM
1 4194304 4194304 TCAM
1 65536 65536 Qm 16
IRAM is het instructiegeheugen voor QFP-software. Als de DRAM is uitgeput, kan het beschikbare geheugen worden gebruikt. Als IRAM zeer laag op het geheugen loopt, kunt u deze foutmelding zien:
%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 97 percent depleted
%QFPOOR-4-LOWRSRC_PERCENT: F1: cpp_ha: QFP 0 IRAM resource low - 98 percent depleted
Om het proces te bepalen dat het meeste geheugen consumeert, voert u de opdracht van de gebruiker van de showplatform hardware qfp actieve infra statistieken in:
ASR1000# show platform hardware qfp active infra exmem statistics user
Type: Name: IRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
----------------------------------------------------
1 115200 115712 CPP_FIA
Type: Name: DRAM, CPP: 0
Allocations Bytes-Alloc Bytes-Total User-Name
----------------------------------------------------
4 1344 4096 P/I
9 270600 276480 CEF
1 1138256 1138688 QM RM
1 4194304 4194304 TCAM
1 65536 65536 Qm 16