Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Architettura

Utilizzo CPU su Cisco IOSd

Utilizzo CPU per traffico

Core CPU installati

Distribuzione core CPU

Procedure ottimali per il monitoraggio della CPU

Introduzione

Questo documento descrive come leggere l'utilizzo della CPU (Central Process Unit) sui router di servizio integrati (ISR) dalla famiglia 4300.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Cisco IOS® XE

- ISR 43XX

Componenti usati

Le informazioni di questo documento si basano sulla versione hardware e software:

- ISR 4321/K9

- ISR 4331/K9

- ISR 4351/K9

- 03.16.01a.S // 15.5(3)S1a

- 03.16.04b.S // 15.5(3)S4b

- 16.9.7

- 16.12.4

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.

Architettura

Le piattaforme Cisco ISR serie 4000 eseguono Cisco IOS XE con un'architettura software distribuita che esegue un kernel Linux, in cui Cisco IOS® viene eseguito come uno dei molti processi Linux. Cisco IOS viene eseguito come daemon, denominato Cisco IOS-Daemon (IOSd).

Utilizzo CPU su Cisco IOSd

Per monitorare l'utilizzo della CPU su IOSd, eseguire il comando show process cpu:

#show process cpu

CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 0%

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

1           2           8        250  0.00%  0.00%  0.00%   0 Chunk Manager

2           5          18        277  0.07%  0.00%  0.00%   0 Load Meter

3           0           2          0  0.00%  0.00%  0.00%   0 DiagCard4/-1

4           0           1          0  0.00%  0.00%  0.00%   0 Retransmission o

5           0           1          0  0.00%  0.00%  0.00%   0 IPC ISSU Dispatc

Nell'output vengono visualizzati due valori per l'utilizzo della CPU, il primo valore è la quantità totale di utilizzo della CPU e il secondo valore è la quantità di CPU per interrupt inviati a IOSd:

La differenza tra la quantità totale di CPU e la quantità di CPU per interrupt sono i valori della CPU utilizzata dai processi. Per confermare, aggiungere tutti i processi utilizzati negli ultimi cinque secondi:

- Utilizzo CPU dei processi = 1% - 0% = 1% = Utilizzo CPU di tutti i processi elencati nel comando

Per visualizzare i processi che utilizzano la maggior parte della CPU nella parte superiore, eseguire il comando show process cpu sorted:

#show process cpu sorted

CPU utilization for five seconds: 1%/0%; one minute: 0%; five minutes: 0%

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

64         103          10      10300  0.33%  0.02%  0.00%   0 Licensing Auto U

83          26         231        112  0.27%  0.00%  0.00%   0 PuntInject Keepa

235         555       48176         11  0.11%  0.09%  0.07%   0 Inline Power

1           2           8        250  0.00%  0.00%  0.00%   0 Chunk Manager

Nota: l'aggiunta di tutti i processi può generare valori a virgola mobile. IOSd arrotonda il risultato al numero intero successivo.

Utilizzo CPU per traffico

Per inoltrare il traffico, la famiglia ISR4300 è progettata attraverso un elemento chiamato QuantumFlow Processor (QFP).

Attenzione: QFP si trova su ASR1K come uno o più chip fisici, su ISR4400 la stessa funzionalità è fatta con i co-processori Cavium Octeon, su ISR4300 quella funzionalità è fatta su alcuni core della CPU principale Intel. La funzionalità QFP della famiglia ISR4300 può essere considerata come un componente software che inoltra i pacchetti.

Per determinare la quantità di CPU utilizzata dal traffico, è possibile eseguire il comando show platform hardware qfp active datapath usage:

#show platform hardware qfp active datapath utilization

CPP 0: Subdev 0            5 secs        1 min        5 min       60 min

Input:  Priority (pps)            0            0            0            0

(bps)            0            0            0            0

Non-Priority (pps)            3            2            2            1

(bps)         1448          992          992          568

Total (pps)            3            2            2            1

(bps)         1448          992          992          568

Output: Priority (pps)            0            0            0            0

(bps)            0            0            0            0

Non-Priority (pps)            3            2            2            1

(bps)        12216         8024         8024         4576

Total (pps)            3            2            2            1

(bps)        12216         8024         8024         4576

Processing: Load (pct)            0            0            0            1

Il comando elenca l'uso della CPU di input e output per i pacchetti con priorità e non con priorità, le informazioni vengono visualizzate con i pacchetti al secondo (PPS) e i bit al secondo (BPS), l'ultima riga mostra la quantità totale di carico della CPU dovuto all'inoltro di pacchetti in valori percentuali (PCT).

Core CPU installati

La famiglia ISR4300 ha installato una quantità diversa di core CPU che dipende dal modello. Per identificare il numero di core installati sul dispositivo, eseguire il comando show processes cpu platform:

#show processes cpu platform

CPU utilization for five seconds: 30%, one minute: 29%, five minutes: 29%

Core 0: CPU utilization for five seconds: 13%, one minute: 13%, five minutes: 13%

Core 1: CPU utilization for five seconds:  2%, one minute:  3%, five minutes:  3%

Core 2: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99%

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

1       0      0%      0%      0%  S          1863680  init

2       0      0%      0%      0%  S                0  kthreadd

In alternativa, eseguire il comando show platform software status control-processor:

#show platform software status control-processor

<output omitted>

Per-core Statistics

CPU0: CPU Utilization (percentage of time spent)

User:  4.80, System: 10.30, Nice:  0.00, Idle: 84.50

IRQ:  0.40, SIRQ:  0.00, IOwait:  0.00

CPU1: CPU Utilization (percentage of time spent)

User:  2.00, System:  3.40, Nice:  0.00, Idle: 94.59

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

CPU2: CPU Utilization (percentage of time spent)

User:  0.50, System:  0.00, Nice:  0.00, Idle: 99.49

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

CPU3: CPU Utilization (percentage of time spent)

User: 24.72, System: 75.27, Nice:  0.00, Idle:  0.00

IRQ:  0.00, SIRQ:  0.00, IOwait:  0.00

D'altra parte, eseguire il comando show platform software status control-processor brief e uno qualsiasi di questi comandi visualizza la quantità di core installati:

#show platform software status control-processor brief

<output omitted>

CPU Utilization

Slot  CPU   User System   Nice   Idle    IRQ   SIRQ IOwait

RP0    0   4.30   9.80   0.00  85.90   0.00   0.00   0.00

1   0.79   0.99   0.00  98.20   0.00   0.00   0.00

2   0.50   0.00   0.00  99.50   0.00   0.00   0.00

3  24.60  75.40   0.00   0.00   0.00   0.00   0.00

Distribuzione core CPU

Il design della famiglia ISR4300 si traduce in core specifici utilizzati per il processo dei pacchetti. I core da 4 a 7 sono riservati all'elaborazione dei pacchetti su ISR4331 e 4351, mentre i core 2 e 3 sono utilizzati per ISR4321.

Finché non includerà Cisco IOS XE versioni 16.5.x per motivi di prestazioni, HQF (Hierarchical Queue Framework) offre thread che girano sempre a caldo ed è in esecuzione con un elevato utilizzo della CPU, a prescindere dalla configurazione presente o dalla quantità di traffico che attraversa il sistema. Sulle piattaforme ISR4300, questo può apparire come un elevato utilizzo della CPU su uno o più core, perché il software QFP viene eseguito sulla CPU principale.

Tuttavia, dopo l'inclusione di Cisco IOS XE versioni 16.6.x, è stata implementata una modifica che impedisce a queste piattaforme di attivare i thread. In questo caso, l'utilizzo della CPU è più distribuito attraverso i core.

Per visualizzare l'utilizzo della rotazione a caldo, eseguire il comando show PROCESSES cpu platform sorted, prima di Cisco IOS XE 16.6.x:

#show processes cpu platform sorted

CPU utilization for five seconds: 28%, one minute: 29%, five minutes: 29%

Core 0: CPU utilization for five seconds: 12%, one minute: 13%, five minutes: 14%

Core 1: CPU utilization for five seconds:  2%, one minute:  3%, five minutes:  3%

Core 2: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 3: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

2541    1955     99%     99%     99%  S       1073807360  qfp-ucode-utah <<< high CPU process

1551     929      7%      7%      7%  S       2038525952  fman_fp_image

Su un'architettura a otto core è possibile ottenere lo stesso risultato, con un core diverso in modalità hot-spin, prima di Cisco IOS XE 16.6.x:

#show processes cpu platform sorted

CPU utilization for five seconds: 15%, one minute: 14%, five minutes: 15%

Core 0: CPU utilization for five seconds:  6%, one minute:  4%, five minutes:  8%

Core 1: CPU utilization for five seconds:  1%, one minute:  0%, five minutes:  2%

Core 2: CPU utilization for five seconds:  9%, one minute: 10%, five minutes:  7%

Core 3: CPU utilization for five seconds:  1%, one minute:  2%, five minutes:  1%

Core 4: CPU utilization for five seconds:  1%, one minute:  1%, five minutes:  1%

Core 5: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Core 6: CPU utilization for five seconds: 99%, one minute: 99%, five minutes: 99% <<< hot-spin

Core 7: CPU utilization for five seconds:  0%, one minute:  0%, five minutes:  0%

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

3432    2779     99%     99%     99%  S       1086341120  qfp-ucode-utah <<< high CPU process

2612    1893      7%      7%      7%  S       2038697984  fman_fp_image

26114   25132      4%      5%      5%  R         42803200  hman

Dopo l'inclusione di Cisco IOS XE 16.6.x, è possibile notare una distribuzione del carico tra Core 2 e Core 3:

------------------ show process cpu platform sorted ------------------

CPU utilization for five seconds: 31%, one minute: 32%, five minutes: 29%

Core 0: CPU utilization for five seconds:  3%, one minute:  3%, five minutes:  3%

Core 1: CPU utilization for five seconds:  3%, one minute:  2%, five minutes:  2%

Core 2: CPU utilization for five seconds: 39%, one minute: 41%, five minutes: 34% <<< load distributed

Core 3: CPU utilization for five seconds: 84%, one minute: 83%, five minutes: 79% <<< load distributed

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

26939   26344    127%    126%    116%  S       1195311104  qfp-ucode-utah <<< high CPU process

Dopo l'inclusione di Cisco IOS XE 16.6.x, vengono applicate le stesse impostazioni dell'output precedente, ma per i core da 4 a 7:

------------------ show process cpu platform sorted ------------------

CPU utilization for five seconds: 30%, one minute: 24%, five minutes: 27%

Core 0: CPU utilization for five seconds: 41%, one minute: 13%, five minutes: 13%

Core 1: CPU utilization for five seconds: 23%, one minute: 11%, five minutes: 13%

Core 2: CPU utilization for five seconds: 19%, one minute: 10%, five minutes: 12%

Core 3: CPU utilization for five seconds: 38%, one minute: 12%, five minutes: 12%

Core 4: CPU utilization for five seconds: 28%, one minute: 26%, five minutes: 28% <<< load distributed

Core 5: CPU utilization for five seconds: 53%, one minute: 40%, five minutes: 37% <<< load distributed

Core 6: CPU utilization for five seconds: 18%, one minute: 16%, five minutes: 17% <<< load distributed

Core 7: CPU utilization for five seconds: 93%, one minute: 81%, five minutes: 81% <<< load distributed

Pid    PPid    5Sec    1Min    5Min  Status        Size  Name

--------------------------------------------------------------------------------

26049    25462    164%    165%    170%  S           394128  qfp-ucode-utah <<< high CPU process

Attenzione: se si sospetta un problema nell'utilizzo della CPU di base, aprire una richiesta TAC (Technical Assistance Center) per ottenere assistenza e confermare la stabilità del dispositivo.

Procedure ottimali per il monitoraggio della CPU

Si consiglia di utilizzare i comandi specifici per l'utilizzo dei percorsi di dati o per l'utilizzo di IOSd. Il risultato dei comandi di visualizzazione di base può generare falsi allarmi positivi.

Di seguito è riportato il comando per monitorare l'utilizzo del percorso dati:

- mostra utilizzo percorso dati attivo qfp hardware della piattaforma

Il comando per monitorare l'utilizzo di IOSd è:

- mostra cpu processo ordinata

Utilizzare uno dei seguenti identificatori di oggetto (OID) per monitorare l'utilizzo della CPU IOSd con il protocollo SNMP (Simple Network Management Protocol):

- occupatoPer = percentuale di CPU IOSd occupata negli ultimi 5 secondi

- avgBusy1 = IOSd media mobile di un minuto, con decadimento esponenziale, della percentuale di CPU occupata

- avgBusy5 = IOSd cinque minuti (media mobile esponenzialmente decaduta) della percentuale di CPU occupata