Análisis de indicadores de CPU en pruebas de estrés
Los tres indicadores en la prueba de esfuerzo son la utilización de la CPU (utilización de la CPU), el promedio de carga (promedio de carga) y la tasa de cambio de contexto (tasa de cambio de contexto)
¿Utilización de la CPU? Es la tasa de utilización de la CPU por encima del 75% es relativamente alta (algunos dicen que el 80% o más). Además de este indicador, también es necesario combinar el promedio de carga y la tasa de cambio de contexto. Es posible que la CPU alta sea causada por los dos últimos indicadores altos.
¿Carga Promedio?, esto es difícil de medir. He buscado en Internet y no he encontrado algunas explicaciones razonables. Cuando probé 100 usuarios simultáneos, los dos valores fueron: 77,534%, 6,108. La utilización de la CPU fue relativamente alta y el promedio de carga también parecía un poco alto. Más tarde encontré las siguientes dos publicaciones de blog: ¿Entender el promedio de carga y realizar pruebas de estrés? "El promedio de carga es la carga de la CPU. La información que contiene no es el uso de la CPU, sino que la CPU está procesando y esperando el CPU durante un período de tiempo La información estadística de la suma del número de procesos procesados, es decir, la información estadística de la longitud de la cola de uso de la CPU, explica básicamente el principio de los programas multiproceso y multiproceso. ¿Comprender la carga promedio de los procesadores Linux (traducción)?, en términos simples: Carga promedio Por ejemplo, para una CPU de 1 núcleo, Carga promedio < 1 * 1 * 0,7; para una CPU de 4 núcleos, el promedio de carga debe ser < 1 * 4 * 0,7 = 2,8. Ver información de la CPU: grep 'nombre del modelo' /proc/cpuinfo ¿Tasa de cambio de contexto?. Es el cambio de Proceso (Subproceso). Si hay demasiados cambios, la CPU estará ocupada cambiando, lo que también afectará el rendimiento. La sección 2 de este artículo "¿Arquitectura de servidor de alto rendimiento?" trata sobre este tema. ¿Cuánto es apropiado? Busqué mucho en Google y no pude encontrar una explicación exacta. El cambio de contexto generalmente se compone de dos partes: interrupción y cambio de proceso (incluido el hilo). Una interrupción (interrupción) provocará un cambio, y la creación y activación de un proceso (hilo) también provocará un cambio. El valor de CS también está relacionado con TPS (Transacción por segundo). Suponiendo que cada llamada provocará N CS, entonces se puede concluir ?Tasa de cambio de contexto?= Tasa de interrupción + TPS* N CSR menos IR es el cambio de proceso/hilo. Si el proceso principal recibe la solicitud y la entrega al hilo para su procesamiento, y el hilo la devuelve al proceso principal después del procesamiento, esto es dos veces. cambiar. También puede sustituir los valores de CSR, IR y TPS en la fórmula para obtener la cantidad de cambios causados por cada transacción. Por lo tanto, para reducir la CSR, debemos trabajar duro en la conmutación causada por cada TPS. Mientras el valor de N disminuya, la CSR se puede reducir. Idealmente, N = 0, pero en cualquier caso, si N> = 4, debes comprobarlo con atención. Además, en Internet se dice que la CSR es <5000. Creo que el estándar no debería ser tan único. top -d 5 (actualiza un dato superior en 5 segundos) ¿La primera línea del comando top? top - 20:05:30 hasta 24 días, 10:46, 2 usuarios, promedio de carga: 0.04, 0.03, 0.05 El contenido mostrado es "la hora actual del sistema, la hora que el sistema ha estado funcionando hasta ahora, la cantidad de usuarios actualmente conectados al sistema , la carga del sistema (la longitud promedio de la cola de tareas)) Los tres valores son los valores promedio desde hace 1 minuto, 5 minutos y 15 minutos hasta ahora. Estos tres valores generalmente serán menores que 1. Si continúa siendo superior a 5, verifique cuidadosamente qué programa afecta el funcionamiento del sistema. La segunda línea del comando superior: 153 en total, 1 en ejecución, 152 en suspensión, 0 detenidas. 0 zombie El contenido mostrado es "el número de todos los procesos iniciados", "el número de procesos en ejecución", "Número de procesos bloqueados", "Número de procesos detenidos", "Número de procesos zombies" La tercera línea del comando superior? %Cpu(s): 0.1 us, 0.0 sy,? 0.0 si,? st El contenido mostrado es "Porcentaje de CPU ocupado por espacio de usuario", "Porcentaje de CPU ocupado por espacio de kernel", "Procesos de usuario que han cambiado de prioridad en el espacio ocupan el porcentaje de CPU", "Porcentaje de CPU inactiva ", "Porcentaje de tiempo de CPU en espera de entrada y salida (IO)", "Tiempo total invertido por la CPU en atender interrupciones de hardware", "CPU en atender interrupciones suaves" "Tiempo total invertido", "Robar tiempo" (depende principalmente del ID del porcentaje de CPU inactiva) La cuarta línea del comando superior KiB Mem: 16241836 en total, 944800 gratis, 7689124 usados, 7607912 buff/cache El contenido mostrado es "Memoria física total", "Memoria física utilizada", "Memoria física libre" y "Cantidad de memoria caché del kernel". La quinta línea del comando superior KiB Swap: 8257532 en total, 8221180. gratis, 36352 usados 7254304 disponibilidad Mem El contenido mostrado es "área de intercambio total", "área interactiva total utilizada", "intercambio libre" Área total", "Área de intercambio total almacenada" PID: ID de proceso, identificador único del proceso USUARIO: El nombre de usuario real del propietario del proceso. PR: Prioridad de programación del proceso. Algunos valores de este campo son 'rt'. Esto significa que estos procesos se ejecutan en tiempo real. NI: El buen valor (prioridad) del proceso. Los valores más pequeños significan una mayor prioridad. Los valores negativos indican alta prioridad, los valores positivos indican baja prioridad VIRT: Memoria virtual utilizada por el proceso. La cantidad total de memoria virtual utilizada por el proceso, en kb. VIRT=SWAP+RES RES: tamaño de memoria residente. La memoria residente es la cantidad de memoria física no intercambiada que utiliza la tarea. El tamaño de la memoria física utilizada por el proceso y no intercambiada, en kb. RES=CODE+DATA SHR: SHR es la memoria más compartida utilizada por el proceso. ***Tamaño de memoria compartida, unidad kb S: este es el estado del proceso. Tiene los siguientes valores diferentes: D - Estado de sueño ininterrumpido. R – Estado en ejecución S – Estado inactivo T – Seguimiento o detenido Z – Estado zombi %CPU: El porcentaje de tiempo de CPU utilizado por la tarea desde la última actualización. %MEM: El porcentaje de memoria física disponible utilizada por el proceso. TIEMPO+: El tiempo total de CPU utilizado desde que se inició la tarea hasta ahora, con una precisión de una centésima de segundo. COMANDO: El comando utilizado para ejecutar el proceso. Nombre del proceso (nombre del comando/línea de comando) Monitoreo del rendimiento de Linux: /tianlesoftware/archive/2011/02/21/6198780.aspx