Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Convenzioni

Possibili cause di un elevato utilizzo della CPU a causa di interruzioni

Percorso di switching inappropriato

CPU: esecuzione correzioni allineamento

Router sovraccarico di traffico

Bug software

Porte vocali configurate sul router

Interfacce ATM (Asynchronous Transfer Mode) attive sul router

Molti PXF (Parallel Express Forwarding) indirizzano all'RP

Profilatura CPU

comando show interfaces switching

Script di esempio per ottenere il profilo della CPU con CPU elevata

Informazioni correlate

Introduzione

Questo documento spiega i motivi dell'elevato utilizzo della CPU dovuto agli interrupt e fornisce suggerimenti e linee guida per la risoluzione dei problemi.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Il documento può essere consultato per tutte le versioni software o hardware.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Convenzioni

Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.

Possibili cause di un elevato utilizzo della CPU a causa di interruzioni

L'elevato utilizzo della CPU a livello di interrupt è causato principalmente dai pacchetti gestiti a livello di interrupt. Gli interrupt vengono generati ogni volta che un carattere viene emesso dalle porte console o dalle porte ausiliarie di un router.

I ricevitori/trasmettitori asincroni universali (UART, Universal Asynchronous Receiver/Transmitters) sono lenti rispetto alla velocità di elaborazione del router, quindi è improbabile, sebbene possibile, che gli interrupt della console o ausiliari possano causare un elevato utilizzo della CPU sul router (a meno che il router non abbia un elevato numero di linee tty in uso).

Le cause dell'utilizzo elevato della CPU dovuto agli interrupt sono diverse:

- Sul router è configurato un percorso di commutazione non appropriato

- La CPU sta eseguendo correzioni di allineamento

- Router sovraccarico di traffico

- C'è un bug nel software Cisco IOS® in esecuzione sul router

- Le porte vocali sono configurate sul router

- Alcune interfacce ATM (Asynchronous Transfer Mode) sono attive sul router

- Troppi pacchetti da PXF al processore di routing (RP)

Percorso di switching inappropriato

Per risolvere questo potenziale problema, verificare quanto segue:

- Verificare se il router esegue Cisco Express Forwarding:

- Verificare la configurazione per il comando di configurazione globale ip cef.

- Verificare che Cisco Express Forwarding sia abilitato e funzioni usando il comando show ip cef summary.

- Verificare che Cisco Express Forwarding sia abilitato come percorso di commutazione su tutte le interfacce. Come si può vedere nell'output del comando show cef interface e show ip interface. Se Cisco Express Forwarding è configurato, ma non abilitato su un'interfaccia, l'incapsulamento dell'interfaccia non è supportato in Cisco Express Forwarding. Verificare che Cisco Express Forwarding sia operativo, ossia controllare se i pacchetti sono effettivamente scambiati attraverso il router usando Cisco Express Forwarding controllando il comando show cef non-cef-switched.

- Usando il comando show cef drop e il comando show interfaces switching (questo è un comando nascosto che può essere usato per cercare mancati riscontri nella cache), verificare che Cisco Express Forwarding non stia eliminando pacchetti. In questo caso, vedere la pagina CEF sulla risoluzione dei problemi.

- Verificare se per una delle interfacce sono configurati elenchi accessi lunghi.

- In linea generale, un elenco degli accessi con più di dieci righe è considerato lungo.

- Passare ripetutamente su elenchi di accesso lunghi richiede un utilizzo intensivo della CPU. Con la commutazione NetFlow, se il flusso è già nella cache, non è più necessario controllare l'elenco degli accessi. In questo caso, la commutazione NetFlow sarebbe utile. È possibile abilitare la commutazione NetFlow usando il comando ip route-cache flow.

- Si noti che se Cisco Express Forwarding e NetFlow sono entrambi configurati su un'interfaccia, Cisco Express Forwarding verrà utilizzato per prendere una decisione di commutazione.

- Verificare che la commutazione NetFlow sia configurata sul router:

- Controllare le statistiche usando il comando show ip cache flow. Esaminare il numero di nuovi flussi al secondo.

- Se Cisco Express Forwarding non è abilitato, abilitare Cisco Express Forwarding per accelerare la decisione di commutazione.

- Se non ci sono elenchi di accesso lunghi, provare a disabilitare la commutazione NetFlow.

CPU: esecuzione correzioni allineamento

Gli errori di allineamento sono causati da letture e scritture non allineate. Ad esempio, una lettura a due byte in cui l'indirizzo di memoria non è un multiplo pari di due byte è un errore di allineamento.

Gli errori di allineamento sono in genere causati da un bug del software. La CPU corregge l'errore, ma se è necessario apportare molte correzioni, l'operazione richiede un utilizzo intensivo della CPU. Per la risoluzione di questo tipo di errore, vedere Risoluzione dei problemi relativi agli accessi spuri, agli errori di allineamento e agli interrupt spuri.

Router sovraccarico di traffico

L'output dei comandi show interfaces e show interfaces switching (nascosto) fornisce informazioni sulle interfacce in overload. Per acquisire l'output di questi comandi in un file di log per un'analisi successiva, eseguire la procedura seguente.

1. Eseguire il comando terminal length 0.

2. Controllare l'output di show interfaces. Esaminare il carico e il numero di limitazioni sulle interfacce. Il carico è un valore medio calcolato, per impostazione predefinita, su cinque minuti. Per modificare questo intervallo, eseguire il comando load-interval seconds, in cui i secondi rappresentano l'intervallo di tempo per cui i dati vengono utilizzati per calcolare le statistiche di carico. Utilizzare un valore multiplo di 30.

Le velocità sono una buona indicazione di un router in sovraccarico. Mostrano il numero di volte in cui il ricevitore sulla porta è stato disabilitato, probabilmente a causa di un sovraccarico del buffer o del processore. Insieme all'elevato utilizzo della CPU a livello di interrupt, le velocità indicano che il router è sovraccarico di traffico.

3. Controllare l'output del comando show interfaces switching (nascosto) per verificare il tipo di traffico (protocollo e percorso di commutazione) che sta attraversando l'interfaccia sovraccarica. Se alcune interfacce sono troppo sovraccariche di traffico, provare a riprogettare il flusso del traffico nella rete o ad aggiornare l'hardware.

4. Il loop di rete può essere anche la causa del sovraccarico del traffico. Verificare la topologia di rete.

Se esiste la possibilità che un singolo dispositivo generi pacchetti a una velocità estremamente elevata e quindi sovraccarichi il router, è possibile determinare l'indirizzo MAC del dispositivo aggiungendo il comando di configurazione dell'interfaccia ip accounting mac-address {input|output} alla configurazione dell'interfaccia sovraccaricata.

Il comando show interfaces [ ] mac-accounting visualizza le informazioni raccolte. Dopo aver trovato l'indirizzo MAC del dispositivo di origine, è possibile trovare l'indirizzo IP corrispondente usando l'output del comando show ip arp.

Bug software

Se si sospetta la presenza di un bug nella versione software Cisco IOS in esecuzione sul router, è possibile controllare Bug Toolkit (solo utenti registrati) per individuare il bug che segnala sintomi simili in un ambiente simile.

Porte vocali configurate sul router

Anche in assenza di traffico, il software continua a monitorare la segnalazione associata al canale (CAS, Channel-Associated Signaling), che utilizza risorse CPU.

Interfacce ATM (Asynchronous Transfer Mode) attive sul router

Anche se non c'è traffico, le interfacce ATM inviano celle null (secondo gli standard ATM) e continuano a usare le risorse CPU.

Molti PXF (Parallel Express Forwarding) indirizzano all'RP

Quando PXF reindirizza troppi pacchetti all'RP, quest'ultimo potrebbe sovraccaricarsi. È possibile confrontare la quantità di pacchetti punted con la quantità totale di pacchetti in entrata usando il comando show pxf accounting summary. Utilizzare lo stesso comando per individuare il motivo per cui i pacchetti vengono inoltrati all'RP. Potrebbe trattarsi di un bug del software o il traffico non è supportato da PXF.

Profilatura CPU

Il profiling della CPU è un modo a basso sovraccarico per determinare dove la CPU trascorre il tempo. Il sistema funziona campionando la posizione del processore ogni quattro millisecondi. Il numero di posizioni in memoria viene incrementato. La causa principale dell'utilizzo della CPU verrà determinata dal profilo della CPU.

Completare questi passaggi per eseguire la profilatura della CPU. L'utilizzo della CPU viene eseguito quando si riscontra un elevato utilizzo della CPU.

Nota: tutti questi comandi devono essere digitati in modalità abilitazione

1. Acquisire l'output dell'area show e prendere l'indirizzo iniziale, l'indirizzo finale e le dimensioni dell'area main:text

2. Acquisire l'output di show memory statistics e verificare le dimensioni del blocco più grande nella memoria del processore.

3. Esegui profilatura interrupt attività per configurare profilatura solo per interrupt.

4. Confrontare le dimensioni dell'area main:text con quelle del blocco più grande di memoria libera del processore. In teoria, il blocco più grande dovrebbe essere più grande del blocco main:text.

Se il blocco più grande è più piccolo della dimensione main:text, regolare la granularità per assicurarsi che il profiling sia in grado di ottenere un blocco di memoria del processore.

Se il blocco più grande è più grande dell'area main:text, utilizzare una granularità pari a 4.

Se il blocco più grande è più grande della metà dell'area main:text, usate una granularità di 8.

Se il blocco più grande è più grande di un quarto dell'area main:text, utilizzare una granularità di 10 (16 in esadecimale).

Nota: la granularità deve essere una potenza di 2 e deve essere il più piccola possibile (ma non inferiore a 4)

5. Avvia profilatura eseguendo il profilo

Profile <starting address> <ending address> <granularity value>

L'indirizzo iniziale e l'indirizzo finale vengono determinati dal passaggio 1.

6. Attendere da 5 a 10 minuti

7. Interrompere la creazione del profilo eseguendo l'interruzione del profilo

8. Acquisire l'output di show profile reter.

9. Accertarsi che la memoria sia libera eliminando il profilo

comando show interfaces switching

Questo comando è usato per determinare i percorsi di commutazione attivi sulle interfacce. Per ulteriori informazioni sui percorsi di commutazione nel software Cisco IOS, consultare il documento sulla configurazione dei percorsi di commutazione.

Di seguito viene riportato un esempio di output del comando show interfaces switching per un'interfaccia:

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

L'output mostra i percorsi di switching per tutti i protocolli configurati sull'interfaccia, in modo da poter facilmente vedere il tipo e la quantità di traffico che attraversa il router. Nella tabella seguente vengono descritti i campi di output:

Campo

Definizione

Processo

Pacchetti elaborati. Può trattarsi di pacchetti destinati al router o di pacchetti per i quali non vi è stata alcuna voce nella cache di switching rapido.

Mancati riscontri nella cache

Pacchetti per i quali non era presente alcuna voce nella cache di commutazione veloce. Verrà elaborato il primo pacchetto per questa destinazione (o flusso, a seconda del tipo di commutazione veloce configurato). Tutti i pacchetti successivi saranno commutati rapidamente, a meno che l'opzione di commutazione veloce non sia disabilitata esplicitamente sull'interfaccia in uscita.

Veloce

Pacchetti a commutazione rapida. L'opzione di commutazione veloce è attivata per impostazione predefinita.

Auton/SSE

Pacchetti a commutazione autonoma, a commutazione di silicio o a commutazione distribuita. Disponibile solo sui router Cisco serie 7000 con processore switch o processore switch in silicio (rispettivamente per switching autonomo o switching in silicio) o sui router Cisco serie 7500 con VIP (per switching distribuito).

Script di esempio per ottenere il profilo della CPU con CPU elevata

Questo script salva gli output su flash:CPU_Profile quando l'utilizzo della CPU è superiore al 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"

Informazioni correlate

- Risoluzione dei problemi relativi all'utilizzo elevato della CPU nei router Cisco

- Documentazione e supporto tecnico – Cisco Systems