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:
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:
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