Este documento explica los procesos de Exec y Exec virtual y la solución de problemas de la alta utilización de CPU en estos procesos.
Cisco recomienda leer Troubleshooting High CPU Utilization on Cisco Routers antes de continuar con este documento.
Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware.
La información que se presenta en este documento se originó a partir de dispositivos dentro de un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si la red está funcionando, asegúrese de haber comprendido el impacto que puede tener un comando antes de ejecutarlo.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
El proceso Exec en el software Cisco IOS® es responsable de la comunicación en las líneas tty (consola, auxiliar, asíncrona) del router. El proceso Virtual Exec (Ejecución virtual) es responsable de las líneas vty (sesiones telnet).
Los procesos Exec y Virtual Exec son procesos de prioridad media, por lo que si hay otros procesos que tienen una prioridad más alta (Alta o Crítica), los procesos de mayor prioridad obtienen los recursos de la CPU.
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
Consulte El comando show processes para obtener una explicación completa del resultado de este comando.
En caso de que se transfieran muchos datos a través de estas sesiones, el nivel de utilización de CPU para el proceso Exec se incrementa.
Esto se debe a que, cuando el router desea enviar un carácter simple a través de estas líneas, utiliza algunos recursos de la CPU:
En el caso de la consola (Exec), el router emplea un interruptor por caracter.
Se puede ver la interrupción de consola en el resultado del comando 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
Para la línea vty (Virtual Exec), la sesión telnet debe crear un paquete TCP y enviar los caracteres al cliente telnet.
A continuación se enumeran algunas posibles razones para el uso elevado de la CPU en el proceso Exec:
Se envían demasiados datos a través del puerto de la consola.
Demasiados mensajes de consola generados por el router son una causa posible.
Compruebe si se ha iniciado algún debug en el router con el comando show debugging.
Inhabilite el registro de la consola en el router con (sin consola de registro).
Verifique si se imprime un resultado largo en la consola (por ejemplo, show tech-support o show memory ).
Hay una falla en el software del IOS de Cisco.
Utilice el Bug Toolkit (registered customers only) para buscar bugs con este síntoma en su versión de Cisco IOS Software.
El comando exec se configura para las líneas asincrónicas y auxiliares.
Si una línea sólo tiene tráfico saliente, el proceso Exec debe desactivarse para esta línea, ya que si el dispositivo (por ejemplo, un módem) conectado a esta línea envía datos no solicitados, el proceso Exec comienza en esta línea.
Si el router se utiliza como servidor terminal (para telnet inverso a otras consolas de dispositivos), se recomienda que configure no exec en las líneas que están conectadas a la consola de los otros dispositivos. De lo contrario, los datos que regresan de la consola podrían dar inicio a un proceso Exec, proceso que utiliza recursos de la CPU.
A continuación se enumeran algunas posibles razones para el uso excesivo de la CPU en el proceso Virtual Exec:
Un error de software en el software del IOS de Cisco
Utilice el Bug Toolkit (registered customers only) para buscar bugs con este síntoma para su versión de Cisco IOS Software.
Se envían demasiados datos a través de las sesiones telnet.
El motivo más habitual por el que se registra un uso excesivo de CPU en el proceso Virtual Exec es que se transfieren demasiados datos desde el router a la sesión Telnet.
Esto puede suceder cuando los comandos con salidas largas (como show tech-support, show memory, etc.) se ejecutan desde la sesión telnet.
La cantidad de datos transferidos a través de cada sesión vty se puede verificar con el comando 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
Una sesión de Telnet bloqueada conduce a una CPU alta debido al proceso Virtual Exec. Para borrar la sesión de Telnet bloqueada, el dispositivo debe recargarse en la mayoría de los casos. La otra manera de borrar la sesión de Telnet bloqueada es borrar el proceso TCP. El proceso TCP se puede identificar con el comando show tcp brief como en este resultado:
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
A partir del resultado anterior, el proceso TCP 02FA62D0 debe ser borrado para borrar la sesión de Telnet bloqueada con el comando clear tcp tcb 0x02fa62d0 .
| Revisión | Fecha de publicación | Comentarios |
|---|---|---|
1.0 |
11-Mar-2003
|
Versión inicial |