Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Perfilado de aplicaciones distribuidas con Linux perf: Guía práctica

Perfilado de aplicaciones distribuidas con Linux perf: Guía práctica

Optimizar una aplicación madura puede sentirse como buscar una aguja en un pajar. La mejor forma de identificar cuellos de botella reales de rendimiento es dejar que los datos, no la intuición, guíen sus decisiones. En la práctica, el código que más tiempo consume suele ser el menos obvio.

Cuando sospecho que un fragmento de código es lento, primero verifico la evidencia antes de modificarlo.

El perfilado convierte esa intuición en hechos medibles. Aunque hay docenas de profilers en el mercado, elegir la herramienta adecuada para un sistema multi-hilo o distribuido puede ser un desafío. Los profilers tradicionales de conteo de instrucciones como Callgrind pueden distorsionar el tiempo, especialmente bajo alta contención de mutex, porque miden instrucciones en lugar de tiempo de reloj.

Los profilers estadísticos, por otro lado, muestrean el programa en ejecución con bajo overhead, haciéndolos ideales para cargas de trabajo complejas y concurrentes. perf de Linux es un ejemplo principal de este enfoque.

A continuación, un flujo de trabajo paso a paso que demuestra cómo usar perf junto con FlameGraph de Brendan Gregg para identificar puntos calientes en una aplicación distribuida. El ejemplo se dirige a la muestra c/hello_dynamic de RTI Connext 5.3.0.

1. Instalar perf
En Ubuntu, ejecute:

sudo apt-get install linux-tools-common linux-tools-3.13.0-107-generic

2. Clonar FlameGraph
Clone el repositorio en una ubicación conveniente (ej. su directorio home):

git clone https://github.com/brendangregg/FlameGraph

3. Compilar el ejemplo
Navegue a rti_workspace/examples/c y compile con símbolos de depuración:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2
Reemplace el nombre del makefile con el que coincida con su plataforma si es necesario.

4. Ejecutar el publicador mientras se perfila
Inicie un suscriptor en segundo plano, luego lance perf:

objs/x64Linux3gcc4.8.2/Hello sub & sudo perf record -g objs/x64Linux3gcc4.8.2/Hello pub
Tras un breve período de prueba, presione Ctrl+C para detener el publicador. perf generará perf.out.

5. Convertir los datos para FlameGraph
Traduzca la salida de perf a un archivo de pila plegada:

perf script -f | ~/FlameGraph/stackcollapse-perf.pl > out.perf-folded
Luego genere el gráfico de llama visual:
~/FlameGraph/flamegraph.pl out.perf-folded > perf.svg

6. Inspeccionar los resultados
Abra perf.svg en un navegador web. El eje horizontal muestra el tiempo gastado en cada función, mientras que las barras apiladas revelan la pila de llamadas. Hacer clic en una barra hace zoom en esa pila. Ejecutar el publicador sin suscriptor eliminará la porción derecha del gráfico, confirmando que DDS solo emite datos cuando existen suscriptores.

Perf ofrece muchas más opciones —ajustar frecuencia de muestreo, excluir código de kernel o enfocarse en CPUs específicas. Si tiene consejos o ha descubierto herramientas complementarias que simplifican el perfilado, compártalos en los comentarios.

¡Feliz perfilado!

Tecnología de Internet de las cosas

  1. IA en Medicina: 5 Aplicaciones Reales Comprobadas con Ejemplos Prácticos
  2. Router CNC madera: Precisión versátil para muebles de alta calidad y más
  3. Microchip lanza MCUs basados en Arm para misiones espaciales escalables – De COTS a tolerantes a radiación y endurecidos
  4. Sensor de Proximidad Inductivo: Diseño de Circuito, Funcionalidad y Aplicaciones Prácticas
  5. Sensores Analógicos vs Digitales: Tipos, Aplicaciones y Ejemplos Prácticos
  6. Construyendo aplicaciones híbridas Blockchain-Cloud con Ethereum y Google Cloud
  7. Construya apps móviles serverless escalables con React Native y AWS
  8. Cuando la Malla ZigBee Queda Corta: 4 Aplicaciones Mejor Servidas por Topología en Estrella
  9. Elimine cuellos de botella IT con plataformas Low-Code: Simplificando la transformación digital
  10. Ovo Energy Refuerza Estrategia de Energía Distribuida con Adquisición de Red Inteligente VCharge
  11. ¿Puede el molibdeno combinarse con otros elementos? Perspectivas expertas sobre aleación y uso a alta temperatura