Inhalt

Einführung

Voraussetzungen

Anforderungen

Verwendete Komponenten

ASR-Speicherlayout - Übersicht

Speicherzuweisung im Pool lsmpi_io

Arbeitsspeichernutzung

Überprüfen der Speichernutzung in IOS-XE

Überprüfen der Speicherauslastung auf IOSd

Verifizieren der TCAM-Auslastung auf einem ASR1K

Überprüfen der Speichernutzung im QFP

Einführung

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.

Voraussetzungen

Anforderungen

Cisco empfiehlt, über grundlegende Kenntnisse in folgenden Bereichen zu verfügen:

- Cisco IOS-XE-Software

- ASR-CLI

Hinweis: Möglicherweise benötigen Sie eine spezielle Lizenz, um sich bei der Linux-Shell des Routers der Serie ASR 1001 anzumelden.

Verwendete Komponenten

Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:

- Alle ASR1K-Plattformen

- Alle Cisco IOS-XE-Softwareversionen, die die ASR1K-Plattform unterstützen

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.

ASR-Speicherlayout - Übersicht

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.

Hinweis: Stellen Sie sicher, dass genügend Arbeitsspeicher verfügbar ist, bevor Sie neue Funktionen aktivieren. Cisco empfiehlt, mindestens 8 GB DRAM bereitzustellen, wenn Sie bei Aktivierung der Softwareredundanz die gesamte Border Gateway Protocol (BGP)-Routing-Tabelle erhalten, um eine Speichererschöpfung zu vermeiden.

Speicherzuweisung im Pool lsmpi_io

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>

Arbeitsspeichernutzung

Der ASR1K besteht aus den folgenden Funktionsmerkmalen des Systems:

- Routingprozessor (RP) der Serie ASR 1000

- ASR Embedded Services Processor (ESP) der Serie 1000

- SPA Interface Processor (SIP) der Serie ASR 1000

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.

Überprüfen der Speichernutzung in IOS-XE

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%)

Hinweis: Committed Memory (Committed Memory) ist eine Schätzung der Menge an RAM, die Sie benötigen, um sicherzustellen, dass das System für diese Workload nie Out of Memory (OOM) ist. Normalerweise überschreibt der Kernel den Speicher. Wenn Sie beispielsweise einen 1-GB-Malloc ausführen, passiert nichts wirklich. Sie erhalten wahren Speicher nur dann auf Abruf, wenn Sie diesen zugewiesenen Speicher verwenden, und nur so viel wie Sie verwenden.

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>

Hinweis: Um die Ausgabe in absteigender Reihenfolge der Speicherauslastung zu sortieren, drücken Sie Umschalttaste + M.

Überprüfen der Speicherauslastung auf IOSd

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

Hinweis: Öffnen Sie ein TAC-Ticket, wenn Sie Hilfe benötigen, um eine Fehlerbehebung durchzuführen oder festzustellen, ob der Arbeitsspeicher legitim ist.

Verifizieren der TCAM-Auslastung auf einem ASR1K

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

Hinweis: Cisco empfiehlt, den Grenzwertstatus immer zu überprüfen, bevor Sie Änderungen an Zugriffslisten oder Quality of Service (QoS)-Richtlinien vornehmen, sodass der TCAM über genügend freie Zellen verfügt, um die Einträge zu programmieren.

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

Überprüfen der Speichernutzung im QFP

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