Ce document explique les processus Exec et Virtual Exec, et comment dépanner une utilisation du CPU élevée dans ces processus.
Cisco recommande que vous lisiez la section Dépannage de surutilisation de la CPU sur des routeurs Cisco avant que vous poursuiviez ce document.
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
Les informations présentées dans ce document ont été créées à partir de périphériques dans un environnement de laboratoire spécifique. All of the devices used in this document started with a cleared (default) configuration. Si vous travaillez dans un réseau opérationnel, assurez-vous de bien comprendre l'impact potentiel de toute commande avant de l'utiliser.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
Le processus d’exécution de la plate-forme logicielle Cisco IOS® est responsable de la communication sur les lignes tty (console, auxiliaire, asynchrone) du routeur. Le processus Virtual Exec est responsable des lignes VTY (sessions Telnet).
Les processus d'exécution et d'exécution virtuelle sont des processus de priorité moyenne. Par conséquent, si d'autres processus ont une priorité plus élevée (élevée ou critique), les processus de priorité plus élevée obtiennent les ressources du processeur.
router#show process | i CPU|Exec CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID QTy PC Runtime (ms) Invoked uSecs Stacks TTY Process 22 M* 0 9644 1733 5564 9732/12000 0 Exec 46 ME 80468980 28 6 466610520/12000 66 Virtual Exec
Référez-vous à La commande show processes pour une explication complète du résultat de cette commande.
Si beaucoup de données sont transférées par ces sessions, l'utilisation de la CPU pour le processus Exec augmente.
La raison est que quand le routeur veut envoyer un caractère simple par ces lignes, le routeur utilise certaines ressources de la CPU :
Pour la console (Exec), le routeur utilise une interruption par caractère.
L'interruption de la console peut être vue dans le résultat de la commande show stacks :
router#show stacks Minimum process stacks: Free/Size Name 11516/12000 Router Init 9404/12000 Init 5520/6000 AIM_MIB_CREATION 5448/6000 RADIUS INITCONFIG 9728/12000 Virtual Exec Interrupt level stacks: Level Called Unused/Size Name 1 23035463 7008/9000 Network interfaces 2 0 9000/9000 Timebase Reference Interrupt 3 0 9000/9000 PA Management Int Handler 6 9791 8892/9000 16552 Con/Aux Interrupt 7 1334963882 8920/9000 MPC860 TIMER INTERRUPT
Pour la ligne vty (Virtual Exec), la session Telnet doit créer un paquet TCP et envoyer le ou les caractères au client Telnet.
Voici quelques raisons possibles pour une utilisation élevée du CPU dans le processus d'exécution :
Trop de données sont envoyées via le port de console.
Un trop grand nombre de messages de console générés par le routeur est une cause possible.
Vérifiez si des débogages ont commencé sur le routeur avec la commande show debugging.
Désactivez la journalisation de la console sur le routeur avec (pas de console de journalisation ).
Vérifiez si une sortie longue est imprimée sur la console (par exemple, show tech-support ou show memory).
Le logiciel Cisco IOS présente un bogue.
Utilisez le Bug Toolkit (clients enregistrés uniquement) pour rechercher les bogues avec ce symptôme dans votre version du logiciel Cisco IOS.
La commande exec est configurée pour les lignes asynchrones et auxiliaires.
Si une ligne n'a que du trafic sortant, le processus d'exécution doit être désactivé pour cette ligne, car si le périphérique (par exemple, un modem) connecté à cette ligne envoie des données non sollicitées, le processus d'exécution démarre sur cette ligne.
Si le routeur est utilisé comme terminal-server (pour une connexion Telnet inverse à d'autres consoles de périphériques), il est recommandé de configurer no exec sur les lignes qui sont connectées à la console des autres périphériques. Sinon, les données qui reviennent de la console pourraient commencer un processus Exec, ce qui utilise des ressources de la CPU.
Voici quelques raisons possibles pour une utilisation élevée du CPU dans le processus Virtual Exec :
Un bogue logiciel dans le logiciel Cisco IOS
Utilisez le Bug Toolkit (clients enregistrés uniquement) pour rechercher les bogues présentant ce symptôme pour votre version du logiciel Cisco IOS.
Trop de données sont envoyées sur les sessions Telnet.
La raison la plus fréquente d'utilisation élevée de la CPU dans le processus Virtual Exec est que trop de données sont transférées du routeur à la session Telnet.
Cela peut se produire lorsque des commandes avec des sorties longues (telles que show tech-support, show memory, etc.) sont exécutées à partir de la session telnet.
La quantité de données transférées via chaque session vty peut être vérifiée avec la commande show tcp :
router#show tcp vty 0
tty66, virtual tty from host 10.48.77.64
Connection state is ESTAB, I/O status: 1, unread input bytes: 1
Local host: 10.48.77.27, Local port: 23
Foreign host: 10.48.77.64, Foreign port: 11006
........
Datagrams (max data segment is 1460 bytes):
Rcvd: 525 (out of order: 0), with data: 53, total data bytes: 87
Sent: 366 (retransmit: 257, fastretransmit: 0), with data: 356, total data bytes:
158187
Une session Telnet bloquée entraîne un CPU élevé en raison du processus Virtual Exec. Afin d'effacer la session Telnet bloquée, le périphérique doit être rechargé dans la plupart des cas. L’autre façon d’effacer la session Telnet bloquée est d’effacer le processus TCP. Le processus TCP peut être identifié avec la commande show tcp brief comme dans ce résultat :
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
À partir du résultat ci-dessus, le processus TCP 02FA62D0 doit être effacé afin d'effacer la session Telnet bloquée avec la commande clear tcp tcb 0x02fa62d0 .
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
12-Dec-2008 |
Première publication |