Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Arquitetura

Uso da CPU no Cisco IOSd

Uso da CPU por tráfego

Núcleos da CPU instalados

Distribuição dos núcleos da CPU

Práticas recomendadas para monitorar a CPU

Introdução

Este documento descreve como ler o uso da Unidade de Processo Central (CPU) em Roteadores de Serviço Integrado (ISR) da família da série 4300.

Pré-requisitos

Requisitos

A Cisco recomenda que você tenha conhecimento destes tópicos:

- Cisco IOS® XE

- ISR43XX

Componentes Utilizados

As informações neste documento são baseadas na versão de hardware e software:

- ISR4321/K9

- ISR4331/K9

- ISR4351/K9

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

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

- 16.9.7

- 16.12.4

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 rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Arquitetura

As plataformas Cisco ISR 4000 Series executam o Cisco IOS XE que tem uma arquitetura de software distribuída que executa um kernel Linux, onde o Cisco IOS® é executado como um dos muitos processos Linux. O Cisco IOS é executado como um daemon, que é conhecido como Cisco IOS-Daemon (IOSd).

Uso da CPU no Cisco IOSd

Para monitorar o uso da CPU no IOSd, execute o 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

A saída exibe dois valores para o uso da CPU, o primeiro valor é a quantidade total de utilização da CPU e o segundo valor é a quantidade de CPU por interrupções enviadas para IOSd:

A diferença entre a quantidade total de CPU e a quantidade de CPU por interrupções são os valores de CPU consumidos pelos processos; para confirmar, adicione todos os processos usados nos últimos cinco segundos:

- Consumo de CPU de processos = 1% - 0% = 1% = Todos os processos de consumo de CPU listados no comando

Para exibir os processos que consomem a maior parte da CPU na parte superior, execute o 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

Observação: a adição de todos os processos pode resultar em valores de ponto flutuante, o IOSd arredonda o resultado para o próximo inteiro.

Uso da CPU por tráfego

O design da família ISR4300, para encaminhar o tráfego, é feito por meio de um elemento conhecido como Processador QuantumFlow (QFP).

Cuidado: o QFP é encontrado no ASR1K como um ou vários chips físicos, no ISR4400 a mesma funcionalidade é feita com coprocessadores Cavium Octeon, no ISR4300 essa funcionalidade é feita em certos núcleos da CPU Intel principal. Você pode pensar no QFP na família ISR4300 como um software que encaminha pacotes.

Para determinar a quantidade de CPU consumida pelo tráfego, você pode executar o comando show platform hardware qfp ative 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

O comando lista o uso da CPU de entrada e saída para pacotes prioritários e não prioritários, as informações são exibidas com pacotes por segundo (PPS) e bits por segundo (BPS), a última linha exibe a quantidade total de carga da CPU devido aos valores percentuais (PCT) de encaminhamento de pacotes.

Núcleos da CPU instalados

A família ISR4300 tem uma quantidade diferente de núcleos de CPU instalados que depende do modelo, para identificar o número de núcleos instalados no dispositivo e executar o 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

Como alternativa, execute o 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

Por outro lado, execute o comando show platform software status control-processor brief e qualquer um desses comandos exibe a quantidade de núcleos instalados:

#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

Distribuição dos núcleos da CPU

O design da família ISR4300 resulta em núcleos específicos usados para o processo de pacotes. Os núcleos de quatro a sete são reservados para o processo de pacotes no ISR4331 e 4351, enquanto os núcleos dois e três são usados para o ISR4321.

Até e incluindo as versões 16.5.x do Cisco IOS XE devido a motivos de desempenho, o segmento de recursos do Hierarchical Queue Framework (HQF) sempre gira e é executado com alta utilização da CPU, independentemente da configuração na caixa ou da quantidade de tráfego que passa pelo sistema. Nas plataformas ISR4300, isso pode aparecer como alta utilização da CPU em um ou mais núcleos, pois o software QFP é executado na CPU principal.

Mas, após e incluindo as versões do Cisco IOS XE 16.6.x, uma alteração foi implementada para que essas plataformas não fizessem os threads hot-spin. Nesse caso, a utilização da CPU é mais distribuída pelos núcleos.

Para exibir o uso do hot-spin, execute o comando show processes cpu platform sorted, antes do 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

Em uma arquitetura de oito núcleos, você pode ver o mesmo resultado, com um núcleo diferente em hot-spin, antes do 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

Após e incluindo o Cisco IOS XE 16.6.x, no entanto, você pode ver que há uma distribuição de carga entre o Core 2 e o 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

Após e incluindo o Cisco IOS XE 16.6.x, aplica-se o mesmo que a saída anterior, mas para os Núcleos 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

Cuidado: se você suspeitar de um problema com o uso da CPU principal, abra um caso do Technical Assistance Center (TAC) para obter assistência e confirmar a estabilidade do dispositivo.

Práticas recomendadas para monitorar a CPU

É melhor usar os comandos específicos para utilização de caminho de dados ou uso de IOSd, o resultado dos comandos de exibição principais pode levar a alertas falsos positivos.

O comando para monitorar a utilização do caminho de dados é:

- show platform hardware qfp ative datapath usage

O comando para monitorar o uso do IOSd é:

- show process cpu sorted

Use qualquer um destes Object Identifiers (OID) para monitorar o uso da CPU do IOSd com o Simple Network Management Protocol (SNMP):

- busyPer = Percentual de ocupado da CPU do IOSd nos últimos 5 segundos

- avgBusy1 = IOSd um minuto de média móvel exponencialmente reduzida da porcentagem de ocupação da CPU

- avgBusy5 = IOSd cinco minutos em média móvel exponencialmente reduzida da porcentagem de ocupação da CPU