In diesem Dokument wird beschrieben, wie der Systemspeicher überprüft und Speicherprobleme bei den Aggregation Services Routern der Cisco Serie ASR 1000 (ASR1K) behoben werden.
Cisco empfiehlt, über grundlegende Kenntnisse in folgenden Bereichen zu verfügen:
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Bei den meisten softwarebasierten Routerplattformen werden die meisten internen Softwareprozesse im Cisco IOS®-Speicher ausgeführt. Die ASR1K-Plattform führt eine verteilte Softwarearchitektur ein, bei der viele Verantwortlichkeiten von Betriebssystemen aus dem IOS-Prozess entfernt werden. Das IOS in dieser Architektur, das zuvor für fast alle internen Vorgänge verantwortlich war, wird nun als einer von vielen Linux-Prozessen ausgeführt. Dadurch können andere Linux-Prozesse die Verantwortung für den Betrieb des Routers teilen.
Auf dem ASR1K wird IOS-XE und nicht das traditionelle IOS ausgeführt. In IOS-XE wird der Kernel von einer Linux-Komponente ausgeführt, und das IOS wird als Daemon ausgeführt, der im Folgenden als IOSd (IOS-Daemon) bezeichnet wird. Dadurch muss der Speicher auf den Linux-Kernel und die IOSd-Instanz aufgeteilt werden.
Der Speicher, der zwischen IOSd und dem Rest des Systems aufgeteilt ist, ist beim Start fest und kann nicht geändert werden. Bei einem 4-GB-System wird IOSd etwa 2 GB zugewiesen, bei einem 8-GB-System etwa 4 GB (bei deaktivierter Software-Redundanz).
Da der ASR1K über eine 64-Bit-Architektur verfügt, verbraucht jeder Zeiger, der in jeder Datenstruktur des Systems vorhanden ist, im Vergleich zu den herkömmlichen Single-CPU-Plattformen doppelt so viel Speicher (8 Byte statt 4 Byte). Mit der 64-Bit-Adressierung kann IOS die 2-GB-adressierbare Speicherbeschränkung von IOS überwinden, die eine Skalierung auf Millionen von Routen ermöglicht.
Der Arbeitsspeicherpool der Linux Shared Memory Punt Interface (LSMPI)-Speicherschnittstelle wird verwendet, um Pakete vom Forwarding-Prozessor zum Routingprozessor zu übertragen. Dieser Speicherpool wird bei der Router-Initialisierung in vorreservierte Puffer unterteilt, im Gegensatz zum Prozessorpool, in dem IOS-XE Speicherblöcke dynamisch zuweist. Auf der ASR1K-Plattform hat der lsmpi_io-Pool wenig freien Speicher - im Allgemeinen weniger als 1000 Byte - , die normal ist. Cisco empfiehlt, die Überwachung des LSMPI-Pools durch die Netzwerkverwaltungsanwendungen zu deaktivieren, um Fehlalarme zu vermeiden.
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
Wenn im LSMPI-Pfad Probleme auftreten, scheint der Zähler Device xmit fail in dieser Befehlsausgabe zu inkrementieren (einige Ausgabe wurde weggelassen):
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>
Der ASR1K besteht aus den folgenden Funktionsmerkmalen des Systems:
Daher muss die Speichernutzung jedes dieser Prozessoren in einer Produktionsumgebung überwacht werden.
Auf den Steuerungsprozessoren wird die Cisco IOS-XE-Software ausgeführt, die aus einem Linux-basierten Kernel und einem gemeinsamen Satz von Dienstprogrammen auf Betriebssystemebene besteht. Dazu gehört Cisco IOS, das als Benutzerprozess auf der RP-Karte ausgeführt wird.
Geben Sie den Befehl show platform software status control-processor brief ein, um die Speichernutzung auf dem RP, dem ESP und dem SIP zu überwachen. Der Systemstatus muss in Bezug auf Aspekte wie die Funktionskonfiguration und den Datenverkehr identisch sein, während Sie die Speichernutzung vergleichen.
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%)
Jeder Prozessor, der in der vorherigen Ausgabe aufgeführt ist, meldet den Status Gesund, Warnung oder Kritisch, der von der Menge des freien Speichers abhängig ist. Wenn einer der Prozessoren den Status als Warnung oder Kritisch anzeigt, geben Sie den Befehl Überwachungsplattform-Software process<slot> ein, um den Hauptbeitragenden zu identifizieren.
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>
Sie werden möglicherweise aufgefordert, den Terminaltyp festzulegen, bevor Sie den Befehl Überwachungsplattform-Softwareprozess ausführen können:
ASR1K# monitor platform software process r0
Terminal type 'network' unsupported for command
Change the terminal type with the 'terminal terminal-type' command.
Der Terminaltyp ist standardmäßig auf Netzwerk festgelegt. Geben Sie den Befehl terminal terminal type (Terminal-Typ) ein, um den entsprechenden Terminaltyp festzulegen:
ASR1K#Terminal-Typ vt100
Nach der Konfiguration des richtigen Terminaltyps können Sie den Befehl Überwachungsplattform-Softwareprozess eingeben (einige Ausgabe entfällt):
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>
Wenn Sie bemerken, dass der Prozess linux_iosd-imag eine ungewöhnlich große Speicherkapazität in der Überwachungsplattform-Softwareprozess-RP-Ausgabe enthält, konzentrieren Sie Ihre Fehlerbehebungsbemühungen auf die IOSd-Instanz. Es ist wahrscheinlich, dass ein bestimmter Prozess im IOSd-Thread den Speicher nicht freigibt. Beheben Sie Speicherprobleme in der IOSd-Instanz auf die gleiche Weise wie bei allen softwarebasierten Weiterleitungsplattformen, z. B. der Cisco Serien 2800, 3800 oder 3900.
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>
Geben Sie den Befehl show process memory sorted ein, um den Problemprozess zu identifizieren:
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
Die Klassifizierung des Datenverkehrs ist eine der grundlegendsten Funktionen von Routern und Switches. Viele Anwendungen und Funktionen erfordern, dass die Infrastrukturgeräte diese differenzierten Services je nach Qualitätsanforderungen für unterschiedliche Benutzer bereitstellen. Der Datenverkehrsklassifizierungsprozess sollte schnell erfolgen, damit der Durchsatz des Geräts nicht stark beeinträchtigt wird. Die ASR1K-Plattform verwendet hierfür die 4. Generation des Ternary Content Addressable Memory (TCAM4).
Geben Sie den folgenden Befehl ein, um die Gesamtzahl der auf der Plattform verfügbaren TCAM-Zellen und die Anzahl der verbleibenden freien Einträge zu ermitteln:
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
Wenn der Forwarding-Prozessor kritisch niedrig auf freien TCAM-Zellen ausgeführt wird, kann der ESP Protokolle generieren, die den unten abgebildeten Protokollen ähneln und abstürzen. Wenn keine Redundanz vorhanden ist, führt dies zu einer Unterbrechung des Datenverkehrs.
%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
Neben dem physischen Speicher ist auch Speicher an den QFP-ASIC (Quantum Flow Processor) angeschlossen, der für die Weiterleitung von Datenstrukturen verwendet wird. Dazu gehören Daten wie Forwarding Information Base (FIB)- und QoS-Richtlinien. Der für den QFP-ASIC verfügbare DRAM-Bereich ist fest. Je nach ESP-Modul liegen die Bereiche 256 MB, 512 MB und 1 GB.
Geben Sie den Befehl show platform hardware qfp active infrastructure exmem statistics ein, um die exmem Speichernutzung zu bestimmen. Die Summe des verwendeten Speichers für IRAM und DRAM ergibt den insgesamt verwendeten QFP-Speicher.
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
Der IRAM ist der Befehlspeicher für die QFP-Software. Falls der DRAM erschöpft ist, kann der verfügbare IRAM verwendet werden. Wenn der IRAM sehr wenig Speicher belegt, wird möglicherweise die folgende Fehlermeldung angezeigt:
%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
Um den Prozess zu bestimmen, der den Großteil des Speichers beansprucht, geben Sie den Befehl show platform hardware qfp active infra exmem statistics ein:
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
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
19-Nov-2013 |
Erstveröffentlichung |