Ce document explique les raisons pour l'utilisation élevée de la CPU en raison d'interruptions et fournit des conseils de dépannage et des directives.
Aucune exigence spécifique n'est associée à ce document.
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
L'utilisation élevée de la CPU à un niveau de priorité d'interruption est principalement due à des paquets pris en charge au niveau de priorité d'interruption. Des interruptions sont générées quand un caractère est produit par la console ou les ports auxiliaires d'un routeur.
Les récepteurs/émetteurs asynchrones universels (UART) sont lents par rapport à la vitesse de traitement du routeur; il est donc peu probable, bien que possible, que la console ou les interruptions auxiliaires puissent entraîner une utilisation élevée de la CPU sur le routeur (à moins que le routeur ait un grand nombre de lignes tty en service).
Il y a plusieurs raisons pour une utilisation élevée du CPU due à des interruptions :
Un chemin de commutation inadéquat est configuré sur le routeur
Il y a un bogue dans le logiciel Cisco IOS® exécuté sur le routeur
Il y a des interfaces de Mode de transfert asynchrone (ATM) actives sur le routeur
Trop de coups de volée sont donnés depuis le PXF vers le processeur de routage (RP)
Pour dépanner ce problème potentiel, vérifiez ce qui suit :
Vérifiez si le routeur exécute Cisco Express Forwarding :
Vérifiez la configuration pour la commande de configuration globale ip cef .
Vérifiez que Cisco Express Forwarding est activé et fonctionne bien en émettant la commande show ip cef summary.
Vérifiez que Cisco Express Forwarding est activé comme chemin de commutation sur toutes les interfaces. Vous pouvez le voir dans le résultat de show cef interface et de show ip interface. Si Cisco Express Forwarding est configuré, mais pas activé sur une interface, cela signifie que l'encapsulation d'interface n'est pas prise en charge dans Cisco Express Forwarding. Vérifiez que Cisco Express Forwarding est opérationnel, c.-à-d. qu'il contrôle si des paquets sont vraiment commutés par le routeur à l'aide de Cisco Express Forwarding en regardant show cef not-cef-switched.
En utilisant la commande show cef drop et la commande show interfaces switching (il s'agit d'une commande cachée que vous pouvez employer pour rechercher des éléments non retrouvés en cache), vérifiez que Cisco Express Forwarding ne dépose pas de paquets. Si c'est le cas, consultez la page de dépannage CEF.
Vérifiez si des interfaces ont de longues listes d'accès configurées.
En règle générale, n'importe quelle liste d'accès avec plus de dix lignes est considérée comme longue.
Le fait de repasser plusieurs fois sur de longues listes d'accès sollicite énormément la CPU. Avec la commutation Netflow, si le flux est déjà dans le cache, vous ne devez plus vérifier la liste d'accès. Dans ce cas, la commutation Netflow serait donc utile. Vous pouvez activer la commutation Netflow en émettant la commande ip route-cache flow.
Notez que si Cisco Express Forwarding et NetFlow sont tous deux configurés sur une interface, Cisco Express Forwarding sera utilisé pour prendre une décision de commutation.
Vérifiez que la commutation Netflow est configurée sur le routeur :
Vérifiez les statistiques en émettant la commande show ip cache flow. Regardez le nombre de nouveaux flux par seconde.
Si Cisco Express Forwarding n'est pas activé, activez-le pour accélérer la décision de commutation.
S'il n'y a aucune longue liste d'accès, essayez de désactiver la commutation Netflow.
Des erreurs d'alignement sont entraînées par un mauvais alignement de lecture et écriture. Par exemple, une lecture à deux bits où l'adresse mémoire n'est pas un multiples pair de deux octets constitue une erreur d'alignement.
Des erreurs d'alignement sont habituellement entraînées par un bogue logiciel. La CPU corrige cette erreur, mais s'il y a beaucoup de corrections à faire, ceci sollicite énormément la CPU. Pour dépanner ce type d'erreur, consultez la section Dépannage des accès erratiques, des erreurs d'alignement et des interruptions intempestives.
Le résultat des commandes show interfaces et show interfaces switching (masquées) fournissent les informations au sujet des interfaces surchargées. Pour saisir le résultat de ces commandes dans un fichier journal pour l'analyser ensuite, suivez les étapes ci-dessous.
Émettez la commande terminal length 0.
Vérifiez le résultat de show interfaces. Examinez la charge et le nombre de throttles sur les interfaces. La charge est une valeur moyenne calculée, par défaut, sur plus de cinq minutes. Pour modifier cet intervalle, émettez la commande load-interval seconds , où les secondes représentent la durée pour laquelle les données sont utilisées pour calculer des statistiques de charge. Utilisez une valeur multiple de 30.
Les throttles sont une bonne indication d'un routeur surchargé. Ils montrent le nombre de fois où le récepteur sur le port a été désactivé, probablement en raison d'une surcharge du tampon ou du processeur. En même temps que l'utilisation élevée de la CPU à un niveau de priorité d'interruption, les throttles indiquent que le routeur est surchargé de trafic.
Vérifiez le résultat de la commande show interfaces switching (masquée) pour voir quel type de trafic (protocole et chemin de commutation) passe par l'interface surchargée. Si certaines interfaces sont trop surchargées de trafic, envisagez de remodeler le flux de trafic dans le réseau ou de mettre à niveau le matériel.
La boucle dans le réseau peut également être une raison pour la surcharge du trafic de routage. Vérifiez la topologie du réseau.
S'il y a une possibilité qu'un seul périphérique génère des paquets à un débit extrêmement élevé et donc surcharge le routeur, vous pouvez déterminer l'adresse MAC de ce périphérique en ajoutant la commande de configuration d'interface ip accounting mac-address {input|output} à la configuration de l'interface surchargée.
La commande show interfaces [ ] mac-accounting affiche les informations collectées. Une fois que l'adresse MAC de l'équipement d'origine a été trouvée, l'adresse IP correspondante peut être recherchée en vérifiant le résultat de la commande show ip arp.
Si vous suspectez un bogue dans la version du logiciel Cisco IOS exécutée sur le routeur, vous pouvez consulter la Boîte à outil de débogage (clients enregistrés seulement) pour voir s'il existe un bogue signalant le même type de symptômes dans un environnement semblable.
Même s'il n'y a aucun trafic, le logiciel continue à contrôler le canal de signalisation associé (CAS), qui utilise des ressources CPU.
Même s'il n'y a aucun trafic, les interfaces ATM envoient la cellule nulle (conformément aux normes ATM) et continuent à utiliser des ressources CPU.
Quand PXF donne un coup de volée à trop de paquets vers le RP, le RP peut devenir surchargé. Vous pouvez comparer la quantité de paquets auxquels un coup de volée a été donné avec la quantité totale de paquets entrants en émettant la commande show pxf accounting summary. Utilisez la même commande pour découvrir pourquoi un coup de volée est donné aux paquets vers le RP. Cela pourrait être dû à un bogue logiciel ou au fait que le trafic n'est pas pris en charge par PXF.
Le profilage de la CPU est une façon de déterminer, avec une faible surcharge, où la CPU passe son temps. Le système fonctionne en échantillonnant l'emplacement du processeur toutes les quatre millisecondes. Le nombre correspondant à cet emplacement est incrémenté dans la mémoire. La cause d'origine de cette utilisation de la CPU sera déterminée par le profilage de la CPU.
Complétez ces étapes afin d'effectuer le profilage du CPU. L'utilisation de la CPU doit être effectuée en cas d'utilisation élevée de la CPU.
Remarque : toutes ces commandes doivent être saisies en mode enable
Capturez le résultat de show region et prenez l'adresse de début, l'adresse de fin et la taille de main : text region
Saisissez le résultat de show memory statistics et vérifiez la taille du plus grand bloc dans la mémoire du processeur.
Effectuez la commande profile task interrupt pour configurer le profilage seulement pour les interruptions.
Comparez la taille de la zone main : text à la taille du plus grand bloc de mémoire processeur disponible. Idéalement, le bloc le plus grand doit être plus grand que le bloc main:text.
Si le plus grand bloc est plus petit que main : text size, alors ajustez la granularité pour vous assurer que le profilage sera en mesure d'obtenir un bloc de mémoire processeur.
Si le bloc le plus grand est plus grand que la zone de texte main : , utilisez une granularité de 4.
Si le bloc le plus grand est plus grand que la moitié de la zone main : text, utilisez une granularité de 8.
Si le bloc le plus grand est plus grand qu'un quart de la zone main : text, utilisez une granularité de 10 ( 16 en hexadécimal).
Remarque : la granularité doit être une puissance de 2 et doit être aussi petite que possible (mais pas inférieure à 4)
Commencez le profilage en effectuant la commande profile
Profile <starting address> <ending address> <granularity value>
L'adresse de début et de fin est déterminée à l'étape 1.
Attendez 5 à 10 minutes
Interrompez le profilage avec la commande profile stop
Saisissez le résultat de show profile terse.
Assurez-vous que la mémoire est libérée en faisant unprofile all
Cette commande est utilisée pour déterminer les chemins de commutation actifs sur des interfaces. Pour plus d'informations sur les chemins de commutation dans le logiciel Cisco IOS, référez-vous au document Configuration des chemins de commutation .
Ce qui suit est un exemple de sortie de la commande de show interfaces switching pour une 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
La sortie indique les chemins de commutation pour tous les protocoles configurés sur l'interface, pour que vous puissiez facilement voir quelle sorte et quel niveau de trafic passe par le routeur. Le tableau ci-dessous explique les différents champs de résultat :
Champ | Définition |
---|---|
Process | Paquets traités. Ceux-ci peuvent être des paquets destinés au routeur, ou des packets pour lesquels il n'y avait aucune entrée dans le cache de commutation rapide. |
Cache misses | Paquets pour lesquels il n'y avait aucune entrée dans le cache de commutation rapide. Le premier paquet pour cette destination (ou flux - selon le type de commutation rapide configuré) sera traité. Tous les paquets suivants seront rapidement commutés, à moins que la commutation rapide soit explicitement désactivée sur l'interface de sortie. |
Fast | Paquets commutés rapidement. La commutation rapide est activée par défaut. |
Auton/SSE | Paquets commutés autonomes, par silicium ou distribués. Disponible seulement sur les routeurs de la gamme Cisco 7000 avec un processeur de commutateur ou un processeur de commutation par silicium (respectivement pour la commutation autonome ou la commutation par silicium), ou sur les routeurs de la gamme Cisco 7500 avec un VIP (pour la commutation distribuée). |
Ce script enregistre les sorties sur flash:CPU_Profile quand l'utilisation du CPU est supérieure à 75% :
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"
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
29-May-2008 |
Première publication |