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:
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 verschwindend, gleitender Durchschnitt des prozentualen CPU-Auslastungsgrads
- avgBusy5 = IOSd fünf Minuten exponentiell abklingender gleitender Durchschnitt des prozentualen CPU-Auslastungsgrads