L'énigme du déroulage de pile dans Perf

2025-01-31
L'énigme du déroulage de pile dans Perf

Perf, un outil puissant d'analyse de performance, utilise les interruptions de dépassement de compteur PMU pour capturer les états de thread pour le profilage. Cependant, le déroulage de pile pose un défi. Les compilateurs modernes omettent les pointeurs de trame par défaut, ce qui rend le suivi de pile difficile. Bien qu'il soit possible de recompiler avec -fno-omit-frame-pointer, cela coûte cher et peut entraîner des incompatibilités avec les bibliothèques système. DWARF offre une alternative, mais sa complexité et sa surcharge de performance sont considérables, ce qui a conduit Linus Torvalds à rejeter son utilisation dans le déroulage de pile du noyau. Par conséquent, Perf adopte un compromis : copier uniquement la partie supérieure de la pile dans l'espace utilisateur pour le déroulage. Cela limite la taille de la pile (65 528 octets), mais équilibre efficacement les performances et la praticité.