Este documento explica os processos Exec e Virtual Exec e como fazer Troubleshooting da alta utilização de CPU nesses processos.
A Cisco recomenda que você leia Troubleshooting de Alta Utilização da CPU em Cisco Routers antes de continuar com este documento.
Este documento não se restringe a versões de software e hardware específicas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se você estiver trabalhando em uma rede ativa, certifique-se de que entende o impacto potencial de qualquer comando antes de utilizá-lo.
Para obter mais informações sobre convenções de documento, consulte as Convenções de dicas técnicas Cisco.
O processo Exec no software Cisco IOS® é responsável pela comunicação nas linhas tty (console, auxiliar, assíncrono) do roteador. O processo Virtual Exec é responsável pelas linhas de vty (sessões de telnet).
Os processos Exec e Virtual Exec são processos de prioridade média, portanto, se houver outros processos com prioridade mais alta (alta ou crítica), os processos de prioridade mais alta obterão os recursos da 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 O Comando show processes para obter uma explicação completa da saída desse comando.
Se houver muitos dados transferidos através dessas sessões, a utilização da CPU para o processo Exec aumentará.
Isso ocorre porque quando o roteador deseja enviar um caractere simples através dessas linhas, ele usa alguns recursos da CPU:
Para o console (Exec), o roteador usa uma interrupção por caractere.
A interrupção do console pode ser visualizada na saída do 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 a linha vty (Virtual Exec), a sessão telnet precisa criar um pacote TCP e enviar o(s) caractere(s) ao cliente telnet.
Aqui estão listadas algumas razões possíveis para a alta utilização da CPU no processo Exec:
Muitos dados são enviados através da porta de console.
Um número excessivo de mensagens de console geradas pelo roteador é uma causa possível.
Verifique se alguma depuração foi iniciada no roteador com o comando show debugging.
Desative o registro de console no roteador com (no logging console ).
Verifique se uma saída longa está impressa no console (por exemplo, um show tech-support ou um show memory ).
Existe um bug no software Cisco IOS.
Use o Bug Toolkit (somente clientes registrados) para procurar bugs com esse sintoma na versão do software Cisco IOS.
O comando exec é configurado para linhas assíncronas e auxiliares.
Se uma linha tiver apenas tráfego de saída, o processo Exec deverá ser desativado para essa linha, porque se o dispositivo (por exemplo, um modem) conectado a essa linha enviar alguns dados não solicitados, o processo Exec será iniciado nessa linha.
Se o roteador for usado como servidor de terminal (para telnet reverso para outros consoles de dispositivos), é recomendável que você configure no exec nas linhas que estão conectadas ao console dos outros dispositivos. Os dados que voltam do console podem, de outra forma, iniciar um processo EXEC, que usa recursos da CPU.
Aqui estão listadas algumas razões possíveis para a alta utilização da CPU no processo Virtual Exec:
Um bug de software no software Cisco IOS
Use o Bug Toolkit (somente clientes registrados) para procurar bugs com esse sintoma para a versão do software Cisco IOS.
Muitos dados são enviados através das sessões telnet.
O motivo mais comum para a alta utilização da CPU no processo Virtual Exec é que muitos dados são transferidos do roteador para a sessão telnet.
Isso pode acontecer quando comandos com saídas longas (como show tech-support, show memory e assim por diante) são executados na sessão telnet.
A quantidade de dados transferidos através de cada sessão vty pode ser verificada com o 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
Uma sessão telnet travada leva a uma CPU alta devido ao processo Virtual Exec. Para limpar a sessão telnet suspensa, o dispositivo precisa ser recarregado na maioria dos casos. A outra maneira de limpar a sessão telnet suspensa é limpar o processo TCP. O processo TCP pode ser identificado com o comando show tcp brief como nesta saída:
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
Na saída acima, o processo TCP 02FA62D0 precisa ser limpo para limpar a sessão telnet suspensa com o comando clear tcp tcb 0x02fa62d0 .
| Revisão | Data de publicação | Comentários |
|---|---|---|
1.0 |
11-Mar-2003
|
Versão inicial |