Práctica de optimización del rendimiento de Linux: cómo aprender a optimizar el rendimiento de Linux

Actuación

El primer paso para aprender a optimizar el rendimiento es comprender el concepto de "métricas de rendimiento".
"Alta simultaneidad" y "respuesta rápida" corresponden a los dos indicadores principales de la optimización del rendimiento: "rendimiento" y "retraso". Estos dos indicadores examinan el rendimiento desde la perspectiva de la carga de la aplicación y afectan directamente la experiencia del usuario de los terminales del producto. A ellos corresponden indicadores desde la perspectiva de los recursos del sistema , como el uso y la saturación de recursos.
Perspectiva de carga de la aplicación (rendimiento, latencia...)
El análisis de rendimiento es en realidad para descubrir los cuellos de botella de la aplicación o el sistema y tratar de evitarlos o aliviarlos, a fin de utilizar los recursos del sistema de manera más eficiente para procesar más solicitudes. Esto implica la siguiente serie de pasos:

  1. Seleccionar métricas para evaluar el rendimiento de la aplicación y el sistema;
  2. Establecer objetivos de rendimiento para aplicaciones y sistemas;
  3. realizar evaluaciones comparativas de desempeño;
  4. Análisis de rendimiento para localizar cuellos de botella;
  5. optimizar sistemas y aplicaciones;
  6. monitoreo y alerta de desempeño;

Objetivos de aprendizaje

Cree una visión holística del rendimiento general del sistema.
El mapa de herramientas de rendimiento de Linux de Brendan Gregg ( Brendan Gregg ) es el siguiente:
inserte la descripción de la imagen aquí
debe prestar atención a la selección de herramientas, primero comprender los principios y luego combinarlos con escenarios específicos para integrar diferentes componentes del sistema y usarlos de manera flexible.

El aprendizaje de la optimización del rendimiento de Linux se divide en las siguientes partes:

  1. CPU
    1.1 Proceso y principio de CPU
    1.2 Indicadores de rendimiento (carga promedio, uso de CPU, cambio de contexto, tasa de aciertos de caché de CPU)
    1.3 Análisis de rendimiento (top/ps, vmstat, mpstat, sar, pidstat, strace, perf, execsnoop, proc file system)
    1.4 Métodos de ajuste (enlace de CPU, limitación de recursos de CPU de proceso, ajuste de prioridad de proceso, equilibrio de carga de interrupción, caché de CPU, optimización NUMA)

  2. Memoria
    2.1 Principio de la memoria
    2.2 Indicadores de rendimiento (uso de la memoria del sistema, uso de la memoria del proceso, tasa de aciertos de caché y búfer, uso de SWAP) 2.3
    Análisis de rendimiento (free, top, sar, vmstat, cachestat, cachetop, memleak, proc file system)
    2.4 Métodos de ajuste (use caché y búfer, reduzca el uso de SWAP, reduzca la asignación de memoria dinámica, optimice NUMA, limite los recursos de memoria del proceso, use HugePage)

  3. Red
    3.1 Principio de red
    3.2 Indicadores de rendimiento (rendimiento, retraso, pérdida de paquetes, retransmisión TCP)
    3.3 Análisis de rendimiento (ethtool, sar, ping, netstat/ss, ifstat, ifconfig, tcpdump, wireshark, iptables, traceroute, ipcontrack, perf)
    3.4 Ajuste métodos (ajuste de tarjeta de red, ajuste de protocolo, control de recursos, ajuste de kernel)

  4. Disk IO
    4.1 Principio del disco
    4.2 Indicadores de rendimiento (utilización, IOPS, rendimiento, IOWAIT)
    4.3 Análisis de rendimiento (dstat, sar, iostat, pidstat, iotop, iolatency, blktrace, fio, perf)
    4.4 Métodos de ajuste (barra del sistema, recursos de E/S control, uso completo de caché, RAID, aislamiento de E/S)

  5. Sistema de archivos
    5.1 Principio del sistema de archivos
    5.2 Índice de rendimiento (capacidad, IOPS, tasa de aciertos de caché)
    5.3 Análisis de rendimiento (df, strace, vmstat, sar, perf, sistema de archivos proc)
    5.4 Método de ajuste (selección del sistema de archivos, uso de caché del sistema de archivos, aislamiento de E/S)

  6. Kernel de Linux
    6.1 Principio del kernel
    6.2 Análisis de rendimiento (BPF, perf, sistema de archivos proc)
    6.3 Método de ajuste (opción de kernel)

  7. Programa de aplicación
    7.1 Principio del sistema de archivos
    7.2 Indicadores de rendimiento (rendimiento, tiempo de respuesta, uso de recursos)
    7.3 Análisis de rendimiento (método USE, análisis de procesos, APM)
    7.4 Método de ajuste (simplificación lógica, lenguaje de programación, ajuste de algoritmos, E/S sin bloqueo, utilizando cachés y búferes, procesamiento asincrónico y concurrencia, recolección de basura)

  8. Diseño de arquitectura
    8.1 Espacio por tiempo (caché, búfer, datos redundantes)
    8.2 Tiempo por espacio (codificación de compresión, intercambio de páginas)
    8.3 Procesamiento en paralelo (multiproceso, multiprocesamiento, distribuido)
    8.4 Procesamiento asíncrono (E/S asíncrona, cola de mensajes, notificación de eventos)

  9. Supervisión del rendimiento
    9.1 Análisis de series temporales (análisis de tendencias históricas, construcción de modelos de rendimiento, predicción de tendencias futuras)
    9.2 Seguimiento de llamadas de servicio (seguimiento de procesos de llamadas de servicio, análisis de rendimiento de llamadas de servicio, visualización de topología de cadena de llamadas de servicio)
    9.3 Visualización de datos (gráfico de tendencias, gráfico de dispersión, mapa de calor, gráfico circular)
    9.4 Notificación de alarma (selección de umbral, estrategia de alarma, canal de notificación)
    10. Pruebas de rendimiento
    10.1 Requisitos claros (requisitos de recursos del sistema, requisitos de aplicación)
    10.2 Supuestos ambientales (supuestos razonables, simulación del entorno de producción, simulación de carga de producción)
    10.3 Pruebas de rendimiento (evaluación comparativa, pruebas de carga, pruebas de estrés)
    10.4 Análisis de resultados (cuello de botella de la aplicación, cuello de botella de la base de datos, cuello de botella de los recursos del sistema)

punto clave

aprender haciendo

Supongo que te gusta

Origin blog.csdn.net/zkkzpp258/article/details/131606347
Recomendado
Clasificación