Pour les partenaires
Vous êtes déjà partenaire?
ConnexionAvez-vous un compte?
Dans la documentation de ce produit, les auteurs s‘efforcent d‘utiliser un langage exempt de préjugés. Aux fins de cet ensemble de documents, l’expression « sans préjugés » est définie comme un langage sans discrimination fondée sur l’âge, le handicap, le sexe, l’identité raciale, l’identité ethnique, l’orientation sexuelle, la situation socio-économique et l’intersectionnalité. Des exceptions peuvent être présentes dans la documentation en raison de la langue codée en dur dans les interfaces utilisateur du logiciel du produit, de la langue utilisée en fonction de la documentation de l’appel d’offres ou de la langue utilisée par un produit tiers référencé. En savoir plus sur la façon dont Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit les symptômes et les causes courants d'utilisation élevée du CPU sur les routeurs Cisco, et fournit des instructions et des solutions de dépannage.
Le dépannage d’une utilisation élevée de l’UCT sur les routeurs Cisco nécessite une compréhension des chemins de commutation logicielle de Cisco IOSMD. Pour des informations concernant les chemins de commutation de logiciel IOS de Cisco, consultez Bases de l'optimisation des performances.
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
Cette liste décrit les symptômes courants d'une utilisation élevée du CPU. Si vous remarquez l'un de ces symptômes, suivez les étapes de dépannage dans ce document pour soulager le problème.
Pourcentages élevés dans la sortie de la commande show processes cpu
Si vous avez les données de sortie de la commande show processes cpu de votre appareil Cisco, vous pouvez utiliser l’application Cisco CLI Analyzer pour afficher des problèmes potentiels et de correctifs. Pour utiliser Cisco CLI Analyzer, vous devez être un client inscrit, être connecté et avoir activé JavaScript.
Performance ralentie
Les services du routeur ne répondent pas, par exemple :
Réponse lente en Telnet ou incapable de Telnet vers le routeur
Réponse lente dans la console
Lent ou aucune réponse au ping
Le routeur n'envoie pas les mises à jour de routage aux autres routeurs
Nombre élevé d’erreurs de mémoire tampon
Quand vous remarquez n’importe lequel des Symptômes d’utilisation élevée de l’UCT :
Vérifiez qu'il n'y ait pas de problème de sécurité. Généralement, l'utilisation élevée du CPU est provoquée par un problème de sécurité, tel qu'un ver ou un virus présent dans votre réseau. C'est d'autant plus probable s'il n'y a pas eu de changements récents apportés à votre réseau. Habituellement, une modification de la configuration, comme l'ajout de lignes supplémentaires à vos listes d'accès peut atténuer les effets de ce problème. Notifications et conseils de sécurité au sujet des produits Cisco contient des informations sur la détection des causes le plus probables et des solutions alternatives spécifiques.
Pour des informations supplémentaires, référez-vous à :
Assurez-vous que toutes les commandes de débogage de votre routeur sont arrêtées en lançant les commandes undebug all ou no debug all. Pour plus d'informations sur l'utilisation des commandes de débogage, référez-vous à Utilisation des commandes de débogage.
Pouvez-vous lancer les commandes show sur le routeur ? Si oui, commencez la collecte de davantage d'informations à l'aide des commandes show.
Le routeur est-il inaccessible ? Pouvez-vous reproduire ce problème ? Si oui, éteignez et rallumez le routeur et, avant de reproduire le problème, configurez la commande scheduler interval 500. Ceci programme les processus à priorité basse pour qu'ils se lancent toutes les 500 millisecondes, ce qui vous donne le temps de lancer plusieurs commandes, même si l'utilisation du CPU est à 100 pour cent. Sur les routeurs de la gamme Cisco 7200 et 7500, utilisez la commande scheduler allocate 3000 1000.
Le routeur montre-t-il des symptômes d'une utilisation élevée du CPU à des intervalles brefs et imprévisibles ? Si oui, collectez périodiquement la sortie de la commande show processes cpu qui montre si l'utilisation élevée du CPU est provoquée par des interruptions ou par un certain processus. Utilisez ce script UNIX et, en tenant compte des premiers résultats, modifiez-le pour collecter des données nécessaires à une recherche plus approfondie du problème.
Utilisez la commande show processes cpu pour contrôler si l'utilisation du CPU est due aux interruptions ou aux processus.
Pour plus d'informations, référez-vous à Résolution des problèmes d'utilisation élevée du CPU provoquée par des interruptions. Si le niveau du CPU augmente en raison d'interruptions qui sont probablement dues à la commutation de paquets CEF, le niveau du CPU n'affecte pas le fonctionnement du routeur.
Si Netflow est configuré pour la version 7, le flux est exécuté par le processeur de routage, ce qui pourrait entraîner une utilisation élevée du CPU.
Pour résoudre les problèmes d'utilisation élevée du CPU due à Netflow version 7, configurez mls nde sender version 5, car l'exportation Netflow est effectuée par le SP, qui est la valeur par défaut pour la version 5 ou la version 9.
Contrôlez quel processus charge le CPU. Activité inhabituelle liée à des résultats de processus dans un message d'erreur dans le log. Par conséquent, la sortie de la commande show logging exec doit être examinée au préalable pour déceler les erreurs liées au processus qui consomme de nombreux cycles du CPU.
Le débogage peut également être d'une grande aide pour la résolution de problèmes d'utilisation élevée du CPU de dépannage dans les processus. Néanmoins, le débogage doit être effectué avec extrême prudence car il peut augmenter davantage l'utilisation du CPU. Ces conditions doivent être remplies afin de rendre le débogage sûr et utile :
Toutes les destinations de journalisation, mis à part la journalisation de la mémoire tampon doivent être désactivées ou leur niveau d'importance de journalisation doit être abaissé de 7 (débogage) à 6 (informationnel) ou moins, à l'aide de la commande de configuration logging destination [severity-level] appropriée. Pour voir quelles destinations de journalisation et quels niveaux correspondants sont activés, lisez l'en-tête de la commande show logging exec.
La taille de tampon de journalisation doit être augmentée afin de récupérer suffisamment d'information. Pour plus de détails, référez-vous à la description de la commande globale de configuration Logging buffered.
Afin de pouvoir mieux lire et comprendre les débogages, la date-heure et les horodatages en millisecondes doivent être activés. Pour plus de détails, référez-vous à la description de la commande de configuration globale Service timestamps.
Un échantillon d'une session de débogage des paquets IP est fourni dans Résolution des problèmes d'utilisation élevée du CPU dans le processus d'entrée IP.
Pour la résolution des problèmes d'utilisation élevée du CPU dans des processus spécifiques, référez-vous au lien approprié :
EXEC - Utilisation élevée du CPU dans l'EXEC et les processus EXEC virtuels
IP Input - Résolution des problèmes d'utilisation élevée du CPU causée par le processus d'entrée IP
Virtual EXEC - Utilisation élevée du CPU dans l'EXEC et les processus EXEC virtuels
Processus SSH : Il peut être élevé si vous capturez la sortie de la commande show tech ou si certaines options de débogage sont activées.
Il est normal de voir peu de mémoire libre avec les pools PCI et Mémoire rapide. La mémoire PCI est utilisée pour l'accès mémoire au contrôleur GT64260 de la carte principale PRP pour les bus PCI qui y sont connectés. Cette mémoire est utilisée pour la communication interne entre le contrôleur système et les autres composants, c'est pourquoi elle semble élevée en permanence.
Si plus de mémoire est nécessaire, elle retombe au pool de mémoire du processeur. La mémoire rapide est un petit ensemble de mémoire qui a été mis de côté pour être utilisé par les structures de données du matériel Interface Descriptor Block (IDB). Cette mémoire est également complètement réservée au cours du démarrage, c'est pourquoi elle s'affiche toujours comme élevée puisque la mémoire est complètement utilisée. Pour cette raison, il est normal de voir peu mémoire libre avec le pool de mémoire rapide.
Le message de monopolisation CPU ressemble à ceci :
SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms IOS quantum) for GET of rmon.19.16.0--result rmon.19.16.0
Un nouveau message syslog (HIGHCPU) a été ajouté à IOS dans la version 12.4(13). Si un processus sollicite le CPU pour plus de 200 ms, il enregistre un message HIGHCPU. Le message HIGHCPU n'a aucune incidence sur le routeur. Il vous fait juste savoir quel processus a entraîné l'utilisation élevée du CPU. Le message HIGHCPU est semblable au message CPUHOG, mais le message HIGHCPU a un seuil de tolérance, à 1/10 du temps comparé à un message CPUHOG, c.-à-d., mesuré en millisecondes). Dans les versions antérieures à 12.4(13) sur les 2600, les processus fonctionnaient pendant de plus longues périodes mais ne généraient pas de messages car les versions IOS ne disposaient pas de cette amélioration.
SNMP PDU processing (MIB object queries) sont censées être exécutées dans une seule tranche de temps de CPU pour s'assurer que chaque objet dans le PDU est récupéré simultanément. C'est une condition imposée par la norme du protocole SNMP. Certains objets sont des agrégats de beaucoup de données dans le système, ainsi, même s'ils sont des objets simples, il y a beaucoup de traitement impliqué en raison de la manière dont ils sont utilisés. S'ils n'abandonnent pas le CPU, selon les exigences des règles d'instrumentation MIB, il y a une possibilité de ce message d'erreur. De même, si vous interrogez plusieurs objets différents dans le groupe/table du même objet et obtenez le message d'erreur, ce n'est pas inhabituel pour cette même raison.
Ce message est utilisé pour identifier les objets qui utilisent plus de temps d’UCT que prévu (mais qui ne sont pas encore CPUHOG). Certains NMS/ outils d'instrumentation ne se comportent pas bien lorsqu'ils sont interrogés. Ce problème est décrit dans le bogue Cisco CSCsl18139 (clients inscrits seulement).
Quand il n'y a aucun module de chiffrement matériel installé dans le périphérique, alors tout le traffic chiffré passant par le périphérique devra être chiffré par le logiciel. Ceci sollicite énormément le CPU. Il n'est pas recommandé d'utiliser le logiciel de chiffrement pour un déploiement de chiffrement avec une condition raisonnable de débit. Une manière de résoudre ce problème est de réduire le volume du trafic chiffré (re-router le trafic ou limiter les flux chiffrés). Cependant, la meilleure manière de régler ce problème est d'avoir un module de chiffrement matériel installé pour ce périphérique qui élimine le besoin de chiffrement par le logiciel.
Remarque : L'activation des cartes de chiffrement sur les interfaces tunnel/physique est un processus de consommation de mémoire et peut entraîner une augmentation du CPU.
Les rassemblements peuvent faire grandement augmenter l’utilisation de l’UCT si celui-ci doit rassembler un grand nombre de paquets.
Pour faire le dépannage d’une utilisation élevée de l’UCT en raison de la fragmentation, envoyez la commande tcp mss-adjust 1400 à l’interface qui définit la valeur de la taille de segment maximale (MSS) des paquets SYN (TCP synchronize/start) qui passent par le routeur.
Ces commandes fournissent plus d'informations au sujet du problème :
Si le routeur est complètement inaccessible, commencez par l'éteindre et le rallumer. Ensuite, recueillez périodiquement la sortie des commandes de cette section, sauf celle de la commande show log dont les messages doivent être recueillis sur un serveur syslog. L'intervalle pour rassembler le résultat devrait être de cinq minutes. Vous pouvez rassembler les données manuellement ou automatiquement, à l'aide de ce script shell UNIX. Vous pouvez également rassembler des données à l'aide de HTTP ou SNMP. Pour des informations sur la configuration HTTP et SNMP sur un routeur Cisco, référez-vous au document Configuration du logiciel Cisco IOS.
Ceci est un exemple de l'en-tête de la commande show processes cpu :
CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
Cette table décrit les champs dans l'en-tête :
Champ | Description |
---|---|
X | Utilisation moyenne totale pendant les cinq dernières secondes (interruptions + processus) |
O | Moyenne de l’utilisation causée par des interruptions au cours des cinq dernières secondes1 |
Z | Moyenne de l’utilisation totale au cours de la dernière minute2 |
W | Moyenne de l’utilisation totale au cours des cinq dernières minutes2 |
PID | ID du processus |
Runtime | Temps du CPU que le processus a utilisé (en millisecondes) |
Invoked | Nombre de fois qu'un processus a été appelé |
uSecs | Microsecondes du temps CPU pour chaque appel |
5Sec | Utilisation du CPU par tâche pour les cinq dernières secondes |
1Min | Utilisation de l’UCT par tâche au cours de la dernière minute2 |
5Min | Utilisation de l’UCT par tâche au cours des cinq dernières minutes2 |
TTY | Terminal qui contrôle le processus |
Process | Nom du processus |
1 Utilisation de l’UCT au niveau du processus = X - Y
2 Les valeurs ne représentent pas une moyenne arithmétique, mais une moyenne à décroissance exponentielle. Ainsi, les valeurs les plus récentes ont plus d'influence sur la moyenne calculée.
Utilisez ce lien, pour une explication détaillée de la commande show processes cpu.
Remarque : l'utilisation totale du CPU ne doit pas être utilisée comme mesure de la capacité du routeur à commuter davantage de paquets. Sur les routeurs Cisco 7500, les Versatile Interface Processors (VIPs) et les Route/Switch Processors (RSPs) n'enregistrent pas l'utilisation linéaire du CPU. Près de la moitié de la puissance de commutation de paquets par seconde intervient après 90 à 95 pourcents du CPU.
La référence des commandes contient une explication détaillée de la commande show interfaces.
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.
C'est un exemple de sortie de la commande 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 mentionne 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. Ce tableau 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, de 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). |
Cette commande est une version résumée de la commande show interfaces switching. Ceci est un exemple de résultat pour une interface :
RouterA#show interfaces stat Ethernet0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 52077 12245489 24646 3170041 Route cache 0 0 0 0 Distributed cache 0 0 0 0 Total 52077 12245489 24646 3170041
La sortie de la commande show interfaces stat est différente pour différentes plates-formes, selon les chemins de commutation configurés et disponibles.
La commande show ip nat translations affiche les traductions d'adresses de réseau (NAT) actives sur le routeur. Chaque traduction active génère des interruptions du CPU et a une incidence sur l'utilisation totale du CPU du routeur. Un trop grand nombre de traductions peut avoir un impact sur les performances du routeur.
Ceci est un exemple de sortie de la commande show ip nat translations :
router#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 172.16.131.1 10.10.10.1 --- ---
Cette commande n'est disponible que sur les plates-formes basées sur les processeurs d'ordinateur à jeu d'instructions réduit (RISC). Sur ces plates-formes, le CPU peut corriger les lectures et écritures mémoire mal alignées. Voici un exemple de sortie :
Alignment data for: 4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1) Compiled Tue 31-Mar-98 15:05 by jdoe Total Corrections 33911, Recorded 2, Reads 33911, Writes 0 Initial Initial Address Count Access Type Traceback 40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0 40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988
Afin de suivre les problèmes d'utilisation élevée du CPU, la partie importante de cette sortie de commande est la version du logiciel Cisco IOS, la plate-forme, le type de CPU et la disponibilité du routeur. La référence des commandes donne une explication détaillée de la commande show version.
Cette commande affiche le contenu des messages de journal en mémoire tampon. Pour plus d'informations sur la journalisation des messages système, référez-vous à la section Journaliser les messages d'erreur système du guide Résolution des problèmes de configuration du routeur.
Cette annexe décrit un script simple pour collecter périodiquement des données du routeur. Le noyau du script est cette ligne :
(echo "show version") | telnet 192.168.1.1
La commande entre parenthèses est exécutée dans une nouvelle fenêtre de ligne de commande et la sortie est envoyée à une session Telnet. Ceci est un exemple de script pour capturer les sorties des commandes show version et show processes cpu :
#!/opt/local/bin/bash ########################################### # Router's IP address # IP_ADDRESS='10.200.40.53' # Directory where the log files will be stored # DIR=/var/log/router ######################################## if [ ! -e $DIR ] then mkdir $DIR fi # Tag specification: mmddhhmm DATE=`date +'%m%d'` TIME=`date +'%H%M'` TAG=$DATE$TIME # Collect data from the router (echo "foo";\ echo "bar";\ echo "term len 0";\ echo "show version";\ echo "show processes cpu";\ echo "term len 15";\ echo "show memory summary";\ echo "q";\ sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg
Note : Dans ce script, toutes les données, y compris le mot de passe, sont envoyées en texte clair.
Dans la première section, vous devez spécifier l'adresse IP et le répertorier de destination pour les fichiers de journalisation. La deuxième section contient les commandes réelles qui sont envoyées au routeur. La première est le nom d'utilisateur, puis le mot de passe, etc. Une astuce pour capturer seulement les premières lignes de sortie de certaines commandes est incluse. La longueur du terminal est paramétrée comme quelque chose de court (15 dans ce cas), et la lettre « q » est envoyée seulement par demande.
Si des données sont collectées périodiquement, la sortie de la commande show version montre si le problème a une nature périodique, par exemple, s'il apparaît toujours à une certaine heure ou durant un jour particulier de la semaine. Si vous devez rassembler la sortie de plus de commandes, elles peuvent être ajoutées au script de la même manière que celles montrées dans l'exemple. Si vous devez tronquer la sortie envoyée vers le fichier, augmentez d'abord la période de veille (la commande Sleep entre parenthèses).
Exécutez ce script toutes les cinq minutes si le problème d'utilisation élevée du CPU apparaît souvent et ne dure pas longtemps. Autrement, vous pouvez l'exécuter toutes les 15 ou 30 minutes. Pour une facilité d'utilisation, sauvegardez le script dans un fichier tel que /usr/bin/router-script. Puis, pour l'exécuter toutes les cinq minutes, ajoutez la ligne suivante au fichier /etc/crontab :
*/5 * * * * /usr/bin/router-script
Relancez le serveur cron. Si vous n'avez pas les droits pour modifier le fichier /etc/crontab, exécutez le script dans un processus distinct, comme ceci :
while [ 1 ]; do ./router-script ; sleep 300; done &