Come fermare mDNSResponder dall’usare continuamente il 90-100% della CPU su Catalina?

Ho appena aggiornato il mio MacBook Pro 15″ del 2018 da Mojave a Catalina (10.15.4). Sono passate alcune ore.

Una delle prime cose che ho fatto dopo l’aggiornamento è stato il montaggio di un video utilizzando la nuova prova gratuita di Final Cut Pro X. Le ventole di raffreddamento del mio portatile hanno funzionato a tutta velocità per tutto il tempo, ma c’era sempre il rendering in background in corso, quindi ho pensato che fosse normale.

Quando ho finito e sono uscito da FCP, le ventole non si sono spente, così ho controllato il Monitor di Attività e ho scoperto che mDNSResponder sta prendendo continuamente il 90-100% della CPU. La colonna Threads in Activity Monitor indica 3-4 threads la maggior parte del tempo; il 100% è spalmato su tutti questi, e non sono tutti sullo stesso core. Non sono sicuro di come riesca a fare questo e a stare ancora al 100% o appena sotto il 100% per la maggior parte del tempo, ma è quello che sta facendo.

screenshot di Activity Monitor

Il portatile ha sei core (12 logici), quindi avere un core completamente occupato non fa una differenza notevole nelle prestazioni (a meno che non cominci a misurare quanto tempo ci mettono le cose — ma questo è notare che i numeri sono diversi – non che le prestazioni sono diverse! Questo è previsto. Ho una ricerca applicata nella mia schermata di Monitoraggio attività, e ci sono molte altre cose in corso — Slack è aperto, Chrome con undici miliardi di schede, IntelliJ IDEA sta probabilmente indicizzando qualcosa, e così via.

Ho provato a riavviare mDNSResponder usando questi comandi:

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

Ho visto il processo scomparire, quindi so che il comando ha funzionato, ma è tornato immediatamente al 100% di utilizzo della CPU quando l’ho riavviato. mDNSResponderHelper non si è fermato, quindi ho provato di nuovo, inserendo sudo killall mDNSResponderHelper come passo intermedio. Questo ha fatto andare via entrambi i processi come volevo, ma ancora non ha risolto il problema.

Ho anche provato a mandare un segnale HUP a mDNSResponder come segue:

sudo killall -HUP mDNSResponder

Anche questo non ha avuto effetto.

Ho aperto Console, inserito mdnsresponder nel campo di ricerca, e ho guardato i messaggi scorrere per un minuto o due. Un po’ di roba su Bonjour, TANTISSIMI <private>, e qualche registrazione di query DNS dall’aspetto abbastanza normale. Ho provato a disabilitare sia il Bluetooth che il Wifi nella speranza di influenzare Bonjour, ma sono su una connessione Ethernet cablata (che non ho scollegato) e non sembra avere alcun effetto.

Dopo aver scritto questo, alla fine ho notato che anche cloudphotosd stava occupando una buona parte della CPU. Ho pensato che questo fosse il famigerato processo di reindicizzazione che avviene frequentemente dopo gli aggiornamenti del sistema operativo, passando attraverso la mia (abbastanza grande) libreria di foto, aggiornando i metadati in base a qualsiasi nuova funzionalità arrivata con Catalina, e caricando queste modifiche su iCloud. Questo spiegherebbe una certa attività di rete costante, e così ho pensato che forse questo spiegherebbe l’attività di mDNSResponder. Così ho lasciato questa finestra aperta senza inviare e ho aspettato un po’ per vedere se cloudphotosd si sarebbe calmato. L’ha fatto, ma mDNSResponder no. Così tanto per quell’intuizione!

Finalmente, ho provato a riavviare il mio Mac; mDNSResponder non ha perso tempo a tornare in attività. Senza applicazioni in esecuzione dopo un nuovo avvio, era già costantemente seduto a o appena sotto il 100%, proprio come prima.

Questo è un sito Q&A, e non ho fatto una domanda, quindi ecco qui: come faccio a capire cosa sta facendo, e come faccio a farlo smettere?

Aggiornamento: sono passate quasi 48 ore e sta ancora sfornando. La durata della mia batteria fa schifo ora. Ho osservato che chiudere il coperchio del portatile sembra farlo smettere, ma torna subito quando lo riapro. Ho anche notato un ulteriore sintomo: le ricerche DNS per la prima volta dopo un riavvio richiedono ~2 secondi (mi aspetterei <200ms). Non sono sicuro se questo è semplicemente un effetto collaterale di mDNSResponder che è così occupato a fare qualsiasi cosa stia facendo o se è legato alla causa.

Aggiornamento 2: sono passate più di tre settimane. Ho aggiunto una taglia di 100 rep. Il ritardo nella ricerca del DNS è aumentato; spesso impiega 20-30 secondi, e mentre sembra che ci sia un po’ di caching in atto, penso che abbia una scadenza temporale, perché il ritardo si ripresenta più tardi senza un riavvio. Sono felice di interagire direttamente con qualcuno abbastanza esperto per eseguire il debug e diagnosticare questo problema. Sono sull’Eastern Daylight Time negli Stati Uniti (UTC-4) e generalmente sono disponibile durante le ore di lavoro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.