Inhalt

Einleitung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Architektur

CPU-Verwendung auf Cisco IOSd

CPU-Auslastung nach Datenverkehr

Installierte CPU-Kerne

CPU-Kernverteilung

Best Practices zur CPU-Überwachung

Einleitung

In diesem Dokument wird beschrieben, wie Sie die CPU-Auslastung (Central Process Unit, Zentrale Prozesseinheit) auf Integrated Service Routern (ISR) aus der Produktfamilie der Serie 4300 lesen.

Voraussetzungen

Anforderungen

Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:

- Cisco IOS® XE

- ISR 43XX

Verwendete Komponenten

Die Informationen in diesem Dokument basieren auf der Hardware- und Softwareversion:

- ISR 4321/K9

- ISR 4331/K9

- ISR 4351/K9

- 03.16.01a.S // 15.5(3)S1a

- 03.16.04b.s // 15.5(3)S4b

- 16.9.7

- 16.12.4

Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.

Architektur

Auf den Plattformen der Cisco Serie ISR 4000 wird Cisco IOS XE mit einer verteilten Softwarearchitektur ausgeführt, auf der ein Linux-Kernel ausgeführt wird, auf dem Cisco IOS® als einer von vielen Linux-Prozessen ausgeführt wird. Cisco IOS wird als Daemon ausgeführt, der als Cisco IOS-Daemon (IOSd) bezeichnet wird.

CPU-Verwendung auf Cisco IOSd

Um die CPU-Auslastung auf IOSd zu überwachen, führen Sie den Befehl show process cpu aus:

#show process cpu

CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 0%

PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process

1           2           8        250  0.00%  0.00%  0.00%   0 Chunk Manager

2           5          18        277  0.07%  0.00%  0.00%   0 Load Meter

3           0           2          0  0.00%  0.00%  0.00%   0 DiagCard4/-1

4           0           1          0  0.00%  0.00%  0.00%   0 Retransmission o

5           0           1          0  0.00%  0.00%  0.00%   0 IPC ISSU Dispatc

Die Ausgabe zeigt zwei Werte für die CPU-Auslastung an. Der erste Wert ist die Gesamtauslastung der CPU und der zweite Wert die Anzahl der an IOSd gesendeten CPUs durch Interrupts:

Die Differenz zwischen der Gesamtanzahl der CPU und der Anzahl der CPUs durch Interrupts entspricht den Werten der CPU, die von Prozessen verbraucht wurde. Um dies zu bestätigen, fügen Sie alle Prozesse, die in den letzten fünf Sekunden verwendet wurden, hinzu:

- CPU-Verbrauch von Prozessen = 1 % - 0 % = 1 % = Alle im Befehl aufgeführten Prozesse CPU-Verbrauch

Führen Sie den Befehl show process cpu sorted aus, um die Prozesse anzuzeigen, die am meisten CPUs verbrauchen:

#show process cpu sorted

CPU utilization for five seconds: 1%/0%; one minute: 0%; five minutes: 0%

PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process

64         103          10      10300  0.33%  0.02%  0.00%   0 Licensing Auto U

83          26         231        112  0.27%  0.00%  0.00%   0 PuntInject Keepa

235         555       48176         11  0.11%  0.09%  0.07%   0 Inline Power

1           2           8        250  0.00%  0.00%  0.00%   0 Chunk Manager

Hinweis: Die Addition aller Prozesse kann zu Gleitkommawerten führen, IOSd rundet das Ergebnis auf die nächste ganze Zahl ab.

CPU-Auslastung nach Datenverkehr

Das Design der ISR4300-Familie für die Weiterleitung von Datenverkehr erfolgt über ein Element, das als QuantumFlow Processor (QFP) bezeichnet wird.

Achtung: QFP wird auf dem ASR1K als ein oder mehrere physische Chips gefunden, auf dem ISR4400 wird die gleiche Funktionalität mit Cavium Octeon-Koprozessoren ausgeführt, auf dem ISR4300 wird die Funktionalität auf bestimmten Kernen der Haupt-Intel-CPU ausgeführt. Sie können sich den QFP der ISR4300-Familie als Software vorstellen, die Pakete weiterleitet.

Um die vom Datenverkehr verbrauchte CPU zu ermitteln, können Sie den Befehl show platform hardware qfp active datapath usage ausführen:

#show platform hardware qfp active datapath utilization

CPP 0: Subdev 0            5 secs        1 min        5 min       60 min

Input:  Priority (pps)            0            0            0            0

(bps)            0            0            0            0

Non-Priority (pps)            3            2            2            1

(bps)         1448          992          992          568

Total (pps)            3            2            2            1

(bps)         1448          992          992          568

Output: Priority (pps)            0            0            0            0

(bps)            0            0            0            0

Non-Priority (pps)            3            2            2            1

(bps)        12216         8024         8024         4576

Total (pps)            3            2            2            1

(bps)        12216         8024         8024         4576

Processing: Load (pct)            0            0            0            1

Der Befehl listet die Ein- und Ausgangs-CPU-Nutzung für Pakete mit und ohne Priorität auf. Die Informationen werden mit Paketen pro Sekunde (PPS) und Bits pro Sekunde (BPS) angezeigt. Die letzte Zeile zeigt die gesamte CPU-Last aufgrund der Paketweiterleitungswerte in Prozent (PCT) an.

Installierte CPU-Kerne

Die Anzahl der installierten CPU-Kerne der ISR4300-Familie hängt vom Modell ab. Um die Anzahl der auf Ihrem Gerät installierten Kerne zu ermitteln, führen Sie den Befehl show processes cpu platform aus:

#show processes cpu platform

CPU utilization for five seconds: 30%, one minute: 29%, five minutes: 29%

Core 0: CPU utilization for five seconds: 13%, one minute: 13%, five minutes: 13%

Core 1: CPU utilization for five seconds:  2%, one minute:  3%, five minutes:  3%

Core 2: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99%

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

1       0      0%      0%      0%  S          1863680  init

2       0      0%      0%      0%  S                0  kthreadd

Oder führen Sie den Befehl show platform software status control-processor aus:

#show platform software status control-processor

<output omitted>

Per-core Statistics

CPU0: CPU Utilization (percentage of time spent)

User:  4.80, System: 10.30, Nice:  0.00, Idle: 84.50

IRQ:  0.40, SIRQ:  0.00, IOwait:  0.00

CPU1: CPU Utilization (percentage of time spent)

User:  2.00, System:  3.40, Nice:  0.00, Idle: 94.59

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

CPU2: CPU Utilization (percentage of time spent)

User:  0.50, System:  0.00, Nice:  0.00, Idle: 99.49

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

CPU3: CPU Utilization (percentage of time spent)

User: 24.72, System: 75.27, Nice:  0.00, Idle:  0.00

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

Führen Sie auf der anderen Seite den Befehl show platform software status control-processor brief aus, und zeigen Sie mit einem der folgenden Befehle die Anzahl der installierten Kerne an:

#show platform software status control-processor brief

<output omitted>

CPU Utilization

Slot  CPU   User System   Nice   Idle    IRQ   SIRQ IOwait

RP0    0   4.30   9.80   0.00  85.90   0.00   0.00   0.00

1   0.79   0.99   0.00  98.20   0.00   0.00   0.00

2   0.50   0.00   0.00  99.50   0.00   0.00   0.00

3  24.60  75.40   0.00   0.00   0.00   0.00   0.00

CPU-Kernverteilung

Beim Design der ISR4300-Familie werden spezifische Kerne für den Paketprozess verwendet. Die Kerne vier bis sieben sind für die Paketverarbeitung auf ISR4331 und 4351 reserviert, während die Kerne zwei und drei für ISR4321 verwendet werden.

Bis einschließlich Cisco IOS XE Version 16.5.x bietet das Hierarchical Queue Framework (HQF) aus Leistungsgründen immer Hot-Spins und wird bei hoher CPU-Auslastung ausgeführt, unabhängig von der Konfiguration oder der Menge des Datenverkehrs, der durch das System läuft. Auf den ISR4300-Plattformen kann dies als hohe CPU-Auslastung auf einem oder mehreren Kernen erscheinen, da die QFP-Software auf der Haupt-CPU ausgeführt wird.

Nach und einschließlich Cisco IOS XE Version 16.6.x wurde jedoch eine Änderung implementiert, sodass diese Plattformen die Threads nicht in eine "Hot-Spin"-Situation versetzen würden. In diesem Fall verteilt sich die CPU-Auslastung stärker über die Kerne.

Um die Hot-Spin-Nutzung anzuzeigen, führen Sie den Befehl show processes cpu platform sorted vor Cisco IOS XE 16.6.x aus:

#show processes cpu platform sorted

CPU utilization for five seconds: 28%, one minute: 29%, five minutes: 29%

Core 0: CPU utilization for five seconds: 12%, one minute: 13%, five minutes: 14%

Core 1: CPU utilization for five seconds:  2%, one minute:  3%, five minutes:  3%

Core 2: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

2541    1955     99%     99%     99%  S       1073807360  qfp-ucode-utah <<< high CPU process

1551     929      7%      7%      7%  S       2038525952  fman_fp_image

Bei einer Architektur mit acht Kernen können Sie dasselbe Ergebnis mit einem anderen Kern beim Hot-Spin vor Cisco IOS XE 16.6.x sehen:

#show processes cpu platform sorted

CPU utilization for five seconds: 15%, one minute: 14%, five minutes: 15%

Core 0: CPU utilization for five seconds:  6%, one minute:  4%, five minutes:  8%

Core 1: CPU utilization for five seconds:  1%, one minute:  0%, five minutes:  2%

Core 2: CPU utilization for five seconds:  9%, one minute: 10%, five minutes:  7%

Core 3: CPU utilization for five seconds:  1%, one minute:  2%, five minutes:  1%

Core 4: CPU utilization for five seconds:  1%, one minute:  1%, five minutes:  1%

Core 5: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 6: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin

Core 7: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

3432    2779     99%     99%     99%  S       1086341120  qfp-ucode-utah <<< high CPU process

2612    1893      7%      7%      7%  S       2038697984  fman_fp_image

26114   25132      4%      5%      5%  R         42803200  hman

Nach der Integration von Cisco IOS XE 16.6.x besteht jedoch eine Lastverteilung zwischen Core 2 und Core 3:

------------------ show process cpu platform sorted ------------------

CPU utilization for five seconds: 31%, one minute: 32%, five minutes: 29%

Core 0: CPU utilization for five seconds:  3%, one minute:  3%, five minutes:  3%

Core 1: CPU utilization for five seconds:  3%, one minute:  2%, five minutes:  2%

Core 2: CPU utilization for five seconds: 39%, one minute: 41%, five minutes: 34% <<< load distributed

Core 3: CPU utilization for five seconds: 84%, one minute: 83%, five minutes: 79% <<< load distributed

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

26939   26344    127%    126%    116%  S       1195311104  qfp-ucode-utah <<< high CPU process

Nach und einschließlich Cisco IOS XE 16.6.x gilt die gleiche Ausgabe wie zuvor, jedoch für die Kerne 4 bis 7:

------------------ show process cpu platform sorted ------------------

CPU utilization for five seconds: 30%, one minute: 24%, five minutes: 27%

Core 0: CPU utilization for five seconds: 41%, one minute: 13%, five minutes: 13%

Core 1: CPU utilization for five seconds: 23%, one minute: 11%, five minutes: 13%

Core 2: CPU utilization for five seconds: 19%, one minute: 10%, five minutes: 12%

Core 3: CPU utilization for five seconds: 38%, one minute: 12%, five minutes: 12%

Core 4: CPU utilization for five seconds: 28%, one minute: 26%, five minutes: 28% <<< load distributed

Core 5: CPU utilization for five seconds: 53%, one minute: 40%, five minutes: 37% <<< load distributed

Core 6: CPU utilization for five seconds: 18%, one minute: 16%, five minutes: 17% <<< load distributed

Core 7: CPU utilization for five seconds: 93%, one minute: 81%, five minutes: 81% <<< load distributed

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

26049    25462    164%    165%    170%  S           394128  qfp-ucode-utah <<< high CPU process

Vorsicht: Wenn Sie ein Problem mit der CPU-Kernauslastung vermuten, öffnen Sie ein Ticket im Technical Assistance Center (TAC), um Unterstützung zu erhalten und die Stabilität des Geräts zu bestätigen.

Best Practices zur CPU-Überwachung

Wenn Sie die spezifischen Befehle für die Datenpfadnutzung oder die IOSd-Nutzung am besten verwenden, kann das Ergebnis der Hauptanzeigebefehle zu falsch positiven Warnungen führen.

Der Befehl zum Überwachen der Datenpfadnutzung lautet:

- show plattform hardware qfp aktive datapath auslastung

Der Befehl zum Überwachen der IOSd-Nutzung lautet:

- Prozess-CPU sortiert anzeigen

Verwenden Sie einen der folgenden Object Identifier (OID), um die IOSd CPU-Nutzung mit dem Simple Network Management Protocol (SNMP) zu überwachen:

- busyPer = IOSd CPU-Auslastungsprozentsatz in den letzten 5 Sekunden

- avgBusy1 = IOSd eine Minute lang exponentiell abfallender gleitender Durchschnitt des prozentualen CPU-Auslastungsgrads

- avgBusy5 = IOSd fünf Minuten exponentiell abklingender gleitender Durchschnitt des prozentualen CPU-Auslastungsgrads