Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Sintomi di un elevato utilizzo della CPU

Risoluzione dei problemi relativi all'utilizzo elevato della CPU

Individuazione delle cause e risoluzione del problema

Utilizzo elevato della CPU a causa di interrupt

CPU elevata quando si abilita NetFlow NDE su un router Cisco serie 7600

Utilizzo elevato della CPU dovuto ai processi

I pool di memoria PCI e FAST mostrano un utilizzo molto elevato

%SNMP-4-HIGHCPU: il processo supera la soglia di [dec]ms ([dec]ms IOS quantum) per [chars] di [chars] - risultato [chars]

CPU elevata a causa della crittografia software

Utilizzo elevato della CPU dovuto alla frammentazione

Comandi per ottenere ulteriori informazioni

Il comando show processes cpu

Il comando show interfaces

Il comando show interfaces switching

Il comando show interfaces stat

Il comando show ip nat translation

Il comando show align

Il comando show version

Il comando show log

Script EEM per la raccolta automatica dei dati in condizioni di CPU elevate

Esempio di script EEM con OID SNMP

Esempio di script EEM con i messaggi di notifica della soglia della CPU

Esempio di script EEM per avviare/arrestare il profilo CPU

Script della shell UNIX per la raccolta periodica dei dati

Informazioni correlate

Introduzione

Questo documento descrive i sintomi comuni e le cause di un elevato utilizzo della CPU sui router Cisco e fornisce linee guida e soluzioni per i problemi comuni.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Router Cisco

- Percorsi di commutazione software Cisco IOS®

Per informazioni sui percorsi di commutazione del software Cisco IOS, vedere Nozioni fondamentali sull'ottimizzazione delle prestazioni.

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.

Sintomi di un elevato utilizzo della CPU

In questo elenco vengono descritti i sintomi più comuni di un utilizzo elevato della CPU. Se si nota uno di questi sintomi, risolvere il problema seguendo la procedura descritta in questo documento.

- Percentuali elevate nella  show processes cpu output del comando.

se il dispositivo Cisco restituisce i risultati di un comando show processes cpu, è possibile usare Cisco CLI Analyzer per visualizzare i potenziali errori e correggerli.

Nota: per utilizzare Cisco CLI Analyzer, è necessario essere un utente Cisco registrato, aver eseguito l'accesso e avere JavaScript abilitato.

- Prestazioni lente

- I servizi sul router non rispondono, ad esempio:

- Risposta lenta in Telnet o impossibile connettersi al router in modalità Telnet

- Risposta lenta sulla console

- Risposta lenta o assente al ping

- Il router non invia gli aggiornamenti del routing ad altri router

- Errori di buffer elevati

Risoluzione dei problemi relativi all'utilizzo elevato della CPU

Una volta notato uno qualsiasi dei sintomi dai sintomi di utilizzo elevato della CPU:

- Verificare la presenza di un possibile problema di protezione. In genere, un utilizzo elevato della CPU è causato da un problema di sicurezza, ad esempio un worm o un virus che opera nella rete. Questa è la causa più probabile se non ci sono state modifiche recenti alla rete. In genere, una modifica della configurazione, quando si aggiungono righe aggiuntive agli elenchi degli accessi, può ridurre gli effetti di questo problema. I consigli e le notifiche sulla sicurezza dei prodotti Cisco contengono informazioni sul rilevamento delle cause più probabili e delle soluzioni specifiche.

Per ulteriori informazioni, fare riferimento a:

- 100 Domande e risposte sulle minacce di Internet

- Consigli e avvisi sulla sicurezza dei prodotti Cisco

- Cisco Threat Control

- Accertarsi che tutti debug i comandi del router siano disattivati con undebug all i comandi no debug all .

- È possibile usare i show comandi sul router? In caso affermativo, iniziare a raccogliere immediatamente ulteriori informazioni con questi show comandi.

- Il router è inaccessibile? Riuscite a riprodurre questo problema? In caso affermativo, spegnere e riaccendere il router e, prima di riprodurre il problema, configurare il comando scheduler interval 500 . In questo modo i processi a bassa priorità vengono pianificati in modo da essere eseguiti ogni 500 millisecondi, in modo da avere il tempo di eseguire alcuni comandi anche se l'utilizzo della CPU è pari al 100%. Sui router Cisco serie 7200 e 7500, usare il  scheduler allocate 3000 1000  comando.

- Il router mostra i sintomi di un elevato utilizzo della CPU a intervalli brevi e imprevedibili? In caso affermativo, raccogliere periodicamente l'output del show processes cpu comando, che indica se l'utilizzo elevato della CPU è causato da interrupt o da un determinato processo. Utilizzare questo script UNIX e, in base a ciò che si trova per primo, modificare lo script per raccogliere i dati necessari per ulteriori indagini sul problema.

Individuazione delle cause e risoluzione del problema

Utilizzare il comando show PROCESSES cpu per verificare se l'utilizzo della CPU è elevato a causa di interrupt o processi.

Utilizzo elevato della CPU a causa di interrupt

Per ulteriori informazioni, consultare il documento sulla risoluzione dei problemi di utilizzo elevato della CPU causato dagli interrupt. Se il livello della CPU aumenta a causa di interrupt probabilmente dovuti a pacchetti di switching CEF, il livello della CPU non influisce sulle prestazioni del router.

CPU elevata quando si abilita NetFlow NDE su un router Cisco serie 7600

Se NetFlow è configurato per la versione 7, il flusso viene eseguito dal processore di routing, il che può causare un elevato utilizzo della CPU.

Per risolvere i problemi relativi all'elevato utilizzo della CPU dovuto alla versione 7 di NetFlow, configurare mittente nodo mls versione 5, in quanto l'esportazione NetFlow viene eseguita dall'SP, che è l'impostazione predefinita per la versione 5 o la versione 9.

Utilizzo elevato della CPU dovuto ai processi

Verificare quale processo carica la CPU. Un'attività insolita relativa a un processo genera un messaggio di errore nel registro. Pertanto, l'output del show logging exec comando deve essere controllato prima per individuare eventuali errori correlati al processo che utilizza molti cicli della CPU.

È possibile utilizzare i comandi di debug per risolvere i problemi relativi all'utilizzo elevato della CPU in questi processi. I comandi di debug devono essere eseguiti con estrema cautela perché possono aumentare ulteriormente l'utilizzo della CPU. Per poter usare i comandi di debug in modo sicuro, è necessario soddisfare i seguenti prerequisiti:

- Tutte le destinazioni di registrazione, ad eccezione della registrazione del buffer, devono essere disabilitate oppure il livello di gravità della registrazione deve essere ridotto da 7 (debug) a 6 (informazioni) o meno, utilizzando il  logging destination [ severity-level ]  configuration  comando appropriato. Per vedere quali destinazioni di logging e i livelli corrispondenti sono abilitati, leggere le righe di intestazione del show logging exec comando.

- Per acquisire informazioni sufficienti, è necessario aumentare le dimensioni del buffer di registrazione. Per ulteriori informazioni, consultare la descrizione del  logging buffer global configuration  comando.

- Per poter leggere e comprendere meglio i debug, è necessario abilitare i timestamp datetime e millisecondi. Per ulteriori informazioni, consultare la descrizione del service timestamps global configuration comando.

Un esempio di sessione di debug dei pacchetti IP viene fornito in Risoluzione dei problemi di utilizzo elevato della CPU dovuto al processo di input.

Per risolvere i problemi relativi all'utilizzo elevato della CPU in processi specifici, fare riferimento a:

- Input ARP—Sezione Input ARP del documento Risoluzione dei problemi di utilizzo elevato della CPU dovuto ai processi.

- Router BGP: sezione CPU alta a causa del processo del router BGP nel documento Risoluzione dei problemi di CPU alta causati dal processo dello scanner BGP o del router BGP.

- Scanner BGP: sezione High CPU due to BGP Scanner nel documento Risoluzione dei problemi di CPU elevata causati dal processo dello scanner BGP o del router BGP.

- EXEC: elevato utilizzo della CPU nei processi EXEC e Virtual EXEC.

- HyBridge Input: risoluzione dei problemi di utilizzo elevato della CPU causati dal processo di input HyBridge sui router con interfacce ATM.

- Input IP: risoluzione dei problemi di utilizzo elevato della CPU dovuti al processo di input IP.

- IP Simple Network Management Protocol (SNMP): IP Simple Network Management Protocol (SNMP) provoca un elevato utilizzo della CPU.

- LC ADJ Updater: cosa provoca un elevato utilizzo della CPU nel processo LC Adjacency Updater su un router Internet Cisco serie 12000?

- TCP Timer: sezione TCP Timer del documento Risoluzione dei problemi di utilizzo elevato della CPU dovuto ai processi.

- Sfondo TTY—Sezione Sfondo TTY del documento Risoluzione dei problemi di utilizzo elevato della CPU dovuto ai processi.

- Virtual EXEC: fare riferimento al collegamento per EXEC. Utilizzo elevato della CPU nei processi Exec e Virtual Exec.

- Vtemplate Backgr: sezione Sfondo del modello virtuale del documento Risoluzione dei problemi di utilizzo elevato della CPU a causa dei processi.

- Processo SSH: il valore può aumentare se l'acquisizioneshow techdetermina un errore o se è abilitato il debug.

- Altri processi - Sezione Altri processi del documento, Risoluzione dei problemi di utilizzo elevato della CPU causati dai processi.

I pool di memoria PCI e FAST mostrano un utilizzo molto elevato

È normale vedere una quantità ridotta di memoria libera con pool di memoria PCI e Fast. La memoria PCI viene utilizzata per l'accesso alla memoria al controller GT64260 sulla scheda madre PRP per i bus PCI ad esso collegati. Questa memoria viene utilizzata per la comunicazione interna tra il controller del sistema e altre parti, pertanto risulta sempre alta.

Se è necessaria una quantità maggiore di memoria, viene ripristinata la memoria del pool di processori. La memoria Fast è una piccola quantità di memoria riservata all'utilizzo da parte delle strutture di dati IDB (Interface Descriptor Block) dell'hardware. Anche questa memoria è completamente riservata durante l'avvio, pertanto viene sempre visualizzata con la stessa altezza, poiché la memoria è completamente utilizzata. Per questo motivo, è normale verificare una quantità insufficiente di memoria libera con il pool di memoria Fast.

%SNMP-4-HIGHCPU: il processo supera la soglia di [dec]ms ([dec]ms IOS quantum) per [chars] di [chars] - risultato [chars]

Il messaggio di errore CPU è simile al seguente:

SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms Cisco IOS quantum)

for GET of rmon.19.16.0--result rmon.19.16.0

Un nuovo messaggio syslog (HIGHCPU) è stato aggiunto a Cisco IOS nella versione 12.4(13). Se un processo rimane collegato alla CPU per più di 200 ms, viene visualizzato il messaggio HIGHCPU. Il messaggio HIGHCPU non ha alcun impatto sul router. Consente semplicemente di sapere quale processo ha causato l'elevata CPU. Il messaggio HIGHCPU è simile al messaggio CPUHOG, ma il messaggio HIGHCPU ha una soglia di tolleranza molto più bassa, a 1/10 la quantità di tempo rispetto a un messaggio CPUHOG, cioè, misurata in millisecondi). Nelle versioni precedenti alla 12.4(13) del modello 2600, i processi duravano più a lungo ma non generavano messaggi perché nelle versioni Cisco IOS questo miglioramento non era previsto.

L'elaborazione delle PDU SNMP (query su oggetti MIB) deve essere eseguita in un singolo quantum di tempo CPU per garantire che ogni oggetto nella PDU venga recuperato come se fosse contemporaneamente. Questo è un requisito imposto dallo standard del protocollo SNMP. Alcuni oggetti sono aggregati di molti dati nel sistema, quindi, anche se sono oggetti singoli, c'è molta elaborazione implicita a causa del modo in cui sono strumentati. Se la CPU non viene abbandonata, come richiesto dalle regole di strumentazione MIB, è possibile che venga visualizzato questo messaggio di errore. Inoltre, se si esegue il polling di più oggetti diversi nello stesso gruppo di oggetti o nella stessa tabella e si ottiene il messaggio di errore, non è insolito per lo stesso motivo.

Questo messaggio viene utilizzato per identificare gli oggetti che utilizzano più tempo CPU del previsto (ma non ancora CPU). Alcuni strumenti NMS/di strumentazione non funzionano correttamente durante il polling. Questo problema è documentato nell'ID bug Cisco CSCsl18139.

Nota: solo gli utenti Cisco registrati possono accedere agli strumenti interni e alle informazioni sui bug.

CPU elevata a causa della crittografia software

Quando nel dispositivo non è installato alcun modulo di crittografia hardware, tutto il traffico crittografato che attraversa il dispositivo deve essere crittografato dal software. Questa operazione richiede un utilizzo intensivo della CPU. Non è consigliabile utilizzare la crittografia software per qualsiasi distribuzione di crittografia con requisiti di velocità di trasmissione ragionevoli. Per risolvere questo problema, è possibile ridurre il volume del traffico crittografato (indirizzare nuovamente il traffico o limitare i flussi crittografati). Tuttavia, il modo migliore per risolvere il problema è installare un modulo di crittografia hardware per il dispositivo, eliminando la necessità di eseguire la crittografia tramite il software.

Nota: se si abilitano le mappe crittografiche sulle interfacce tunnel/fisiche, si verifica il processo di utilizzo della memoria e può causare un aumento della CPU.

Utilizzo elevato della CPU dovuto alla frammentazione

I riassemblaggi possono far salire la CPU molto se questa deve ricomporre un numero elevato di pacchetti.

Per risolvere i problemi di elevato utilizzo della CPU dovuti alla frammentazione, usare il comando tcp mss-adjust 1400 sull'interfaccia che imposta il valore delle dimensioni massime del segmento (MSS) dei pacchetti TCP di sincronizzazione/avvio (SYN) che passano attraverso un router.

Comandi per ottenere ulteriori informazioni

Questi comandi forniscono ulteriori informazioni sul problema:

- show processes cpu

- show interfaces

- show interfaces switching

- show interfaces stat

- show ip nat translations

- show align

- show version

- show log

Per ulteriori informazioni sui comandi show, consultare la guida di riferimento dei comandi di Cisco IOS Configuration Fundamentals.

Se il router è completamente inaccessibile, spegnerlo e riaccenderlo. Quindi, raccogliere periodicamente l'output dei comandi in questa sezione, ad eccezione del comando i cui messaggi devono essere registrati su un server syslog show log . L'intervallo per la raccolta dell'output deve essere di cinque minuti. Lo script della shell UNIX consente di raccogliere i dati manualmente o automaticamente. È inoltre possibile raccogliere dati con HTTP o SNMP.

Il show processes cpu  comando

Questo è un esempio dell'intestazione del show processes cpu comando.

CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W%

PID  Runtime(ms)  Invoked  uSecs    5Sec   1Min   5Min TTY Process

In questa tabella vengono descritti i campi dell'intestazione:

Campo

Descrizione

X

Utilizzo totale medio negli ultimi cinque secondi (interrupt + processi)

Y

Utilizzo medio a causa di interrupt, negli ultimi cinque secondi^1

Z

Utilizzo totale medio nell'ultimo minuto^2

W

Utilizzo totale medio negli ultimi cinque minuti^2

PID

ID processo

Runtime

Tempo CPU utilizzato dal processo (in millisecondi)

Richiamato

Numero di volte in cui un processo è stato chiamato

Secs

Microsecondi di tempo CPU per ogni chiamata

5 sec

Utilizzo CPU per attività negli ultimi cinque secondi

1 min.

Utilizzo CPU per attività nell'ultimo minuto^2

5 Min.

Utilizzo CPU per attività negli ultimi cinque minuti^2

TTY

Terminale che controlla il processo

Processo

Nome del processo

1Utilizzo CPU a livello di processo = X - Y

2I valori non rappresentano una media aritmetica, ma una media con decadimento esponenziale. Di conseguenza, i valori più recenti esercitano una maggiore influenza sulla media calcolata.

Per ulteriori informazioni, consultare la Guida di riferimento dei comandi show.

Nota: l'utilizzo totale della CPU non deve essere usato come misura della capacità del router di commutare più pacchetti. Sui router Cisco 7500, i Versatile Interface Processor (VIP) e i Route/Switch Processor (RSP) non segnalano l'utilizzo lineare della CPU. Quasi la metà dell'alimentazione fornita dal pacchetto di commutazione al secondo deriva dall'utilizzo dal 90 al 95% della CPU.

Il show interfaces comando

Questo comando è usato per determinare le interfacce attive.

Il show interfaces switching  comando

Questo comando è usato per determinare i percorsi di commutazione attivi sulle interfacce.

Di seguito viene riportato un esempio di output del show interfaces switching comando 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. In questa tabella 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. Viene elaborato il primo pacchetto per questa destinazione (o flusso, a seconda del tipo di commutazione veloce configurato). Tutti i pacchetti successivi vengono commutati rapidamente, a meno che l'opzione di commutazione veloce non sia disabilitata in modo esplicito 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 silicio (rispettivamente per switching autonomo o switching silicio) o sui router Cisco serie 7500 con VIP (per switching distribuito).

Il  show interfaces stat  comando

Questo comando è una versione di riepilogo del show interfaces switching comando. Di seguito viene riportato un esempio di output per un'interfaccia:

RouterA#show interfaces stat

Ethernet0

Switching path    Pkts In   Chars In   Pkts Out  Chars Out

Processor      52077   12245489      24646    3170041

Route cache          0          0          0          0

Distributed cache          0          0          0          0

Total      52077   12245489      24646    3170041

L'output del  show interfaces stat varia a seconda della piattaforma e del percorso di commutazione disponibile e configurato.

Il  show ip nat translations  comando

Il comando show ip nat translations visualizza le traduzioni NAT (Network Address Translation) attive sul router. Ogni traduzione attiva genera interrupt della CPU e ha un impatto sull'utilizzo totale della CPU del router. Un numero elevato di traduzioni può avere un impatto sulle prestazioni del router.

Di seguito viene riportato un esempio dell'output del show ip nat translations comando:

router#show ip nat translations

Pro Inside global    Inside local    Outside local    Outside global

--- 172.16.131.1     10.10.10.1      ---              ---

Il  show align  comando

Questo comando è disponibile solo su piattaforme basate su processore RISC (Reduced Instruction Set Computing). Su queste piattaforme, la CPU è in grado di correggere letture o scritture di memoria non allineate. Di seguito viene riportato un esempio di output:

Alignment data for:

4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1)

Compiled Tue 31-Mar-98 15:05 by jdoe

Total Corrections 33911, Recorded 2, Reads 33911, Writes 0

Initial Initial

Address Count Access Type Traceback

40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0

40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988

Il  show version  comando

Per tenere traccia dei problemi di utilizzo elevato della CPU, le informazioni importanti da trarre dall'output del comando sono la versione del software Cisco IOS, la piattaforma, il tipo di CPU e il tempo di attività del router. La guida di riferimento del comando fornisce una spiegazione dettagliata del comando.

Il  show log  comando

Con questo comando viene visualizzato il contenuto dei messaggi di log nel buffer.

Script EEM per la raccolta automatica dei dati in condizioni di CPU elevate

Embedded Event Manager può essere utilizzato per raccogliere automaticamente i dati quando si verifica una condizione di CPU elevata.  EEM viene attivato monitorando l'OID SNMP per l'utilizzo del processo o monitorando i messaggi syslog per l'output del comando CPU threshold. Tramite lo script EEM è possibile eseguire diversi comandi show e salvare l'output nel file system.

Esempio di script EEM con OID SNMP

Questo script viene eseguito quando l'utilizzo del processo aumenta di circa l'85%.

Per ulteriori informazioni, vedere Come raccogliere l'utilizzo della CPU sui dispositivi Cisco IOS che utilizzano il protocollo SNMP.

event manager applet high-cpu

!

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3 get-type next entry-op gt entry-val 85 poll-interval 5 exit-time 500 maxrun 600

!

action 0.1 cli command "enable"

action 0.2 syslog msg "TAC - Capturing high cpu information to flash:"

action 0.3 cli command "term length 0"

action 1.1 cli command "show process cpu sorted | redirect flash:eem-cpu1.txt"

action 1.2 cli command "show interface | redirect flash:eem-interface1.txt"

action 1.3 cli command "show interface stats | redirect flash:eem-stat1.txt"

action 1.4 cli command "show ip traffic | redirect flash:eem-traffic1.txt"

action 4.1 syslog msg "TAC - Finished logging information to separate eem files in flash"

action 9.4 cli command "end"

action 9.5 cli command "term default length"

!

!

end

Esempio di script EEM con i messaggi di notifica della soglia della CPU

Una combinazione di EEM e il comando CPU threshold notification può attivare lo script EEM. In questo esempio, viene generato un messaggio syslog CPURISHINGTHRESHOLD quando l'utilizzo supera l'85% per un intervallo di 5 secondi.  Lo script EEM può attivare il messaggio syslog ed eseguire un elenco di comandi salvati in un file nel file system.

process cpu threshold type total rising 85 interval 5

!

event manager applet high-cpu

event syslog pattern "CPURISINGTHRESHOLD"

action 0.1 syslog msg "EEM: HIGH CPU detected. Writing info to flash:eem-log.txt"

action 0.2 cli command "enable"

action 0.3 cli command "term exec prompt timestamp"

action 0.4 cli command "term len 0"

action 1.1 cli command "show process cpu sorted | append flash:eem-log.txt"

action 1.2 cli command "show proc mem sorted | append flash:eem-log.txt"

action 1.3 cli command "show mem alloc total | append flash:eem-log.txt"

action 2.2 syslog msg "EEM: Self-removing applet from configuration..."

action 2.5 cli command "end"

!

end

Esempio di script EEM per avviare/arrestare il profilo CPU

EEM viene utilizzato per avviare/arrestare la profilatura della CPU e per registrare i dati da vari comandi show. Per ulteriori informazioni, vedere Risoluzione dei problemi di utilizzo elevato della CPU a causa di interruzioni.

event manager applet High_CPU

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.4.1 get-type exact entry-op ge 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 version | append flash:CPU_Profile.txt"

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 0.7 cli command "show region | append flash:CPU_Profile.txt"

action 1.2 cli command "profile 4000F000 42C9FFFF 4"

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"

Script della shell UNIX per la raccolta periodica dei dati

In questa appendice viene descritto un semplice script che acquisisce periodicamente i dati dal router. Il nocciolo dello script è la seguente:

(echo "show version") | telnet 192.168.1.1

Il comando tra parentesi viene eseguito nella shell secondaria e l'output viene inviato a una sessione Telnet. Questo è uno script di esempio per acquisire l'output dai comandi show version e show processes cpu :

#!/opt/local/bin/bash

###########################################

# Router's IP address

#

IP_ADDRESS='10.200.40.53'

# Directory where the log files can be stored

#

DIR=/var/log/router

########################################

if [ ! -e $DIR ]

then

mkdir $DIR

fi

# Tag specification: mmddhhmm

DATE=`date +'%m%d'`

TIME=`date +'%H%M'`

TAG=$DATE$TIME

# Collect data from the router

(echo "foo";\

echo "bar";\

echo "term len 0";\

echo "show version";\

echo "show processes cpu";\

echo "term len 15";\

echo "show memory summary";\

echo "q";\

sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg

Nota: in questo script tutti i dati, inclusa la password, vengono inviati in formato testo non crittografato.

Nella prima sezione è necessario specificare l'indirizzo IP e la directory di destinazione per i file di log. La seconda sezione contiene i comandi effettivi che vengono inviati al router. Il primo è il nome utente, quindi la password e così via. per acquisire solo le prime righe di output di determinati comandi è incluso. La lunghezza del terminale è impostata su un valore breve (15 in questo caso) e il carattere "q" viene inviato solo al prompt.

Se i dati vengono raccolti periodicamente, l'output di show version mostra se il problema è di natura periodica, ad esempio se viene visualizzato sempre a una determinata ora del giorno o in un particolare giorno della settimana. Se è necessario raccogliere l'output di più comandi, è possibile aggiungerli allo script nello stesso modo in cui sono visualizzati nell'esempio. Se è necessario troncare l'output inviato al file, aumentare innanzitutto il periodo di sospensione (il comando di sospensione tra parentesi).

Eseguire questo script ogni cinque minuti se il problema dell'utilizzo elevato della CPU si presenta spesso e non dura a lungo. In caso contrario, è possibile eseguirlo ogni 15 o 30 minuti. Per facilitare l'utilizzo, salvare lo script in un file quale /usr/bin/router-script . Quindi, per eseguirlo ogni cinque minuti, aggiungere la riga successiva al file /etc/crontab:

*/5       *       *       *       *       /usr/bin/router-script

Riavviare il server cron. Se non si dispone dell'autorizzazione per modificare il file /etc/crontab, eseguire lo script in un processo separato, come il seguente:

while [ 1 ]; do ./router-script ; sleep 300; done &

Informazioni correlate

- Elevato utilizzo della CPU sugli switch Catalyst 2900XL/3500XL

- Nozioni di base sull'ottimizzazione delle prestazioni

- Supporto tecnico Cisco e download