FREN

#FF00AA


31 mai 2008

Trouver ce qui fait ramer votre Mac

Ca faisait un moment que j’avais des problèmes avec mon iMac où, après quelques jours, chaque lancement d’application faisait tourner le processeur à 100% pendant trente secondes, avec l’augmentation de température qui va avec et les ventilateurs qui tournent à fond — ce qui ne serait pas si gênant si je n’avais pas une série d’applications AppleScript que je lance régulièrement, ou si je ne devais pas relancer Safari de temps en temps pour récupérer des ressources.

Je pensais jusque-là que les coupables les plus probables étaient soient Firefox 3 soit Mercury Messenger, parce que ça semblait arriver de façon plus reproductible après les avoir lancés deux ou trois fois (je ne m’étendrai pas sur les raisons pour lesquelles Firefox et Mercury sont liés dans une même “tâche” de mon “workflow”), donc j’ai commencé à éviter de lancer l’un, ou l’autre, ou les deux — et aujourd’hui ça a commencé à se reproduire alors que j’étais certain de n’avoir lancé ni l’un ni l’autre depuis mon dernier boot. Je suis retourné faire du ménage dans les dossiers InputManagers, puisque ce sont les premiers suspects quand queqlue chose se passe mal au lancement de toutes les applications, mais il n’y avait toujours que 1Password, et l’enlever ne changeait rien. Alors j’ai commencé à réfléchir à d’autres solutions, et je me suis soudain souvenu d’avoir entendu parler d’un certain programme Unix qu’il y a dans OS X et qui devait servir à regarder à l’intérieur de sa machine, voir tout ce qui se passe, tout ça.

Un peu de Google pour trouver la syntaxe dtrace, et voilà, pour la postérité, l’instruction Terminal qui a donné la réponse :

sudo dtrace -n 'syscall::open*:entry { printf("%s %s", execname, copyinstr(arg0)); }'

Avec ça, dtrace affiche en temps réel toutes les ouvertures de fichier ; j’ai regardé ce qui se passait au moment où le processeur s’emballait, et fini par supprimer le plug-in QuickTime “macam” (qui permet d’utiliser de vieilles webcams USB), ce qui semble avoir réglé le problème. Je ne sais pas trop pourquoi un plug-in QuickTime déciderait de se charger avec chaque application au bout d’un certain seuil d’uptime, ni pourquoi le processus serait accéléré par Mercury et/ou Firefox, donc je ne suis pas sûr à 100% d’avoir vraiment trouvé l’origine de mon problème, mais au minimum j’ai trouvé une instruction très utile, d’où ce post.

Vous voulez savoir quand je poste du contenu sur mon blog ? Il suffit de vous inscrire gratuitement à un agrégateur RSS (Feedly, NewsBlur, Inoreader, …) et d'ajouter www.ff00aa.com à vos flux (ou www.garoo.net pour vous abonner à tous les sujets). On n'a pas besoin de newsletters, pas besoin de Twitter, le RSS existe toujours.

Monsieur M, il y a 6 ans :

La même chose en GUI : fseventer

garoo, il y a 6 ans :

Euh... Non ? Ce dont j'avais besoin, c'était de voir les fichiers ouverts, fseventer ne liste que les fichiers modifiés, non ? Je doute qu'un component QuickTime serait apparu dans la liste ?

louije, il y a 6 ans :

Ça semble une bonne solution, parce que c'est dynamique.

Sinon, pour d'autres usages, il y a toujours lsof (list open files), qu'on peut piper dans un grep (lsof | grep Safari, par exemple), ou dont on doit pouvoir traiter le résultat pour savoir quels sont les fichiers les plus ouverts. Ou l'onglet Fichiers ouverts de Moniteur d'activité.

Ah, et les apostrophes sont courbes dans ton bloc de code.

garoo, il y a 6 ans :

Oups, corrigé. Je crois.

Mentions légales : ce blog est hébergé par OVH, 2 rue Kellermann, 59100 Roubaix, France, www.ovhcloud.com.

Les données des visiteurs de ce blog ne sont pas utilisées ni transmises à des tiers. Les posteurs de commentaires peuvent demander leur suppression par e-mail.

Tous contenus © de l'auteur ou couverts par le droit de citation.