Dieses Dokument erläutert die Gründe für eine hohe CPU-Auslastung aufgrund von Unterbrechungen und enthält Tipps und Richtlinien zur Fehlerbehebung.
Es gibt keine spezifischen Anforderungen für dieses Dokument.
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
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 Netz Live ist, überprüfen Sie, ob Sie die mögliche Auswirkung jedes möglichen Befehls verstehen.
Weitere Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).
Die hohe CPU-Auslastung auf Unterbrechungsebene wird hauptsächlich durch Pakete verursacht, die auf Unterbrechungsebene behandelt werden. Bei der Ausgabe eines Zeichens über die Konsolen- oder AUX-Ports eines Routers werden Unterbrechungen generiert.
Universal Asynchronous Receiver/Transmitter (UARTs) sind im Vergleich zur Verarbeitungsgeschwindigkeit des Routers langsam. Es ist daher unwahrscheinlich, dass Konsolen- oder AUX-Interrupts eine hohe CPU-Auslastung auf dem Router verursachen können (es sei denn, der Router verfügt über eine große Anzahl von "tty Line").
Es gibt mehrere Gründe für eine hohe CPU-Auslastung aufgrund von Interrupts:
Auf dem Router wird ein ungeeigneter Switching-Pfad konfiguriert.
In der Cisco IOS®-Software, die auf dem Router ausgeführt wird, liegt ein Fehler vor.
Auf dem Router befinden sich aktive ATM-Schnittstellen (Asynchronous Transfer Mode)
Es werden zu viele Pakete von PXF an den Route Processor (RP) gestrafft.
Um dieses potenzielle Problem zu beheben, überprüfen Sie Folgendes:
Überprüfen Sie, ob auf dem Router Cisco Express Forwarding ausgeführt wird:
Überprüfen Sie die Konfiguration für den globalen Konfigurationsbefehl ip cef.
Überprüfen Sie, ob Cisco Express Forwarding aktiviert ist und funktioniert, indem Sie den Befehl show ip cef summary verwenden.
Überprüfen Sie, ob Cisco Express Forwarding als Switching-Pfad für alle Schnittstellen aktiviert ist. Sie können dies in der Ausgabe der show cef-Schnittstelle und der show ip interface sehen. Wenn die Cisco Express Forwarding-Funktion konfiguriert, aber nicht für eine Schnittstelle aktiviert ist, bedeutet dies, dass die Kapselung der Schnittstelle in der Cisco Express Forwarding nicht unterstützt wird. Überprüfen Sie, ob die Cisco Express Forwarding funktioniert, d. h. ob Pakete tatsächlich über den Router mit Cisco Express Forwarding weitergeleitet werden. Verwenden Sie hierzu den Befehl show cef not-cef switching.
Mit dem Befehl show cef drop und dem Befehl show interfaces switching (dies ist ein versteckter Befehl, mit dem Sie nach Cache-Fehlern suchen können) stellen Sie sicher, dass Cisco Express Forwarding keine Pakete verwirft. Wenn dies der Fall ist, sehen Sie sich die Seite zur CEF-Fehlerbehebung an.
Überprüfen Sie, ob für eine der Schnittstellen lange Zugriffslisten konfiguriert sind.
Als allgemeine Faustregel gilt jede Zugriffsliste mit mehr als zehn Leitungen als lang.
Die wiederholte Bearbeitung von langen Zugriffslisten ist sehr CPU-intensiv. Wenn sich der Datenfluss bei NetFlow-Switching bereits im Cache befindet, müssen Sie die Zugriffsliste nicht mehr überprüfen. In diesem Fall wäre NetFlow-Switching also hilfreich. Sie können NetFlow-Switching aktivieren, indem Sie den Befehl ip route-cache flow (ip route-cache-Fluss) eingeben.
Wenn Cisco Express Forwarding und NetFlow beide auf einer Schnittstelle konfiguriert sind, wird Cisco Express Forwarding für Switching-Entscheidungen verwendet.
Überprüfen Sie, ob das NetFlow-Switching auf dem Router konfiguriert ist:
Überprüfen Sie die Statistiken, indem Sie den Befehl show ip cache flow ausführen. Sehen Sie sich die Anzahl der neuen Datenflüsse pro Sekunde an.
Wenn Cisco Express Forwarding nicht aktiviert ist, aktivieren Sie Cisco Express Forwarding, um die Switching-Entscheidung zu beschleunigen.
Wenn keine langen Zugriffslisten vorhanden sind, versuchen Sie, das NetFlow-Switching zu deaktivieren.
Ausrichtungsfehler werden durch falsch ausgerichtete Lese- und Schreibvorgänge verursacht. Ein 2-Byte-Lesevorgang, bei dem die Speicheradresse nicht einmal ein Vielfaches von zwei Bytes ist, ist beispielsweise ein Alignment-Fehler.
Alignment-Fehler werden normalerweise durch einen Softwarefehler verursacht. Die CPU korrigiert diesen Fehler, aber wenn es viele Korrekturen gibt, wird dies CPU-intensiv. Informationen zur Fehlerbehebung bei diesem Fehlertyp finden Sie unter Fehlerbehebung bei unerwünschten Zugriffen, Ausrichtungsfehlern und Funkstörungen.
Die Ausgabe der Befehle show interfaces und show interfaces switching (ausgeblendet) liefern Informationen darüber, welche Schnittstellen überladen werden. So erfassen Sie die Ausgabe dieser Befehle in einer Protokolldatei zur späteren Analyse:
Geben Sie den Befehl terminal length 0 (Terminallänge 0) ein.
Überprüfen Sie die Ausgabe der Schnittstellen anzeigen. Überprüfen Sie die Auslastung und die Anzahl der Kacheln an Schnittstellen. Die Last ist ein Durchschnittswert, der standardmäßig über fünf Minuten berechnet wird. Um dieses Intervall zu ändern, geben Sie den Befehl load-interval-Sekunden aus, wobei die Sekunden die Zeitdauer darstellen, für die Daten zur Berechnung von Laststatistiken verwendet werden. Verwenden Sie einen Wert, der ein Vielfaches von 30 ist.
Throttles sind ein guter Hinweis auf einen überlasteten Router. Sie zeigen an, wie oft der Empfänger auf dem Port deaktiviert wurde, möglicherweise aufgrund einer Puffer- oder Prozessorüberlastung. Zusammen mit einer hohen CPU-Auslastung auf Unterbrechungsebene weisen Threads darauf hin, dass der Router mit Datenverkehr überlastet ist.
Überprüfen Sie die Ausgabe des Befehls show interfaces switching (ausgeblendet), um zu sehen, welche Art von Datenverkehr (Protokoll und Switching-Pfad) die überladene Schnittstelle durchläuft. Wenn einige Schnittstellen zu stark mit Datenverkehr überlastet sind, ziehen Sie eine Umgestaltung des Datenverkehrsflusses im Netzwerk oder ein Hardware-Upgrade in Betracht.
Die Netzwerkschleife kann auch ein Grund für die Datenverkehrsüberlastung sein. Überprüfen Sie die Netzwerktopologie.
Wenn es möglich ist, dass ein einzelnes Gerät Pakete mit einer extrem hohen Geschwindigkeit generiert und somit den Router überlastet, können Sie die MAC-Adresse dieses Geräts bestimmen, indem Sie der Konfiguration der überladenen Schnittstelle den Schnittstellenkonfigurationsbefehl ip accounting mac-address {input|output} hinzufügen.
Der Befehl show interfaces [ ] mac-accounting zeigt die erfassten Informationen an. Sobald die MAC-Adresse des Quellgeräts gefunden wurde, kann die entsprechende IP-Adresse gefunden werden, indem die Ausgabe des Befehls show ip arp überprüft wird.
Wenn Sie einen Fehler in der Cisco IOS-Softwareversion vermuten, die auf dem Router ausgeführt wird, können Sie das Bug Toolkit (nur registrierte Kunden) auf einen Fehler überprüfen, der ähnliche Symptome in einer ähnlichen Umgebung meldet.
Auch wenn kein Datenverkehr vorhanden ist, überwacht die Software weiterhin Channel-Associated Signaling (CAS), das CPU-Ressourcen nutzt.
Auch wenn kein Datenverkehr vorhanden ist, senden die ATM-Schnittstellen Nullzellen (gemäß ATM-Standards) und verwenden weiterhin CPU-Ressourcen.
Wenn PXF zu viele Pakete an den RP sendet, wird der RP möglicherweise überladen. Sie können die Anzahl der ausgeschriebenen Pakete mit der Gesamtanzahl der eingehenden Pakete vergleichen, indem Sie den Befehl show pxf accounting summary (Zusammenfassung anzeigen) eingeben. Verwenden Sie denselben Befehl, um herauszufinden, warum die Pakete an den RP gesendet werden. Dies kann entweder ein Softwarefehler sein, oder der Datenverkehr wird von PXF nicht unterstützt.
Die CPU-Profilerstellung ist eine Methode zur Ermittlung der CPU-Auslastung mit geringem Overhead. Das System wählt alle vier Millisekunden die Prozessorposition aus. Die Anzahl für diesen Speicherort im Speicher wird erhöht. Die Ursache für diese CPU-Auslastung wird durch CPU Profiling bestimmt.
Führen Sie diese Schritte aus, um die CPU-Profilerstellung durchzuführen. Die CPU-Auslastung wurde bei hoher CPU-Auslastung erreicht.
Hinweis: Alle diese Befehle müssen im Aktivierungsmodus eingegeben werden.
Erfassen Sie die Ausgabe des Anzeigebereichs, und verwenden Sie die Startadresse, die Endadresse und die Größe des Haupt-Textbereichs.
Erfassen Sie die Ausgabe von Arbeitsspeicherstatistiken und überprüfen Sie die Größe des größten Speicherblocks im Prozessorspeicher.
Führen Sie eine Profilaufgabenunterbrechung durch, um die Profilerstellung nur für Interrupts zu konfigurieren.
Vergleichen Sie die Größe des Haupt-Textbereichs mit der Größe des größten freien Prozessorspeichers. Im Idealfall sollte der größte Block größer sein als der main:text.
Wenn der größte Block kleiner ist als main:text size, passen Sie die Granularität an, um sicherzustellen, dass die Profilerstellung einen Block des Prozessorspeichers abrufen kann.
Wenn der größte Block größer als der Haupt-Textbereich ist, verwenden Sie die Granularität von 4.
Wenn der größte Block größer als die Hälfte des Haupt-Textbereichs ist, verwenden Sie die Granularität von 8.
Wenn der größte Block größer als ein Viertel des Haupt-Textbereichs ist, verwenden Sie die Granularität von 10 (16 im hexadezimalen Format).
Hinweis: Die Granularität muss eine Stärke von 2 haben und so klein wie möglich sein (jedoch nicht kleiner als 4).
Erstellen von Profilen mithilfe eines Profils
Profile <starting address> <ending address> <granularity value>
Die Start- und die Endadresse werden aus Schritt 1 bestimmt.
5 bis 10 Minuten warten
Stoppen der Profilerstellung durch Anhalten des Profils
Erfassen Sie die Ausgabe von Anzeigeprofilterien.
Stellen Sie sicher, dass der Speicher freigegeben wird, indem Sie alle Profile aus dem Profil entfernen
Dieser Befehl wird zur Bestimmung aktiver Switching-Pfade an Schnittstellen verwendet. Weitere Informationen zu Switching-Pfaden in der Cisco IOS-Software finden Sie unter Konfigurieren von Switching-Pfaden.
Nachfolgend finden Sie eine Beispielausgabe des Befehls show interfaces switching für eine Schnittstelle:
RouterA#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
In der Ausgabe werden die Switching-Pfade für alle Protokolle aufgelistet, die auf der Schnittstelle konfiguriert sind. So können Sie leicht erkennen, welche Art und wie viel Datenverkehr der Router durchläuft. In der folgenden Tabelle werden die Ausgabefelder erläutert:
Feld | Definition |
---|---|
Prozess | Verarbeitete Pakete. Dies können Pakete sein, die für den Router bestimmt sind, oder Pakete, für die kein Eintrag im schnellen Switching-Cache vorhanden war. |
Cache-Fehler | Pakete, für die kein Eintrag im schnellen Switching-Cache vorhanden war. Das erste Paket für dieses Ziel (oder Flow - abhängig vom konfigurierten Typ des Fast Switching) wird verarbeitet. Alle nachfolgenden Pakete werden schnell geswitcht, es sei denn, das schnelle Switching wird auf der ausgehenden Schnittstelle explizit deaktiviert. |
Schnell | Schnell geswitchte Pakete: Fast Switching ist standardmäßig aktiviert. |
Auton/SSE | Autonomous Switched, Silizium Switched oder Distributed Switched Packets. Nur für Cisco Router der Serie 7000 mit Switch-Prozessor oder Silicon Switch-Prozessor (für autonomes Switching bzw. Silizium-Switching) oder für Cisco Router der Serie 7500 mit VIP (für verteiltes Switching) verfügbar. |
Dieses Skript speichert die Ausgaben für flash:CPU_Profile, wenn die CPU-Auslastung mehr als 75 % beträgt:
service internal event manager applet High_CPU event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.6 get-type next entry-opge entry-val 75 exit-time 10 poll-interval 5 action 0.1 syslog msg "CPU Utilization is high" action 0.2 cli command "enable" action 0.4 cli command "show log | append flash:CPU_Profile.txt" action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt" action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt" action 1.1 cli command "configure terminal" action 1.2 cli command "profile xxxxxxx yyyyyyyyZ" action 1.3 cli command "profile start" action 2.3 syslog msg "Entering TCLSH" action 2.4 cli command "tclsh" action 2.5 cli command "after 240000" action 2.6 cli command "exit" action 2.9 syslog msg "Exiting TCLSH" action 3.0 cli command "profile stop" action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt" action 3.2 cli command "clear profile" action 3.3 cli command "unprofile all" action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..." action 4.2 cli command "end"
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
29-May-2008 |
Erstveröffentlichung |