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.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Le processus Exec 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 Exec et Virtual Exec 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 est visible dans la sortie 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 d'une utilisation élevée du CPU dans le processus d'exécution :
Trop de données sont envoyées via le port de console.
Trop 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 console sur le routeur avec (aucune console de journalisation).
Vérifiez si une sortie longue est imprimée sur la console (par exemple, une show tech-support ou une show memory ).
Il y a un bogue dans le logiciel Cisco IOS.
Utilisez la boîte à outils des bogues (clients enregistrés uniquement) pour rechercher des bogues présentant 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 ne comporte que du trafic sortant, le processus Exec 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 Exec démarre sur cette ligne.
Si le routeur est utilisé comme serveur de terminal (pour les connexions Telnet inversées à d'autres consoles de périphériques), il est recommandé de configurer no exec sur les lignes 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 d'une utilisation élevée du CPU dans le processus Virtual Exec :
Un bogue logiciel dans le logiciel Cisco IOS
Utilisez la boîte à outils des bogues (clients enregistrés uniquement) pour rechercher des 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 de longues sorties (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 à l'aide de 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 interrompue conduit à un CPU élevé en raison du processus Virtual Exec. Pour effacer la session telnet interrompue, le périphérique doit être rechargé dans la plupart des cas. L’autre façon de supprimer la session Telnet interrompue consiste à 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 de la sortie ci-dessus, le processus TCP 02FA62D0 doit être effacé pour effacer la session telnet interrompue avec la commande clear tcp tcb 0x02fa62d0 .
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
12-Dec-2008 |
Première publication |