Cómo elegir un rastreador de Linux
Hay demasiados rastreadores de Linux para elegir. Cada uno tiene su mascota unicornio de dibujos animados oficial (o no oficial), suficiente para apoyar un "espectáculo infantil".
Entonces, ¿qué trazador debemos utilizar?
Responderé esta pregunta para dos tipos de lectores, la mayoría de las personas y los ingenieros de rendimiento/kernel. Estos pueden cambiar con el tiempo y continuaré dándoles seguimiento y actualizándolos aproximadamente una vez al año.
Muchas
A la mayoría de las personas (desarrolladores, administradores de sistemas, gerentes de desarrollo, personal de operaciones, evaluadores, etc.) no les importan los detalles de System Tracker. Esto es lo que debe saber y hacer con respecto a los rastreadores:
1. Utilice perf_events para analizar el rendimiento de la CPU.
Utilice perf_events para el análisis del rendimiento de la CPU. Las métricas de rendimiento se pueden visualizar a través de herramientas como gráficos de llamas.
git clone - profundidad 1/brendang regg/flame chart
Registro de rendimiento -F 99 -a -g - sleep 30
Script de rendimiento|. /flame graph/stack colapso-perf .pl |. /flame graph/flame graph . pl gt; performance . svg
Linux perf_events (también conocido como "perf", con el mismo nombre de comando) es el rastreador y analizador de rendimiento oficial para usuarios de Linux. Código de kernel incorporado, bien mantenido (y recientemente mejorado muy rápidamente), a menudo agregado a través de kits de herramientas de línea de comandos de Linux.
Perf tiene muchas funciones. Si sólo pudiera recomendar uno, elegiría el análisis del rendimiento de la CPU. Aunque esto es solo una muestra y técnicamente no un evento de seguimiento. La parte más difícil es obtener la información y la pila completa, que ya mencioné en una charla en Netflix.
Conozca a otros rastreadores
Como dijo un amigo mío: "No es necesario saber cómo operar una máquina de rayos X, pero una vez que te tragas una moneda, tienes Para saber, hay que hacer radiografías. "Necesita saber qué pueden hacer varios trazadores, de modo que cuando realmente necesite un trazador en su trabajo, pueda optar por aprender a usarlo más tarde o contratar a alguien para que lo haga.
En resumen: Tracer puede analizar y rastrear casi cualquier cosa. Como sistemas de archivos, procesadores de red, controladores de hardware y todas las aplicaciones. Puede consultar el artículo sobre ftrace en mi sitio web personal, así como la documentación que escribí sobre perf_events, que puede usarse como ejemplo de seguimiento (o análisis de rendimiento).
Busque herramientas de soporte front-end
Si desea comprar una herramienta de análisis de rendimiento que pueda admitir el seguimiento de Linux (hay muchas empresas que venden este tipo de herramientas). Imagine que siempre que haga clic directamente en la interfaz, podrá "ver" todo el núcleo del sistema, incluidos los mapas de calor ocultos de diferentes ubicaciones de la pila. Presenté una herramienta de este tipo con una interfaz gráfica en la charla de Monitorama.
Abrí algunas herramientas front-end que desarrollé, aunque son solo CLI (interfaz de línea de comandos) en lugar de interfaces gráficas. Estas herramientas también harán que sea más fácil y rápido para las personas utilizar el rastreador. Por ejemplo, el siguiente ejemplo utiliza mi perf_tool para rastrear un nuevo proceso:
# ./execsnouptracing exec()s Ctrl-C para finalizar.
PID PPID ARGS
22898 22004 man
UTF-8
22908 22898 buscapersonas
22907 22898 nroff-mandoc-rLL = 164n-rLT = 164n-tut F8
[...]
En Netflix, creamos un Vector, una instancia de la herramienta de análisis y el Interfaz definitiva para Tracer en Linux.
Para ingenieros de rendimiento o kernel
Nuestro trabajo se está volviendo cada vez más difícil y mucha gente nos preguntará cómo rastrearlo y qué ruta se puede utilizar. Para comprender correctamente un camino, a menudo es necesario dedicar al menos 100 horas a recorrerlo. Comprender todos los caminos de Linux para tomar decisiones racionales es una tarea enorme. Probablemente soy el único que se acerca a hacerlo.
Esta es mi sugerencia. Puedes elegir uno:
a) Elegir un camino general y estandarizarlo implicará dedicar mucho tiempo a descubrir sus matices y su seguridad en un entorno de pruebas. Ahora recomiendo la última versión de SystemTap (es decir, creada desde el código fuente). Sé que algunas empresas han elegido LTTng, y es bueno, aunque no muy potente (aunque es más seguro). Si Sysdig puede agregar puntos de seguimiento o kprobes, también podría ser otro candidato.
b) Siguiendo el diagrama de flujo que proporcioné anteriormente, esto significaría usar ftrace o perf_event tanto como sea posible, eBPF se integraría y luego otras rutas como SystemTap/LTTng llenarían el vacío.