Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Convenzioni

Che cosa sono i processi Exec e Virtual Exec?

In che modo i processi Exec e Virtual Exec possono causare un elevato utilizzo della CPU?

Risoluzione dei problemi relativi all'utilizzo elevato della CPU nel processo di esecuzione

Risoluzione dei problemi relativi all'utilizzo elevato della CPU nel processo Virtual Exec

Informazioni correlate

Introduzione

In questo documento vengono illustrati i processi Exec e Virtual Exec e viene spiegato come risolvere i problemi relativi all'utilizzo elevato della CPU in questi processi.

Prerequisiti

Requisiti

Cisco consiglia di consultare la sezione Risoluzione dei problemi di utilizzo elevato della CPU sui router Cisco prima di procedere con 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.

Che cosa sono i processi Exec e Virtual Exec?

Il processo Exec nel software Cisco IOS® è responsabile della comunicazione sulle linee ty (console, ausiliarie, asincrone) del router. Il processo Virtual Exec è responsabile delle linee vty (sessioni telnet).

I processi Exec e Virtual Exec sono processi con priorità media, pertanto se esistono altri processi con priorità più alta (Alta o Critica), i processi con priorità più alta ottengono le risorse 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

Per una descrizione dettagliata dell'output di questo comando, consultare il comando show processes.

In che modo i processi Exec e Virtual Exec possono causare un elevato utilizzo della CPU?

Se durante queste sessioni vengono trasferiti molti dati, l'utilizzo della CPU per il processo Exec aumenta.

Infatti, quando il router desidera inviare un carattere semplice attraverso queste righe, usa alcune risorse CPU:

- Per la console (Exec), il router utilizza un interrupt per carattere.

L'interrupt della console può essere rilevato nell'output del comando show stack:

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

- Per la linea vty (Virtual Exec), la sessione telnet deve compilare un pacchetto TCP e inviare i caratteri al client telnet.

Risoluzione dei problemi relativi all'utilizzo elevato della CPU nel processo di esecuzione

Di seguito sono elencati i possibili motivi dell'elevato utilizzo della CPU nel processo di esecuzione:

- Troppi dati vengono inviati tramite la porta della console.

Una delle possibili cause è l'esistenza di troppi messaggi della console generati dal router.

1. Verificare se sono stati avviati debug sul router con il comando show debugging.

2. Disabilitare la registrazione della console sul router con (nessuna console di registrazione).

3. Verificare se sulla console è stampato un output lungo (ad esempio, un show tech-support o un show memory).

- C'è un bug nel software Cisco IOS.

Utilizzare Bug Toolkit (solo utenti registrati) per cercare i bug con questo sintomo nella versione software Cisco IOS in uso.

- Il comando exec è configurato per le linee asincrone e ausiliarie.

- Se una linea contiene solo traffico in uscita, il processo di esecuzione dovrebbe essere disattivato per questa linea, poiché se la periferica (ad esempio un modem) collegata a questa linea invia alcuni dati non richiesti, il processo di esecuzione inizierà su questa linea.

- Se il router viene usato come terminal server (per il reverse telnet ad altre console di dispositivi), si consiglia di non configurare alcun exec sulle linee collegate alla console degli altri dispositivi. In caso contrario, i dati restituiti dalla console potrebbero avviare un processo di esecuzione che utilizza risorse CPU.

Risoluzione dei problemi relativi all'utilizzo elevato della CPU nel processo Virtual Exec

Di seguito sono elencati i possibili motivi dell'elevato utilizzo della CPU nel processo Virtual Exec:

- Un bug nel software Cisco IOS

Utilizzare Bug Toolkit (solo utenti registrati) per cercare i bug con questo sintomo nella versione software Cisco IOS in uso.

- Troppi dati inviati attraverso le sessioni telnet.

Il motivo più comune per un utilizzo elevato della CPU nel processo Virtual Exec è il trasferimento di una quantità eccessiva di dati dal router alla sessione telnet.

Questo problema può verificarsi quando si eseguono comandi con output lunghi (ad esempio, show tech-support, show memory e così via) dalla sessione telnet.

La quantità di dati trasferiti tramite ciascuna sessione vty può essere verificata con il 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

- Una sessione telnet bloccata provoca un utilizzo elevato della CPU a causa del processo Virtual Exec. Per cancellare la sessione telnet bloccata, nella maggior parte dei casi è necessario ricaricare il dispositivo. L'altro modo per cancellare la sessione telnet bloccata è cancellare il processo TCP. Il processo TCP può essere identificato con il comando show tcp brief come in questo output:

Router#show tcp brief

TCB       Local Address           Foreign Address        (state)

02FA62D0  172.16.152.75.23        dhcp-171-69-104-.3013  ESTAB

Dall'output sopra riportato, il processo TCP 02FA62D0 deve essere cancellato per cancellare la sessione telnet bloccata con il comando clear tcp tcb 0x02fa62d0 .

Informazioni correlate

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

- Supporto tecnico – Cisco Systems