Lección 26: perf, Flamegraphs y Capstone — Servidor TCP Echo
perf es la herramienta de profiling estándar en Linux: mide CPU cycles, cache misses, branch mispredictions y system calls. Los Flamegraphs convierten su salida en una visualización intuitiva. En la sección capstone construimos un servidor TCP echo multi-hilo en C++ que combina todas las ideas del c
perf es como un médico que escucha el latido del programa: muestrea lo que hace la CPU cada pocos microsegundos y te muestra dónde se desperdicia el tiempo.
- perf stat
- Modo de perf que ejecuta un programa e informa métricas básicas de rendimiento: cycles, instructions, cache-misses, branch-misses, context-switches. Una herramienta de diagnóstico rápido.
- perf record
- Modo de perf que muestrea el call stack de un programa y lo guarda en perf.data. Se usa después con perf report o flamegraph.
- Flamegraph (gráfico de llamas)
- Visualización de un perfil de CPU: eje X = tiempo de CPU (ancho = costo), eje Y = profundidad del call stack. Cada rectángulo = una función. Picos anchos = hotspots.
- IPC (Instructions Per Cycle)
- Métrica de eficiencia de CPU: cuántas instrucciones se ejecutan en promedio por ciclo de reloj. IPC < 1 indica pipeline stalls (memory bound). IPC ≈ 3-4 en código bien optimizado.
- Proyecto final (Capstone)
- Un proyecto que integra varios temas enseñados en el curso. En esta lección: un servidor TCP echo multi-hilo en C++ que usa sockets, threads, mutexes y epoll.