Comment empêcher mDNSResponder d’utiliser 90-100% du CPU en permanence sur Catalina?

Je viens de mettre à niveau mon MacBook Pro 15″ 2018 de Mojave à Catalina (10.15.4). Cela fait quelques heures.

L’une des premières choses que j’ai faites après la mise à niveau a été de monter une vidéo en utilisant la nouvelle version d’essai gratuite de Final Cut Pro X. Les ventilateurs de refroidissement de mon ordinateur portable ont fonctionné à pleine vitesse tout le temps, mais il y avait toujours un rendu en arrière-plan en cours, alors j’ai pensé que c’était normal.

Quand j’ai terminé et quitté FCP, les ventilateurs ne se sont pas arrêtés, alors j’ai vérifié le Moniteur d’activité et j’ai découvert que mDNSResponder prend 90-100% du CPU en continu. La colonne Threads du moniteur d’activité indique 3-4 threads la plupart du temps ; les 100% sont répartis sur tous ces threads, et ils ne sont pas tous sur le même noyau. Je ne suis pas sûr de savoir comment il parvient à faire cela et à rester assis à ou juste en dessous de 100% la plupart du temps, mais c’est ce qu’il fait.

capture d'écran du moniteur d'activité

L’ordinateur portable a six cœurs (12 logiques), donc avoir un cœur entièrement occupé ne fait pas une différence notable dans les performances (à moins que je commence à mesurer combien de temps les choses prennent — mais c’est remarquer que les chiffres sont différents – pas que les performances sont différentes !).

Note : Dans l’ensemble, les graphiques à barres montrent plus d’un cœur complet utilisé. Ceci est attendu. J’ai une recherche appliquée dans ma capture d’écran du moniteur d’activité, et il y a beaucoup d’autres choses qui se passent — Slack est ouvert, Chrome avec onzeybillion d’onglets, IntelliJ IDEA indexe probablement quelque chose, et ainsi de suite.

J’ai essayé de redémarrer mDNSResponder en utilisant ces commandes :

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

J’ai vu le processus disparaître, donc je sais que la commande a fonctionné, mais il est immédiatement revenu à une utilisation de 100% du CPU lorsque je l’ai redémarré. mDNSResponderHelper ne s’est pas arrêté, j’ai donc réessayé, en insérant sudo killall mDNSResponderHelper comme étape intermédiaire. Cela a fait disparaître les deux processus comme je l’avais prévu, mais n’a toujours pas résolu le problème.

J’ai également essayé d’envoyer un signal HUP à mDNSResponder comme suit :

sudo killall -HUP mDNSResponder

Cela n’a également eu aucun effet.

J’ai ouvert Console, entré mdnsresponder dans le champ de recherche, et regardé les messages s’écouler pendant une minute ou deux. Quelques trucs à propos de Bonjour, BEAUCOUP de <private>, et quelques logs de requêtes DNS d’apparence plutôt normale. J’ai essayé de désactiver à la fois Bluetooth et Wifi dans l’espoir d’affecter Bonjour, mais je suis sur une connexion Ethernet câblée (que je n’ai pas déconnectée) et cela n’a pas semblé avoir d’effet.

Après avoir tapé cela, j’ai finalement remarqué que cloudphotosd prenait également une bonne partie du CPU. J’ai supposé que c’était le fameux processus de réindexation qui se produit fréquemment après les mises à niveau du système d’exploitation, passant en revue ma bibliothèque de photos (assez grande), mettant à jour les métadonnées en fonction de toutes les nouvelles fonctionnalités livrées avec Catalina, et téléchargeant ces changements sur iCloud. Cela expliquerait une activité réseau constante, et j’ai donc pensé que cela pourrait expliquer l’activité de mDNSResponder. J’ai donc laissé cette fenêtre ouverte sans la soumettre et j’ai attendu un moment pour voir si cloudphotosd se calmait. Il s’est calmé, mais pas mDNSResponder. Voilà pour cette intuition !

Enfin, j’ai essayé de redémarrer mon Mac ; mDNSResponder n’a pas perdu de temps pour se remettre au travail. Sans aucune application en cours d’exécution après un nouveau démarrage, il était déjà constamment assis à ou juste en dessous de 100%, tout comme avant.

C’est un site Q&A, et je n’ai pas posé de question, alors voilà : comment puis-je comprendre ce qu’il fait, et comment puis-je le faire cesser ?

MISE À JOUR : cela fait presque 48 heures et il est toujours en train de baratter. Ma vie de batterie craint maintenant. J’ai observé que fermer le couvercle de l’ordinateur portable semble le faire s’arrêter, mais il revient tout de suite quand je l’ouvre à nouveau. J’ai également remarqué un autre symptôme : les premières recherches DNS après un redémarrage prennent ~2 secondes (je m’attendrais à <200ms). Je ne sais pas si c’est simplement un effet secondaire de mDNSResponder étant si occupé à faire ce qu’il fait ou si c’est lié à la cause.

MISE À JOUR 2 : cela fait plus de trois semaines. J’ai ajouté une prime de 100 reps. Le délai de consultation du DNS a augmenté ; il prend souvent 20-30 secondes, et bien qu’il semble y avoir une certaine mise en cache en place, je pense qu’il a une expiration basée sur le temps sur elle, parce que le délai se reproduit plus tard sans un redémarrage. Je suis heureux d’interagir directement avec quelqu’un d’assez compétent pour déboguer et diagnostiquer ce problème. Je suis sur l’heure avancée de l’Est aux États-Unis (UTC-4) et généralement disponible pendant les heures de bureau.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.