In diesem Dokument werden die Gründe für eine hohe CPU-Auslastung aufgrund von Unterbrechungen erläutert. Außerdem finden Sie 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 Interrupt-Ebene wird hauptsächlich durch Pakete verursacht, die auf Interrupt-Ebene verarbeitet werden. Interrupts werden jedes Mal generiert, wenn ein Zeichen von den Konsolen- oder AUX-Ports eines Routers ausgegeben wird.
Universal Asynchronous Receiver/Transmitter (UARTs) sind im Vergleich zur Verarbeitungsgeschwindigkeit des Routers langsam, sodass es unwahrscheinlich (wenn auch möglich) ist, dass Konsolen- oder Hilfs-Interrupts eine hohe CPU-Auslastung auf dem Router verursachen können (es sei denn, der Router hat eine große Anzahl von tty-Leitungen im Einsatz).
Für eine hohe CPU-Auslastung aufgrund von Interrupts gibt es mehrere Gründe:
Auf dem Router ist ein ungeeigneter Switching-Pfad konfiguriert.
Ein Fehler in der Cisco IOS®-Software, die auf dem Router ausgeführt wird.
Der Router verfügt über aktive ATM-Schnittstellen (Asynchronous Transfer Mode).
Es werden zu viele Pakete von PXF an den Routingprozessor (RP) gesendet.
Um dieses potenzielle Problem zu beheben, überprüfen Sie Folgendes:
Prüfen Sie, ob auf dem Router Cisco Express Forwarding ausgeführt wird:
Überprüfen Sie die Konfiguration für den globalen Konfigurationsbefehl ip cef.
Vergewissern Sie sich, dass Cisco Express Forwarding aktiviert ist und funktioniert, indem Sie den Befehl show ip cef summary ausführen.
Überprüfen Sie, ob Cisco Express Forwarding als Switching-Pfad auf allen Schnittstellen aktiviert ist. Sie können dies in show cef interface und show ip interface output sehen. Wenn Cisco Express Forwarding konfiguriert, aber auf einer Schnittstelle nicht aktiviert ist, bedeutet dies, dass die Schnittstellenverkapselung in Cisco Express Forwarding nicht unterstützt wird. Überprüfen Sie mithilfe von Cisco Express Forwarding, ob Cisco Express Forwarding tatsächlich funktioniert, d. h. ob Pakete tatsächlich über den Router weitergeleitet werden. Gehen Sie dazu zu show cef not-cef-switched .
Stellen Sie mit dem Befehl show cef drop und dem Befehl show interfaces switching (ein ausgeblendeter Befehl, mit dem Sie nach Cache-Fehlern suchen können) sicher, dass Cisco Express Forwarding keine Pakete verwirft. Wenn dies der Fall ist, sehen Sie sich die CEF-Fehlerbehebungsseite 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.
Das wiederholte Durchsuchen langer 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 nützlich. Sie können NetFlow-Switching aktivieren, indem Sie den Befehl ip route-cache flow eingeben.
Wenn Cisco Express Forwarding und NetFlow beide für eine Schnittstelle konfiguriert sind, wird Cisco Express Forwarding verwendet, um eine Switching-Entscheidung zu treffen.
Überprüfen Sie, ob NetFlow-Switching auf dem Router konfiguriert ist:
Überprüfen Sie die Statistiken, indem Sie den Befehl show ip cache flow eingeben. Die Anzahl neuer Flows pro Sekunde.
Wenn Cisco Express Forwarding nicht aktiviert ist, können Sie Cisco Express Forwarding aktivieren, um die Switching-Entscheidung zu beschleunigen.
Wenn es keine langen Zugriffslisten gibt, versuchen Sie, NetFlow-Switching zu deaktivieren.
Ausrichtungsfehler werden durch falsch ausgerichtete Lese- und Schreibvorgänge verursacht. Ein Ausrichtungsfehler ist beispielsweise ein Zwei-Byte-Lesevorgang, bei dem die Speicheradresse kein gerades Vielfaches von zwei Bytes ist.
Ausrichtungsfehler 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 dieser Art von Fehlern finden Sie unter Fehlerbehebung bei unvollständigen Zugriffen, Ausrichtungsfehlern und unvollständigen Unterbrechungen.
Die Ausgabe der Befehle show interfaces und show interfaces switching (versteckt) liefert Informationen darüber, welche Schnittstellen überlastet sind. Führen Sie die folgenden Schritte aus, um die Ausgabe dieser Befehle in einer Protokolldatei für eine spätere Analyse zu erfassen.
Führen Sie den Befehl terminal length 0 aus.
Überprüfen Sie die Ausgabe von show interfaces . Prüfen Sie die Last und die Anzahl der Drosseln an den 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 seconds (Auslastungsintervall-Sekunden) ein, wobei die Sekunden die Zeitdauer darstellen, für die Daten zum Berechnen von Auslastungsstatistiken verwendet werden. Verwenden Sie einen Wert, der ein Vielfaches von 30 ist.
Drosseln sind ein gutes Zeichen für einen überlasteten Router. Sie zeigen an, wie oft der Empfänger am Port deaktiviert wurde, möglicherweise aufgrund einer Puffer- oder Prozessorüberlastung. In Verbindung mit einer hohen CPU-Auslastung auf Interrupt-Ebene weisen Drosselungen darauf hin, dass der Router mit Datenverkehr überlastet ist.
Überprüfen Sie die Ausgabe des Befehls show interfaces switching (versteckt), um festzustellen, welche Art von Datenverkehr (Protokoll und Switching-Pfad) durch die überladene Schnittstelle geleitet wird. Wenn einige Schnittstellen zu stark mit Datenverkehr überlastet sind, sollten Sie den Datenverkehrsfluss im Netzwerk umgestalten oder ein Hardware-Upgrade in Betracht ziehen.
Die Netzwerkschleife kann auch ein Grund für die Datenverkehrsüberlastung sein. Überprüfen der Netzwerktopologie
Wenn die Möglichkeit besteht, dass ein einzelnes Gerät Pakete mit einer extrem hohen Rate generiert und dadurch den Router überlastet, können Sie die MAC-Adresse dieses Geräts ermitteln, indem Sie der Konfiguration der überlasteten Schnittstelle den Konfigurationsbefehl 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 durch Überprüfen der Ausgabe des Befehls show ip arp gefunden werden.
Wenn Sie vermuten, dass ein Fehler in der Cisco IOS-Softwareversion des Routers vorliegt, können Sie das Bug Toolkit (nur für registrierte Kunden) auf einen Fehler überprüfen, der ähnliche Symptome in einer ähnlichen Umgebung meldet.
Selbst wenn kein Datenverkehr übertragen wird, überwacht die Software weiterhin die Channel-gebundene Signalisierung (Channel Associated Signaling, CAS), die CPU-Ressourcen verwendet.
Auch wenn kein Datenverkehr vorhanden ist, senden die ATM-Schnittstellen (gemäß ATM-Standards) eine Nullzelle und verwenden weiterhin CPU-Ressourcen.
Wenn PXF zu viele Pakete an den RP sendet, kann der RP überlastet werden. Sie können die Anzahl der gesendeten Pakete mit der Gesamtzahl der eingehenden Pakete vergleichen, indem Sie den Befehl show pxf accounting summary eingeben. Verwenden Sie denselben Befehl, um herauszufinden, warum die Pakete an den RP gesendet werden. Hierbei kann es sich um einen Softwarefehler handeln, oder der Datenverkehr wird von PXF nicht unterstützt.
Bei der CPU-Profilerstellung wird mit geringem Overhead ermittelt, wo die CPU ihre Zeit verbringt. Das System tastet den Prozessorstandort alle vier Millisekunden ab. Der Zähler für diesen Speicherort im Arbeitsspeicher wird erhöht. Die Ursache für diese CPU-Auslastung wird durch die CPU-Profilerstellung bestimmt.
Führen Sie diese Schritte aus, um die CPU-Profilerstellung durchzuführen. Die CPU-Auslastung ist bei hoher CPU-Auslastung gegeben.
Hinweis: Alle diese Befehle müssen im privilegierten Modus eingegeben werden.
Erfassen Sie die Ausgabe von show region und nehmen Sie die Startadresse, die Endadresse und die Größe von main:text region
Erfassen Sie die Ausgabe von show memory statistics und überprüfen Sie die Größe des größten Blocks im Prozessorspeicher.
Profilaufgabenunterbrechung durchführen, um die Profilerstellung nur für Unterbrechungen zu konfigurieren.
Vergleichen Sie die Größe des Bereichs main:text mit der Größe des größten freien Prozessorspeichers. Idealerweise sollte der größte Block größer als der Haupttext sein.
Wenn der größte Block kleiner als die Größe main:text ist, passen Sie die Genauigkeit an, um sicherzustellen, dass die Profilerstellung einen Block Prozessorspeicher erhalten kann.
Wenn der größte Block größer als der Haupttextbereich ist, verwenden Sie eine Genauigkeit von 4.
Wenn der größte Block größer als die Hälfte des Bereichs main:text ist, verwenden Sie eine Genauigkeit von 8.
Wenn der größte Block größer als ein Viertel des Bereichs main:text ist, verwenden Sie eine Genauigkeit von 10 (16 im Hexadezimalformat).
Hinweis: Die Granularität muss eine Potenz von 2 sein und sollte so klein wie möglich (aber nicht kleiner als 4) sein.
Profilerstellung durch Profilerstellung starten
Profile <starting address> <ending address> <granularity value>
Die Start- und die Endadresse werden aus Schritt 1 ermittelt.
5 bis 10 Minuten warten
Profilerstellung durch Profilstopp beenden
Erfassen Sie die Ausgabe von show profile terse.
Stellen Sie sicher, dass der Speicher freigegeben wird, indem Sie alle Profile aufheben.
Dieser Befehl wird zum Bestimmen der aktiven Switching-Pfade an Schnittstellen verwendet. Weitere Informationen zu Switching-Pfaden in der Cisco IOS-Software finden Sie unter Konfigurieren von Switching-Pfaden .
Es folgt 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
Die Ausgabe listet die Switching-Pfade für alle auf der Schnittstelle konfigurierten Protokolle auf, sodass Sie leicht sehen können, welche Art und wie viel Datenverkehr durch den Router fließt. In der folgenden Tabelle werden die Ausgabefelder erläutert:
Feld | Definition |
---|---|
Prozess | Verarbeitete Pakete. Dabei kann es sich um Pakete handeln, die für den Router bestimmt sind, oder um Pakete, für die kein Eintrag im Fast Switching-Cache vorhanden war. |
Cache-Fehler | Pakete, für die kein Eintrag im Fast Switching Cache vorhanden war. Das erste Paket für dieses Ziel (oder Fluss - je nach konfiguriertem Fast Switching-Typ) wird verarbeitet. Alle nachfolgenden Pakete werden per Fast-Switching übertragen, es sei denn, das Fast-Switching ist auf der Ausgangsschnittstelle explizit deaktiviert. |
Schnell | Schnell geschaltete Pakete Fast Switching ist standardmäßig aktiviert. |
Auton/SSE | Autonome Switched, Silicon Switched oder Distributed Switched Packets. Nur verfügbar auf Cisco Routern der Serie 7000 mit Switch-Prozessor oder Silicon Switch-Prozessor (für autonomes Switching bzw. Silizium-Switching) oder auf Cisco Routern der Serie 7500 mit VIP (für verteiltes Switching). |
Dieses Skript speichert die Ausgaben unter 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 |