In dit document worden de redenen voor het hoge CPU-gebruik als gevolg van onderbrekingen toegelicht en worden tips en richtlijnen voor probleemoplossing gegeven.
Er zijn geen specifieke vereisten van toepassing op dit document.
Dit document is niet beperkt tot specifieke software- en hardware-versies.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Raadpleeg Cisco Technical Tips Conventions (Conventies voor technische tips van Cisco) voor meer informatie over documentconventies.
Een hoog CPU-gebruik op interrupt niveau wordt voornamelijk veroorzaakt door pakketten die op interrupt niveau worden afgehandeld. Onderbrekingen worden gegenereerd op elk moment dat een teken wordt uitgevoerd vanuit de console of hulppoorten van een router.
Universele asynchrone ontvanger / zenders (UART's) zijn traag in vergelijking met de verwerkingssnelheid van de router, dus het is onwaarschijnlijk, hoewel mogelijk, dat console- of hulponderbrekingen een hoog CPU-gebruik op de router kunnen veroorzaken (tenzij de router een groot aantal tty-lijnen in gebruik heeft).
Er zijn verschillende redenen voor een hoog CPU-gebruik als gevolg van onderbrekingen:
Er is een bug opgetreden in de Cisco IOS®-software die op de router wordt uitgevoerd
Er zijn actieve Asynchronous Transfer Mode (ATM) interfaces op de router
Te veel pakketten worden gepunteerd van PXF naar de Route Processor (RP)
Om dit mogelijke probleem op te lossen, controleert u het volgende:
Controleer of op de router Cisco Express Forwarding wordt uitgevoerd:
Controleer de configuratie voor de opdracht ip cef global configuration.
Controleer of Cisco Express Forwarding is ingeschakeld en werkt door de opdracht show ip cef summary uit te geven.
Controleer of Cisco Express Forwarding is ingeschakeld als schakelpad op alle interfaces. U kunt dit zien in show cef interface en toon ip interface uitvoer. Als Cisco Express Forwarding is geconfigureerd, maar niet is ingeschakeld op een interface, betekent dit dat de inkapseling van de interface niet wordt ondersteund in Cisco Express Forwarding. Controleer of Cisco Express Forwarding operationeel is, dat wil zeggen, controleer of pakketten echt door de router zijn geschakeld met behulp van Cisco Express Forwarding door te kijken naar de show cef niet-cef-geschakelde server.
Met behulp van de opdracht show cef drop en de opdracht show interfaces switching (dit is een verborgen opdracht die u kunt gebruiken om te zoeken naar cache missers), controleren of Cisco Express Forwarding is niet het laten vallen van pakketten. Als dit het geval is, raadpleegt u de pagina Problemen oplossen met CEF.
Controleer of op een van de interfaces lange toegangslijsten zijn geconfigureerd.
Als algemene vuistregel geldt dat een toegangslijst met meer dan tien regels lang wordt geacht.
Herhaaldelijk over lange toegangslijsten gaan is zeer CPU-intensief. Met NetFlow switching hoeft u, als de stroom al in de cache zit, de toegangslijst niet meer te controleren. Dus in dit geval zou NetFlow-switching nuttig zijn. U kunt NetFlow-switching inschakelen door de opdracht IP-routecache-flow uit te voeren.
Als Cisco Express Forwarding en NetFlow beide op een interface zijn geconfigureerd, wordt Cisco Express Forwarding gebruikt om een overstapbeslissing te nemen.
Controleer of NetFlow-switching is geconfigureerd op de router:
Controleer de statistieken door de opdracht IP-cachestroom tonen uit te geven. Kijk naar het aantal nieuwe stromen per seconde.
Als Cisco Express Forwarding niet is ingeschakeld, schakelt u Cisco Express Forwarding in om de switchbeslissing te versnellen.
Als er geen lange toegangslijsten zijn, probeer dan NetFlow-switching uit te schakelen.
Uitlijningsfouten worden veroorzaakt door verkeerd uitgelijnde lees- en schrijfbewerkingen. Bijvoorbeeld, een twee-byte lezen waar het geheugenadres is niet een zelfs meerdere van twee bytes is een uitlijning fout.
Uitlijningsfouten worden meestal veroorzaakt door een softwarebug. De CPU corrigeert deze fout, maar als er veel correcties moeten worden uitgevoerd, wordt dit CPU-intensief. Zie Problemen oplossen met oneigenlijke toegang, uitlijningsfouten en oneigenlijke onderbrekingen voor informatie over het oplossen van dit soort fouten.
De uitvoer van de tonen interfaces en tonen interfaces schakelen (verborgen) opdrachten informatie over welke interfaces zijn overbelast. Als u de uitvoer van deze opdrachten in een logbestand wilt vastleggen voor latere analyse, volgt u de onderstaande stappen.
Geef de opdracht Terminallengte 0 op.
Controleer de uitvoer van show interfaces. Onderzoek de belasting en het aantal gashendels op interfaces. De belasting is een gemiddelde waarde die standaard over vijf minuten wordt berekend. Als u dit interval wilt wijzigen, geeft u de opdracht seconden voor het belastingsinterval op, waarbij de seconden de tijdsduur weergeven waarvoor gegevens worden gebruikt om belastingsstatistieken te berekenen. Gebruik een waarde die een veelvoud van 30 is.
Gashendels zijn een goede indicatie van een overbelaste router. Ze tonen het aantal keren dat de ontvanger op de poort is uitgeschakeld, mogelijk als gevolg van buffer- of processoroverbelasting. In combinatie met een hoog CPU-gebruik op een interrupt niveau, geven throttles aan dat de router overbelast is met verkeer.
Controleer de uitvoer van de opdracht show interfaces switching (hidden) om te zien wat voor soort verkeer (protocol en schakelpad) door de overbelaste interface gaat. Als sommige interfaces te overbelast zijn met verkeer, overweeg dan om de verkeersstroom in het netwerk opnieuw te ontwerpen of de hardware te upgraden.
De netwerklus kan ook een reden zijn voor de overbelasting van het verkeer. Controleer uw netwerktopologie.
Als er een mogelijkheid is dat een enkel apparaat pakketten genereert met een extreem hoge snelheid en dus de router overbelast, kunt u het MAC-adres van dat apparaat bepalen door het IP-boekhoudkundige mac-adres {input|output} interface-configuratiecommando toe te voegen aan de configuratie van de overbelaste interface.
De opdracht interfaces weergeven [ ] mac-accounting geeft de verzamelde informatie weer. Zodra het MAC-adres van het bronapparaat is gevonden, kan het bijbehorende IP-adres worden gevonden door de uitvoer van de opdracht show ip arp te controleren.
Als u een bug vermoedt in de Cisco IOS-softwareversie die op de router wordt uitgevoerd, kunt u de Bug Toolkit controleren (alleen geregistreerde klanten) voor een bug die vergelijkbare symptomen in een vergelijkbare omgeving meldt.
Zelfs als er geen verkeer is, blijft software Channel-Associated Signaling (CAS) bewaken, waarbij CPU-bronnen worden gebruikt.
Zelfs als er geen verkeer is, verzenden de ATM-interfaces null cell (volgens ATM-normen) en blijven ze CPU-bronnen gebruiken.
Wanneer PXF te veel pakketten naar de RP punteert, kan de RP overbelast raken. U kunt de hoeveelheid punted pakketten vergelijken met de totale hoeveelheid inkomende pakketten door de show pxf boekhoudkundige samenvatting opdracht. Gebruik dezelfde opdracht om erachter te komen waarom de pakketten op de RP worden gepunteerd. Dit kan een softwarebug zijn of verkeer wordt niet ondersteund door PXF.
CPU-profilering is een manier om te bepalen waar de CPU zijn tijd doorbrengt. Het systeem werkt door elke vier milliseconden de locatie van de processor te bemonsteren. De telling voor die locatie in het geheugen wordt verhoogd. De hoofdoorzaak van dit CPU-gebruik wordt bepaald door CPU-profilering.
Voer deze stappen uit om CPU-profilering uit te voeren. CPU-gebruik moet worden uitgevoerd wanneer u een hoog CPU-gebruik ervaart.
Opmerking: Al deze opdrachten moeten worden getypt in de activeringsmodus
Leg de uitvoer van het weergavegebied vast en neem het beginadres, het eindadres en de grootte van het hoofdtekstgebied
Leg de uitvoer van showgeheugenstatistieken vast en controleer de grootte van het grootste blok in het processorgeheugen.
De profieltaak onderbreken om alleen profilering voor onderbrekingen te configureren.
Vergelijk de grootte van het hoofd: tekstgebied met de grootte van het grootste blok gratis processorgeheugen. Idealiter zou het grootste blok groter moeten zijn dan de hoofdtekst: tekst.
Als het grootste blok kleiner is dan de hoofdtekst: tekstgrootte, pas dan de granulariteit aan om ervoor te zorgen dat de profilering een blok processorgeheugen kan krijgen.
Als het grootste blok groter is dan het hoofdtekstgebied, gebruikt u een granulariteit van 4.
Als het grootste blok groter is dan de helft van het hoofdtekstgebied, gebruikt u een granulariteit van 8.
Als het grootste blok groter is dan een kwart van het hoofdtekstgebied, gebruikt u een granulariteit van 10 ( 16 in hexadecimaal).
Opmerking: Granulariteit moet een kracht van 2 zijn en moet zo klein mogelijk zijn (maar niet kleiner dan 4)
Profilering starten door profiel uit te voeren
Profile <starting address> <ending address> <granularity value>
Het startadres en het eindadres worden bepaald aan de hand van stap 1.
Wacht 5 tot 10 minuten
Profilering stoppen door profielstop uit te voeren
Leg de uitvoer van de profielreeks vast.
Zorg ervoor dat het geheugen wordt vrijgemaakt door alle profielen te verwijderen
Deze opdracht wordt gebruikt voor het bepalen van actieve schakelpaden op interfaces. Raadpleeg Switching Paths configureren voor meer informatie over switchpaden in Cisco IOS-software.
Het volgende is een voorbeelduitvoer van de opdracht Show Interfaces Switching voor één interface:
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
De uitvoer vermeldt de schakelpaden voor alle protocollen die op de interface zijn geconfigureerd, zodat u gemakkelijk kunt zien wat voor soort en de hoeveelheid verkeer door de router gaat. In de volgende tabel worden de uitvoervelden uitgelegd:
Veld | Definitie |
---|---|
procédé | Verwerkte pakketten. Dit kunnen pakketten zijn die bestemd zijn voor de router, of pakketten waarvoor er geen invoer was in de snel schakelende cache. |
Cache mist | Pakketten waarvoor geen invoer was in de cache voor snelle switching. Het eerste pakket voor deze bestemming (of flow - afhankelijk van het type snelle switching dat is geconfigureerd) wordt verwerkt. Alle volgende pakketten worden snel geschakeld, tenzij snel schakelen expliciet is uitgeschakeld op de uitgaande interface. |
snel | Snel geschakelde pakketten. Snel schakelen is standaard ingeschakeld. |
Auton/SSE | Autonoom geschakelde, siliciumgeschakelde of gedistribueerde geschakelde pakketten. Alleen beschikbaar op Cisco-routers uit de 7000-reeks met een Switch-processor of Silicon Switch-processor (voor respectievelijk autonoom schakelen of silicium schakelen), of op Cisco-routers uit de 7500-reeks met een VIP (voor gedistribueerde switching). |
Dit script slaat de uitgangen op flash: CPU_Profile wanneer het CPU-gebruik meer dan 75% is:
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"
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
12-Mar-2003
|
Eerste vrijgave |