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. All of the devices used in this document started with a cleared (default) configuration. Se você estiver trabalhando em uma rede ativa, certifique-se de que entende o impacto potencial de qualquer comando antes de utilizá-lo.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
O processo Exec no software Cisco IOS® é responsável pela comunicação nas linhas tty (console, auxiliar, assíncrona) 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 que tenham uma prioridade mais alta (Alta ou Crítica), os processos de prioridade mais alta obtêm 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) para o cliente telnet.
Aqui estão listados alguns motivos possíveis para a alta utilização da CPU no processo Exec:
Muitos dados são enviados através da porta de console.
Muitas mensagens de console geradas pelo roteador são uma causa possível.
Verifique se alguma depuração foi iniciada no roteador com o comando show debugging.
Desative o registro do console no roteador com (sem console de registro ).
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 sua versão do software Cisco IOS.
O comando exec está configurado para linhas assíncronas e auxiliares.
Se uma linha tiver apenas tráfego de saída, o processo Exec deve ser desativado para esta linha, porque se o dispositivo (por exemplo, um modem) conectado a esta linha enviar alguns dados não solicitados, o processo Exec inicia nesta linha.
Se o roteador for usado como servidor terminal (para telnet reverso para outros consoles de dispositivo), é recomendável que você configure no exec nas linhas conectadas ao console dos outros dispositivos. Os dados que retornam do console podem, caso contrário, iniciar um processo EXEC, que usa recursos da CPU.
Aqui estão listados alguns motivos 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 este sintoma para sua versão do software Cisco IOS.
Muitos dados são enviados através das sessões telnet.
A razão mais comum para a alta utilização da CPU no processo Virtual Exec é que dados demais 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, etc.) são executados a partir da 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 suspensa 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
Da 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 |
12-Dec-2008 |
Versão inicial |