Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Arquitectura

Uso de CPU en Cisco IOSd

Uso de la CPU por tráfico

Núcleos de CPU instalados

Distribución de núcleos de CPU

Prácticas recomendadas para supervisar la CPU

Introducción

En este documento se describe cómo leer el uso de la unidad central de proceso (CPU) en routers de servicios integrados (ISR) de la familia de la serie 4300.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Cisco IOS® XE

- ISR43XX

Componentes Utilizados

La información de este documento se basa en la versión de hardware y 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

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Arquitectura

Las plataformas Cisco ISR serie 4000 ejecutan Cisco IOS XE, que cuenta con una arquitectura de software distribuida que ejecuta un kernel de Linux en el que Cisco IOS® se ejecuta como uno de los muchos procesos de Linux. Cisco IOS se ejecuta como un demonio, que se denomina Cisco IOS-Daemon (IOSd).

Uso de CPU en Cisco IOSd

Para monitorear el uso de la CPU en IOSd, ejecute el 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

El resultado muestra dos valores para el uso de CPU, el primer valor es la cantidad total de uso de CPU y el segundo valor es la cantidad de CPU por interrupciones enviadas a IOSd:

La diferencia entre la cantidad total de CPU y la cantidad de CPU por interrupciones son los valores de CPU consumida por los procesos; para corroborar, agregue el uso de todos los procesos durante los últimos cinco segundos:

- Consumo de CPU de los procesos = 1% - 0% = 1% = Todos los procesos Consumo de CPU enumerados en el comando

Para mostrar los procesos que consumen la mayor cantidad de CPU en la parte superior, ejecute el 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: La adición de todos los procesos puede dar como resultado valores de coma flotante, IOSd redondea el resultado al siguiente entero.

Uso de la CPU por tráfico

El diseño de la familia ISR4300, para reenviar el tráfico, se realiza a través de un elemento denominado procesador QuantumFlow (QFP).

Precaución: QFP se encuentra en ASR1K como uno o varios chips físicos, en el ISR4400 se realiza la misma funcionalidad con los coprocesadores Cavium Octeon, en el ISR4300 esa funcionalidad se realiza en ciertos núcleos de la CPU Intel principal. Puede pensar en el QFP de la familia ISR4300 como un software que reenvía paquetes.

Para determinar la cantidad de CPU consumida por el tráfico, puede ejecutar el comando show platform hardware qfp active datapath utilization:

#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

El comando enumera el uso de CPU de entrada y salida para paquetes prioritarios y no prioritarios, la información se muestra con paquetes por segundo (PPS) y bits por segundo (BPS), la última línea muestra la cantidad total de carga de CPU debido a los valores de reenvío de paquetes en porcentaje (PCT).

Núcleos de CPU instalados

La familia ISR4300 tiene instalada una cantidad diferente de núcleos de CPU que depende del modelo. Para identificar el número de núcleos instalados en su dispositivo, ejecute el 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, ejecute el 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 otro lado, ejecute el comando show platform software status control-processor brief y cualquiera de estos comandos mostrará la cantidad 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

Distribución de núcleos de CPU

El diseño de la familia ISR4300 da como resultado núcleos específicos que se utilizan para el proceso de paquetes. Los núcleos cuatro a siete se reservan para el proceso de paquetes en ISR4331 y 4351, mientras que los núcleos dos y tres se utilizan para ISR4321.

Hasta la versión 16.5.x de Cisco IOS XE incluida debido a motivos de rendimiento, el marco de cola jerárquico (HQF) siempre realiza giros en caliente y se ejecuta con un uso elevado de la CPU, independientemente de la configuración que haya en la caja o de la cantidad de tráfico que atraviese el sistema. En las plataformas ISR4300, esto puede aparecer como un uso elevado de la CPU en uno o más de los núcleos, ya que el software QFP se ejecuta en la CPU principal.

Sin embargo, después de la inclusión de las versiones de Cisco IOS XE 16.6.x, se implementó un cambio para que estas plataformas no hicieran girar los subprocesos en caliente. En este caso, la utilización de la CPU se distribuye más a través de los núcleos.

Para mostrar el uso de hot-spin, ejecute el comando show processes cpu platform sorted, antes de 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

En una arquitectura de ocho núcleos, puede ver el mismo resultado, con un núcleo diferente en la rotación en caliente, antes de 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

Después de la inclusión de Cisco IOS XE 16.6.x, sin embargo, puede ver que hay una distribución de carga entre Core 2 y 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

Después de la inclusión de Cisco IOS XE 16.6.x, se aplica lo mismo que el resultado anterior, pero para los 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

Precaución: si sospecha que existe un problema con el uso de la CPU principal, abra un caso del Technical Assistance Center (TAC) para obtener asistencia y confirmar la estabilidad del dispositivo.

Prácticas recomendadas para supervisar la CPU

Es mejor utilizar los comandos específicos para la utilización de rutas de datos o el uso de IOSd, el resultado de los comandos de visualización de núcleo puede conducir a alertas de falsos positivos.

El comando para monitorear la utilización de la trayectoria de datos es:

- show platform hardware qfp active datapath utilization

El comando para monitorear el uso de IOSd es:

- show process cpu sorted

Utilice cualquiera de estos identificadores de objeto (OID) para supervisar el uso de CPU IOSd con el protocolo simple de administración de red (SNMP):

- busyPer = porcentaje ocupado de CPU IOSd en los últimos 5 segundos

- avgBusy1 = IOSd un minuto de promedio móvil con disminución exponencial del porcentaje de ocupación de CPU

- avgBusy5 = IOSd cinco minutos de promedio móvil exponencialmente decaído del porcentaje ocupado de la CPU