Este documento explica os motivos para alta utilização da CPU devido a interrupções e fornece dicas e orientações para Troubleshooting.
Não existem requisitos específicos para 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 a sua rede estiver ativa, certifique-se de que entende o impacto potencial de qualquer comando.
Para obter mais informações sobre convenções de documento, consulte as Convenções de dicas técnicas Cisco.
A alta utilização da CPU em um nível de interrupção é causada principalmente por pacotes tratados no nível de interrupção. As interrupções são geradas sempre que um caractere é enviado do console ou das portas auxiliares de um roteador.
Os receptores/transmissores assíncronos universais (UARTs) são lentos se comparados à velocidade de processamento do roteador, portanto é improvável embora possível que as interrupções no console ou auxiliar possam causar uma alta utilização de CPU no roteador (a menos que o roteador tenha um grande número de linhas tty em uso).
Existem vários motivos para a alta utilização do CPU devido a interrupções:
Um caminho de switching inadequado é configurado no roteador
Há interfaces do Modo de transferência assíncrono (ATM) ativas no roteador.
Muitos pacotes estão sendo direcionados do PXF para o RP (Processador de rotas)
Para fazer Troubleshooting desse problema potencial, verifique o seguinte:
Verifique se o roteador está executando o Cisco Express Forwarding:
Verifique a configuração do comando de configuração global ip cef.
Verifique se Cisco Express Forwarding está habilitado e funcionando, emitindo o comando show ip cef summary.
Verifique se o Cisco Express Forwarding está habilitado como o caminho de switching em todas as interfaces. Isso pode ser visto nas saídas de show cef interface e show ip interface. Se o Cisco Express Forwarding estiver configurado, mas não ativado em uma interface, isso significa que o encapsulamento da interface não é suportado no Cisco Express Forwarding. Verifique se o Cisco Express Forwarding está operacional, ou seja, verifique se os pacotes são realmente comutados através do roteador usando o Cisco Express Forwarding, observando o comando show cef not-cef-switched .
Utilizando o comando show cef drop e o comando show interfaces switching (um comando oculto que pode ser utilizado para procurar por falhas de cache), verifique se o Cisco Express Forwarding não está derrubando pacotes. Se esse for o caso, consulte a página de Troubleshooting de CEF.
Verifique se alguma das interfaces tem listas de acesso longas configuradas.
Como regra geral, qualquer lista de acesso com mais de dez linhas é considerada longa.
Examinar repetidamente longas listas de acesso implica um uso muito intensivo de CPU. Na switching de fluxo de rede, se o fluxo já estiver no cache, você não precisará mais verificar a lista de acesso. Nesse caso, a comutação NetFlow seria útil. Você pode habilitar a switching NetFlow emitindo o comando ip route-cache flow.
Observe que se o Cisco Express Forwarding e o NetFlow estiverem configurados em uma interface, o Cisco Express Forwarding será usado para tomar uma decisão de switching.
Verifique se o switching do NetFlow está configurado no roteador:
Verifique as estatísticas emitindo o comando show ip cache flow. Examine o número de novos fluxos por segundo.
Se o Cisco Express Forwarding não estiver habilitado, habilite-o para acelerar a decisão de switching.
Se não houver listas de acesso longas, tente desativar a comutação NetFlow.
Os erros de alinhamento são causados por leituras e gravações desalinhadas. Por exemplo, uma leitura de dois bytes em que o endereço de memória não é um múltiplo par de dois bytes é um erro de alinhamento.
Os erros de alinhamento geralmente são causados por um bug de software. A CPU corrige esse erro, mas se houver muitas correções a serem feitas, isso se torna intensivo em relação à CPU. Para solucionar esse tipo de erro, consulte Solucionando Problemas de Acessos Artificiais, Erros de Alinhamento e Interrupções Artificiais.
A saída dos comandos show interfaces e show interfaces switching (oculto) fornecem informações sobre as interfaces que estão sobrecarregadas. Para capturar a saída desses comandos em um arquivo de log para análise posterior, siga estas etapas.
Emita o comando terminal length 0.
Verifique a saída de show interfaces . Examine a carga e o número de aceleradores nas interfaces. A carga é um valor médio calculado, por padrão, em cinco minutos. Para alterar esse intervalo, emita o comando load-interval seconds, onde os segundos representam o período de tempo durante o qual os dados são usados para calcular estatísticas de carga. Use um valor que seja múltiplo de 30.
Acelerações são uma excelente indicação de um roteador sobrecarregado. Mostram o número de vezes que o receptor na porta foi desativado, possivelmente devido à sobrecarga do buffer ou do processador. Junto com a utilização elevada do CPU em um nível de interrupção, os aceleradores indicam que o roteador está sobrecarregado com tráfego.
Verifique a saída do comando show interfaces switching (oculto) para ver que tipo de tráfego (protocolo e caminho de switching) está passando pela interface sobrecarregada. Se algumas interfaces estiverem muito sobrecarregadas com tráfego, considere reprojetar o fluxo de tráfego na rede ou atualizar o hardware.
O loop de rede também pode ser um motivo para a sobrecarga de tráfego. Verifique sua topologia de rede.
Se houver uma possibilidade de que um único dispositivo esteja gerando pacotes em uma taxa extremamente alta e sobrecarregando o roteador, você poderá determinar o endereço MAC desse dispositivo adicionando o comando de configuração de interface ip accounting mac-address {input|output} à configuração da interface sobrecarregada.
O comando show interfaces [ ] mac-accounting exibe as informações coletadas. Quando o endereço MAC do dispositivo de origem é encontrado, o endereço IP correspondente pode ser encontrado verificando-se a saída do comando show ip arp.
Se você suspeitar de um bug na versão do software Cisco IOS em execução no roteador, poderá verificar o Bug Toolkit (somente clientes registrados) para obter um bug que reporte sintomas semelhantes em um ambiente semelhante.
Mesmo que não haja tráfego, o software continua a monitorar a sinalização associada a canal (CAS), que usa recursos da CPU.
Mesmo que não haja tráfego, as interfaces ATM enviam célula nula (por padrões ATM) e continuam a usar recursos da CPU.
Quando o PXF apontar muitos pacotes no RP, o RP poderá ficar sobrecarregado. Você pode comparar a quantidade de pacotes apontados com a quantidade total de pacotes de entrada emitindo o comando show pxf accounting summary. Use o mesmo comando para descobrir por que os pacotes estão apontados para o RP. Isso pode ser um bug de software ou o tráfego não é suportado pelo PXF.
A criação de perfis de CPU é uma maneira de determinar onde a CPU gasta seu tempo. O sistema funciona verificando o local do processador a cada quatro milissegundos. A contagem desse local na memória é incrementada. A causa raiz dessa utilização da CPU será determinada pelo perfil da CPU.
Conclua estas etapas para executar o perfil da CPU. A utilização da CPU deve ser feita quando você estiver observando uma utilização alta da CPU.
Observação: todos esses comandos devem ser digitados no modo de ativação
Capture a saída de show region e pegue o endereço inicial, o endereço final e o tamanho de main:text region
Capture a saída do comando show memory statistics e verifique o tamanho do maior bloco na memória do processador.
Execute profile task interrupt para configurar a criação de perfil somente para interrupções.
Compare o tamanho da região main:text com o tamanho do maior bloco de memória livre do processador. Idealmente, o bloco maior deve ser maior que o main:text.
Se o bloco maior for menor que main:text size, ajuste a granularidade para certificar-se de que a criação de perfil seja capaz de obter um bloco de memória do processador.
Se o bloco maior for maior que a região main:text, use uma granularidade de 4.
Se o bloco maior for maior que a metade da região main:text, use uma granularidade de 8.
Se o bloco maior for maior que um quarto da região main:text, use uma granularidade de 10 ( 16 em hexadecimal).
Observação: a granularidade deve ser uma potência de 2 e deve ser a menor possível (mas não menor que 4)
Iniciar criação de perfil fazendo perfil
Profile <starting address> <ending address> <granularity value>
O endereço inicial e o endereço final são determinados a partir da Etapa 1.
Aguarde de 5 a 10 minutos
Parar criação de perfil fazendo interrupção de perfil
Capture a saída de show profile terse.
Certifique-se de que a memória seja liberada fazendo unprofile all
Este comando é utilizado para determinar caminhos de switching ativos nas interfaces. Para obter mais informações sobre caminhos de switching no software Cisco IOS, consulte Configuração de Caminhos de Switching .
O exemplo a seguir ilustra uma saída do comando show interfaces switching de uma interface.
RouterA#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
A saída lista os caminhos de switching para todos os protocolos configurados na interface, para que você possa ver facilmente que tipo e quantidade de tráfego está passando pelo roteador. A seguinte tabela explica os campos de saída:
Campo | Definição |
---|---|
Processo | Pacotes processados. Podem ser pacotes destinados ao roteador ou pacotes para os quais não há nenhuma entrada no cache de switching rápida. |
Falhas de cache | Os pacotes para os quais não havia entrada no cache de switching rápida. O primeiro pacote para esse destino (ou fluxo - dependendo do tipo de switching rápida configurado) será processado. Todos os pacotes subseqüentes serão comutados rapidamente, a menos que a switching rápida esteja explicitamente desativada na interface de saída. |
Rápido | Pacotes Fast Switched A switching rápida está habilitada por padrão. |
Auton/SSE | Pacotes comutados autônomos, comutados por silício ou comutados por distribuição. Disponíveis somente nos roteadores Cisco 7000 Series com um processador de switch ou um processador de switch de silício (para switching autônomos ou switching de silício, respectivamente) ou nos roteadores Cisco 7500 Series com um VIP (para switching distribuído). |
Este script salva as saídas em flash:CPU_Profile quando a utilização da CPU é superior a 75%:
service internal event manager applet High_CPU event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.6 get-type next entry-opge entry-val 75 exit-time 10 poll-interval 5 action 0.1 syslog msg "CPU Utilization is high" action 0.2 cli command "enable" action 0.4 cli command "show log | append flash:CPU_Profile.txt" action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt" action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt" action 1.1 cli command "configure terminal" action 1.2 cli command "profile xxxxxxx yyyyyyyyZ" action 1.3 cli command "profile start" action 2.3 syslog msg "Entering TCLSH" action 2.4 cli command "tclsh" action 2.5 cli command "after 240000" action 2.6 cli command "exit" action 2.9 syslog msg "Exiting TCLSH" action 3.0 cli command "profile stop" action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt" action 3.2 cli command "clear profile" action 3.3 cli command "unprofile all" action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..." action 4.2 cli command "end"
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
29-May-2008 |
Versão inicial |