Aula 26: perf, Flamegraphs e capstone — servidor TCP Echo
O perf é a ferramenta padrão de profiling no Linux: ele mede ciclos de CPU, cache misses, branch mispredictions e system calls. Os Flamegraphs convertem sua saída em uma visualização intuitiva. Na parte capstone vamos construir um servidor TCP echo multi-thread em C++ que combina todas as ideias do
O perf é como um médico ouvindo o batimento cardíaco do programa: ele amostra o que a CPU está fazendo a cada poucos microssegundos e mostra onde o tempo está sendo desperdiçado.
- perf stat
- Modo do perf que roda um programa e reporta métricas básicas de desempenho: cycles, instructions, cache-misses, branch-misses, context-switches. Uma ferramenta de diagnóstico rápido.
- perf record
- Modo do perf que amostra a call stack de um programa e salva em um arquivo perf.data. Usado depois com perf report ou flamegraph.
- flamegraph
- Visualização de um perfil de CPU: eixo X = tempo de CPU (largura = custo), eixo Y = profundidade da call stack. Cada retângulo = uma função. Picos largos = hotspots.
- IPC (Instructions Per Cycle)
- Métrica de eficiência da CPU: quantas instruções são executadas em média por ciclo de clock. IPC < 1 sinaliza pipeline stalls (memory bound). IPC ≈ 3-4 em código bem otimizado.
- capstone project
- Um projeto que integra vários temas ensinados no curso. Nesta aula: um servidor TCP echo multi-thread em C++ usando sockets, threads, mutexes e epoll.