Sujet : profiling
-
Le profilage continu en production : des profils par échantillonnage permanents et les questions auxquelles ils répondent
Le profilage continu recueille systématiquement des profils CPU et mémoire au fil du temps et les stocke sous forme de séries étiquetées, pour savoir quelle fonction a le plus consommé de CPU hier sur l'ensemble du parc ou ce qui a changé entre deux versions ; les profileurs par échantillonnage rendent cette collecte assez peu coûteuse pour rester active en permanence, et les points d'accès des environnements d'exécution, comme /debug/pprof/ de Go, ou les agents eBPF fournissent les profils.
-
Lire un graphe en flammes : la largeur, ce sont les échantillons, l'axe des x n'est pas le temps
Un graphe en flammes empile les piles d'appels échantillonnées de sorte que la largeur d'un cadre représente la part des échantillons et la hauteur la profondeur de la pile ; l'axe des x est trié par ordre alphabétique, non par le temps. Lire les larges plateaux en haut comme des points chauds actifs sur le CPU, les cadres larges avec de nombreux enfants fins comme des appelants à solliciter moins souvent, et se rappeler qu'un graphe en flammes CPU ne peut pas montrer l'attente.
-
Profilage CPU et GPU des frames : identifier le travail limitant
Utiliser les budgets de temps de frame, les timelines CPU et GPU et des captures contrôlées pour identifier le goulot d'étranglement d'un jeu, sans confondre attente et travail utile.
-
Unity SRP Batcher : optimiser la préparation côté CPU sans le confondre avec l'instancing
Comprendre le rôle du SRP Batcher côté CPU, vérifier la compatibilité des matériaux et des shaders, et le mesurer séparément du GPU instancing.
-
Profilage CPU avec perf : perf top, perf record -g, perf report et perf_event_paranoid
perf top fournit immédiatement un profil en direct ; perf record -g enregistre sur disque un profil avec graphe d'appels que perf report lit ensuite. Le paramètre noyau perf_event_paranoid définit ce qu'un utilisateur non privilégié peut faire, et la résolution des symboles exige des informations de débogage correspondantes pour chaque frame de la pile.
Lisible par machine : JSON