Leçon 26 : perf, Flamegraphs et Capstone — Serveur d'écho TCP
perf est l'outil de profilage standard sous Linux : il mesure les cycles CPU, les cache misses, les branch mispredictions et les appels système. Les flamegraphs convertissent sa sortie en une visualisation intuitive. Dans la section capstone, on construit un serveur d'écho TCP multi-thread en C++ qu
perf, c'est comme un médecin qui ausculte le cœur du programme : il échantillonne ce que fait le CPU toutes les quelques microsecondes et te montre où le temps est gaspillé.
- perf stat
- Mode de perf qui exécute un programme et rapporte des métriques de performance de base : cycles, instructions, cache-misses, branch-misses, context-switches. Un outil de diagnostic rapide.
- perf record
- Mode de perf qui échantillonne le call stack du programme et l'enregistre dans perf.data. Utilisé ensuite avec perf report ou flamegraph.
- flamegraph
- Visualisation d'un profil CPU : axe X = temps CPU (largeur = coût), axe Y = profondeur du call stack. Chaque rectangle = une fonction. Les pics larges = hotspots.
- IPC (Instructions Per Cycle)
- Métrique d'efficacité CPU : combien d'instructions s'exécutent en moyenne par cycle d'horloge. IPC < 1 signale des pipeline stalls (memory bound). IPC ≈ 3-4 pour du code bien optimisé.
- projet capstone
- Un projet qui intègre plusieurs sujets enseignés dans le cours. Dans cette leçon : un serveur d'écho TCP multi-thread en C++ qui utilise sockets, threads, mutexes et epoll.