Lexique/Quand quelque chose ne va pas
Échantillonner l’opération
Aussi : échantillonner une app, échantillon de processus, sample
En bref
Échantillonner l’opération est un outil du Moniteur d’activité qui enregistre ce que fait un processus sélectionné pendant quelques secondes et produit un rapport texte indiquant où ses threads passent leur temps. Les développeurs s’en servent pour comprendre pourquoi une app est lente, occupée ou bloquée.
Selon Apple, Échantillonner l’opération crée un rapport sur un processus sélectionné pendant 3 secondes. Le rapport liste chaque thread et les fonctions qu’il exécutait, avec le nombre de fois où chacune est apparue.
Vous n’avez pas besoin de lire le rapport vous-même. Il est surtout utile quand une app est bloquée ou utilise beaucoup de processeur et que vous voulez envoyer quelque chose de concret au développeur.
Sur cette page
- Comment échantillonner un processus dans le Moniteur d’activité
- Comment échantillonner un processus depuis le Terminal
- Comment lire un rapport d’échantillon
- Comment enregistrer un échantillon dans un fichier depuis le Terminal
- Quand un échantillon aide, et quand il n’aide pas
- Comment envoyer un échantillon à un développeur
Comment échantillonner un processus dans le Moniteur d’activité
Sélectionnez le processus, puis cliquez sur le bouton aux trois points en haut de la fenêtre et choisissez Échantillonner l’opération. Vous pouvez aussi double-cliquer sur le processus et cliquer sur Échantillonner dans la fenêtre qui s’ouvre.
Quand le rapport s’affiche, vous pouvez l’enregistrer en fichier texte et le joindre à un rapport de bug ou à une demande d’assistance.
Comment échantillonner un processus depuis le Terminal
Lancez sample <PID> 5 pour échantillonner un processus pendant 5 secondes. Vous pouvez utiliser une partie du nom du processus au lieu du PID. Le rapport est affiché et enregistré dans un fichier, dont le chemin apparaît à la fin.
Comment lire un rapport d’échantillon
Le rapport commence par un en-tête : le nom et le PID du processus, son chemin, son processus parent, le type de code et la version de macOS. La partie importante vient ensuite, sous Call graph.
Le graphe d’appels (Call graph) liste chaque thread. Le thread principal, celui qui gère les clics et les frappes au clavier, est nommé com.apple.main-thread. Sous chaque thread, les fonctions sont indentées pour montrer quelle fonction a appelé laquelle. Le nombre en début de ligne indique combien de fois cette fonction était sur la pile au moment d’un prélèvement.
- Suivez les lignes aux plus grands nombres jusqu’à l’indentation la plus profonde. C’est là que le thread a passé le plus de temps.
- Si les lignes les plus profondes du thread principal sont des appels d’attente comme
mach_msg,__psynch_cvwaitou__semwait_signal, le thread était bloqué dans l’attente d’autre chose. - Si les lignes les plus profondes sont les propres fonctions de l’app avec de grands nombres, le thread était occupé à travailler.
- La section « Sort by top of stack » vers la fin liste les fonctions qui s’exécutaient le plus souvent : c’est un résumé rapide des mêmes données.
- La liste Binary Images, à la fin, nomme les frameworks et les bibliothèques chargés dans le processus.
Comment enregistrer un échantillon dans un fichier depuis le Terminal
La commande sample vous donne plus de contrôle que le Moniteur d’activité. Sa durée par défaut est de 10 secondes, et vous pouvez la changer.
- Ouvrez le Terminal depuis Applications > Utilitaires.
- Trouvez l’identifiant du processus avec
pgrep -lx Safari, en remplaçant Safari par le nom du processus. - Lancez
sample <PID> 10 -file ~/Desktop/sample.txtpendant que le problème se produit. - Ouvrez le fichier sur votre Bureau, ou joignez-le à un rapport de bug.
Quand un échantillon aide, et quand il n’aide pas
Un échantillon est un instantané d’un seul processus. Utilisez-le quand vous savez déjà quelle app pose problème.
- Utile : une app est figée, un processus garde un % processeur élevé, ou une app est lente sur une tâche précise que vous pouvez reproduire.
- Moins utile : tout le Mac est lent et vous ne savez pas pourquoi. Un spindump, qui couvre tous les processus, convient mieux.
- Inutile : le problème est déjà passé. Un échantillon ne montre que ce qui s’est passé pendant qu’il tournait.
Comment envoyer un échantillon à un développeur
Un échantillon seul est utile, mais une courte note le rend bien plus facile à exploiter.
- Prenez l’échantillon pendant que l’app est figée ou occupée, pas après qu’elle s’est remise.
- Enregistrez le rapport en fichier texte au lieu d’en copier une partie. Les développeurs ont besoin du graphe d’appels complet et de la liste Binary Images.
- Notez ce que vous faisiez quand le problème a commencé, comme le fichier ouvert ou le bouton sur lequel vous avez cliqué.
- Indiquez la version de l’app et votre version de macOS. Les deux figurent aussi dans l’en-tête du rapport, à côté de Version et OS Version.
- Envoyez-le via la page d’assistance ou l’outil de suivi de bugs de l’app, ou à Apple via l’Assistant d’évaluation si l’app vient d’Apple.
Questions fréquentes
À quoi sert Échantillonner l’opération dans le Moniteur d’activité ?
L’outil enregistre ce que fait un processus pendant environ 3 secondes et affiche un rapport de ses threads et du code qu’ils exécutaient. Les développeurs s’en servent pour diagnostiquer les blocages et un processeur élevé.
Est-ce sans risque d’échantillonner un processus ?
Oui. L’échantillonnage ne fait qu’observer le processus. Il ne le modifie pas et ne l’arrête pas.
Quand faut-il échantillonner un processus ?
Pendant que le problème se produit, par exemple quand une app est figée ou utilise beaucoup de processeur. Un échantillon pris une fois qu’elle s’est remise ne montrera pas la cause.
Combien de temps dure Échantillonner l’opération ?
Dans le Moniteur d’activité, l’enregistrement dure environ 3 secondes. La commande sample dans le Terminal enregistre 10 secondes par défaut, ou le nombre de secondes que vous indiquez.
Un rapport d’échantillon contient-il des informations personnelles ?
Il contient le nom du processus, des chemins de fichiers et les bibliothèques chargées, et les chemins peuvent inclure votre nom d’utilisateur. Relisez-le avant de le publier où que ce soit.
Pourquoi l’échantillon affiche-t-il des points d’interrogation au lieu des noms de fonctions ?
Les noms de symboles n’étaient pas disponibles pour ces parties de l’app. Le développeur peut quand même faire correspondre les adresses à son code : envoyez le rapport tel quel.
Voir aussi
Vous cherchez mieux que le Moniteur d’activité ? Consultez les meilleures alternatives au Moniteur d’activité pour Mac, ou parcourez tous les termes du lexique.