Explicación del significado de los indicadores de CPU
Linux proporciona información sobre el estado interno del sistema al espacio del usuario a través del sistema de archivos virtual /proc, mientras que /proc/stat proporciona estadísticas de CPU y tareas sobre el sistema
proc - Pseudo sistema de archivos de información del proceso
Query man proc
La interfaz de usuario del sistema.
Query man proc
Parámetros comunes para indicadores clave
usuario (generalmente abreviado como nosotros), que representa el tiempo de CPU del estado del usuario. Tenga en cuenta que no incluye el tiempo agradable a continuación, pero sí el tiempo de los invitados.
Nice (a menudo abreviado como ni), representa el tiempo de CPU del usuario de baja prioridad, es decir, el tiempo de CPU cuando el valor nice del proceso se ajusta entre 1 y 19. Tenga en cuenta que nice varía de -20 a 19, y los valores más altos indican una prioridad más baja.
sistema (a menudo abreviado como sys), representa el tiempo de CPU del kernel.
inactivo (a menudo abreviado como id), representa el tiempo de inactividad. Tenga en cuenta que no incluye el tiempo dedicado a esperar E/S (iowait).
iowait (a menudo abreviado como wa), representa el tiempo que la CPU espera E/S.
irq (a menudo abreviado como hola), representa el tiempo que la CPU dedica a procesar una interrupción brusca.
softirq (a menudo abreviado como si), representa el tiempo que la CPU dedica a procesar softirqs.
Robar (a menudo abreviado como st) representa el tiempo de CPU ocupado por otras máquinas virtuales cuando el sistema se ejecuta en una máquina virtual.
Invitado (a menudo abreviado como invitado), representa el tiempo dedicado a ejecutar otros sistemas operativos a través de la virtualización, es decir, el tiempo de CPU dedicado a ejecutar máquinas virtuales.
guest_nice (a menudo abreviado como gnice), representa el tiempo dedicado a ejecutar la máquina virtual con baja prioridad
Uso de herramientas
top
[root@k8s ~]# top
top - 15:16:08 hasta 4 días,? 3:12,? 1 usuario,? promedio de carga: 3,77, 2,88, 2,52
Tareas: 255 en total, 1 está en ejecución, 254 están durmiendo,? 1 corriendo, 254 durmiendo, 0 zombie
Cpu0: 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 id, 0.0 wa, 0.0 hi,? , 0.0.0 wa, 0.0 hi, 0.0 st
Cpu1: 42.3 us, 4.8 sy, 0.0 ni, 50.2 id, 0.7 wa, 0.0 hi, 2.0 si, 0.0 st
KiB Mem: ? 8173864 en total, 753088 libres, 3961556 usados, 3459220 almacenados en buffer/caché
KiB Swap: 0 en total, 0 gratis, 0 usados.
3474088 Mem disponible
USUARIO PID ?PR?ni virt res shr s?CPU MEM TIME COMMAND
3482 root ?20?0 2430460?1224 760 S?93.7?0.0 832:50.08 kswapd0
29995 raíz ?20?0 5279240? 26508?1760 S?64.2?0.3?25:58.04 tsm
2928 raíz ?20?0 1485424 171912?36504 S?6.6? 2.1 317: 33.63 kubelet
18035 root ?20?0?164248?2480?1612 R?0.3?0.0?0: 00.53 top
// top muestra el promedio de todas las CPU por defecto Utilización, por lo que puede simplemente presionar 1 para cambiar a utilización por CPU.
La columna S (también llamada columna de estado) representa el estado del proceso.
El estado del proceso incluye principalmente los siguientes tipos:
R significa para ejecución o ejecutable, indica que el proceso está en la cola listo de la CPU, en ejecución o esperando para ejecutarse.
D significa suspensión del disco o suspensión ininterrumpida, lo que generalmente significa que el proceso está interactuando con el hardware y no se permite que el proceso de interacción sea interrumpido por otros procesos o interrupciones.
Z significa Zombie, lo que significa que el proceso realmente ha finalizado, pero el proceso principal no ha reclamado sus recursos (como descriptores de proceso, PID, etc.).
S es la abreviatura de Interruptible Sleep, lo que significa que el proceso es suspendido por el sistema porque está esperando un evento. Cuando ocurre el evento que el proceso está esperando, se despierta y entra en el estado R.
I significa Idle, que es el estado inactivo y se utiliza para subprocesos del kernel que no pueden interrumpir la suspensión. Como se mencionó anteriormente, los procesos ininterrumpibles debido a la interacción del hardware están representados por D, pero para algunos subprocesos del kernel es posible que en realidad no tengan ninguna carga, por lo que se usa Idle para distinguir este caso. Tenga en cuenta que los procesos en estado D harán que el promedio de carga aumente, mientras que los procesos en estado I no lo harán.
pidstat
Utilización de CPU del usuario (usr);
Utilización de CPU del kernel (sistema);
Utilización de CPU de máquina virtual en ejecución (invitado);
Espere la utilización de la CPU (esperar);
Utilización total de la CPU (CPU). UPC).
[root@k8s ~]# pidstat 1 5
Linux 3.10.0-1062.4.1.el7.x86_64 (instancia-010oj085) 06/04/2020?_x86_64_ (2 CPU)
03:23:11 PM ?UID ?PID sistema de usuario?CPU invitada?CPU?Comando
03:23:12 PM 0 ?1403 0.00 0.97 0.00 0.97 1? kube-controller
03:23:12 PM 0 ?1638 0.97 0.00 0.00 0.97 1? /p>
03:23:12 PM 0 ? 2574 0.00 0.97 0.00 0.97 1? hosteye
03:23:12 PM 0 ? p> 15:23:12 0 ?3233 0.97 0.00 0.00 0.97 1? p> perf
perf es el analizador de rendimiento integrado de Linux 2.6.31 y versiones posteriores. Se basa en el muestreo de eventos de rendimiento y puede usarse no solo para analizar varios eventos del sistema y el rendimiento del kernel, sino también para analizar problemas de rendimiento de aplicaciones específicas. Puede encontrar funciones de punto de acceso.
[root@k8s ~]# perf top
Muestreo: 75 000 "períodos" de eventos, 4000 Hz, recuento de eventos (aprox.): 26597196684 Perdidos: 0/0 Eliminados: 0 / 0
¿Gastos generales? ¿Compartido con? Símbolo
? 1.57 ? kswapd0 [.] 0x00007fdbbf621e8c
? ] 0x000000000002f147
? 0.61 kswapd0 [.] 0x00000000001c8647
0.60 [.] 0x00007fdbbf621eb5
La primera línea de salida contiene tres elementos de datos: número de muestras, tipo de evento y número total de eventos.
La primera columna, "Gastos generales", es la proporción de los eventos de rendimiento del símbolo entre todas las muestras, expresada como porcentaje.
La segunda columna, compartida, es el objeto compartido dinámico donde se encuentra la función o instrucción, como el kernel, el nombre del proceso, el nombre de la DLL, el nombre del módulo del kernel, etc.
La tercera columna "Objeto" es el tipo de objeto compartido dinámico. Por ejemplo, [.] representa un programa ejecutable o una biblioteca de enlaces dinámicos en el espacio del usuario, mientras que [k] representa el espacio del kernel.
La última columna "símbolo" es el nombre del símbolo o el nombre de la función. Cuando se desconoce el nombre de la función, se expresa como una dirección hexadecimal.
dstat
Con dstat, puedes ver todos los recursos del sistema en tiempo real.
Por ejemplo, puede comparar la utilización del disco calculando el estado actual del controlador IDE o comparar directamente el rendimiento del disco (dentro del mismo intervalo de tiempo) según los valores del ancho de banda de la red
[root@k8s ~] # dstat
No has seleccionado ninguna estadística. p> No seleccionó ninguna estadística, el valor predeterminado es -cdngy.
----uso-total-cpu---- -dsk/total- -net/total- ---paginación-- ---sistema--
usr sys idl wai hiq siq| leer? recv? enviar |? 0 0 |? 0 0 0 | int? 0 0 0 |3645?4917
89?3?6?0?0?3 |0?724k| 0 0 |0 0 |0 0 |0 724k| 394? 0 0 |5252?4447
90?4?5?0?0? |4917?4281
84?3?12?0 0 0 0 2|0? 0 0 0 |4917? 4281
84? /p>
84?4?11?0 0 0?1|? 0 |5246?????????????????? 0 0 |5246?5545
Información de salida predeterminada:
Estado de la CPU. Lo más interesante de este informe es que muestra secciones de usuario, sistema e inactivas, lo que permite un mejor análisis del uso actual de la CPU. Si ve un valor de utilización alto para el estado de la CPU en la columna "En espera", significa que hay otros problemas con el sistema. Cuando el estado de la CPU es "En espera" es porque está esperando una respuesta de un dispositivo de E/S (como memoria, disco o red) pero aún no ha recibido una respuesta.
Estadísticas del disco: esta columna muestra el número total de lecturas y escrituras del disco.
Estadísticas de Red: Datos enviados y recibidos por dispositivos de red, esta columna muestra el número total de datos entrantes y salientes de la red.
Estadísticas de paginación: Actividad de paginación del sistema. La paginación se refiere a una tecnología de administración de memoria que se utiliza para encontrar escenarios de aplicaciones del sistema. La paginación grande significa que el sistema está utilizando una gran cantidad de espacio de intercambio o que la memoria está muy dispersa.
Estadísticas del sistema: esta columna muestra el número de interrupciones (int) y cambios de contexto (csw). Esta estadística sólo es significativa si existe una línea de base para la comparación. Las estadísticas más altas en esta columna generalmente indican que una gran cantidad de procesos están causando congestión y requieren la atención de la CPU.
Su servidor normalmente ejecutará un programa en ejecución, por lo que esta columna siempre mostrará algún valor
pstree
// Especifique el pid para encontrar el proceso principal
[root@k8s ~]# pstree -aps 18035
systemd, 1 --switched-root --system --deserialize 22
?`-sshd, 2504 -D p>
?`-sshd, 16674
?`-bash, 16676
?`-top, 18035
Resumen
CPU de usuario alta y CPU agradable indican que el proceso del área de usuario está consumiendo más CPU, por lo que debe concentrarse en solucionar problemas de rendimiento del proceso.
Una CPU del sistema alta significa que el estado del kernel está consumiendo más CPU, por lo que debes concentrarte en los subprocesos del kernel o las llamadas al sistema.
CPU de espera de E/S alta significa un tiempo de espera de E/S prolongado, por lo que debe concentrarse en verificar si hay problemas de E/S en el almacenamiento del sistema.
Las interrupciones suaves y las interrupciones duras son altas, lo que significa que las interrupciones suaves o los manejadores de interrupciones duras ocupan más CPU, por lo que debes concentrarte en solucionar problemas de la rutina del servicio de interrupción en el kernel.
Estado del proceso
A través de ps o top, puede ver el estado del proceso, incluido en ejecución (R), inactivo (I), suspensión no interrumpible (D), interrumpido dormir (S)), zombie (Z) y pausa (T).
El estado ininterrumpido indica que el proceso está interactuando con el hardware. Para proteger la coherencia de los datos del proceso y el hardware, el sistema no permite que otros procesos o interrupciones interrumpan el proceso. Un proceso que permanece en un estado ininterrumpido durante un período prolongado generalmente indica un problema de rendimiento de E/S.
Un proceso zombie se refiere a un proceso que ha salido, pero su proceso padre aún no ha reclamado los recursos ocupados por el proceso hijo. Una duración corta del estado zombie no suele ser un problema, pero una duración larga del estado zombie indica que es posible que la aplicación no esté manejando correctamente la salida del proceso secundario.
Preguntas frecuentes
Uso elevado de CPU, no se puede encontrar top
La aplicación llama directamente a otros programas binarios, estos programas suelen tener una duración corta, use top , etc. Las herramientas son difíciles de encontrar.
La aplicación en sí fallará y se reiniciará constantemente, y la inicialización de recursos durante el inicio puede consumir mucha CPU.