Como parar o mDNSResponder de usar 90-100% CPU continuamente para sempre em Catalina?

Acabei de actualizar o meu MacBook Pro 2018 de 15″ de Mojave para Catalina (10.15.4). Já se passaram algumas horas.

Uma das primeiras coisas que fiz depois da atualização foi editar um vídeo usando o novo teste gratuito do Final Cut Pro X. Os fãs de refrigeração do meu laptop funcionaram a toda velocidade o tempo todo, mas sempre havia renderização de fundo acontecendo, então achei que isso era normal.

Quando terminei e saí do FCP, os ventiladores não giravam para baixo, então verifiquei o Activity Monitor e descobri que o mDNSResponder está tomando 90-100% da CPU continuamente. A coluna Threads no Activity Monitor indica 3-4 threads na maior parte do tempo; os 100% estão espalhados por todos eles, e não estão todos no mesmo núcleo. Eu não tenho certeza de como ele está conseguindo fazer isso e ainda se senta na maioria das vezes ou pouco menos de 100%, mas é isso que ele está fazendo.

 Screenshot do Activity Monitor

O laptop tem seis núcleos (12 lógicos), então ter um núcleo totalmente ocupado não faz uma diferença notável na performance (a menos que eu comece a medir quanto tempo as coisas levam — mas isso é notar que os números são diferentes – não que a performance é diferente!).

Nota: No agregado, os gráficos de barras mostram mais de um núcleo completo sendo utilizado. Isto é esperado. Eu tenho uma busca aplicada na minha captura de tela do Activity Monitor, e há muitas outras coisas acontecendo — Slack está aberto, Chrome com onze bilhões de abas, IntelliJ IDEA provavelmente está indexando algo, e assim por diante.

Tentei reiniciar o mDNSResponder usando estes comandos:

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

Vi o processo desaparecer, então eu sei que o comando funcionou, mas ele retornou imediatamente para 100% de uso da CPU quando eu o iniciei novamente. mDNSResponderHelper não parou, então eu tentei novamente, inserindo sudo killall mDNSResponderHelper como um passo intermediário. Isto fez ambos os processos desaparecerem como eu pretendia, mas ainda não resolvi o problema.

Tentei também enviar um sinal HUP para mDNSResponder da seguinte forma:

sudo killall -HUP mDNSResponder

Isto também não teve efeito.

Abri o Console, digitei mdnsresponder no campo de busca, e observei as mensagens fluindo por um minuto ou dois. Algumas coisas sobre Bonjour, LOTE de <private>, e algum log de consulta DNS com aspecto bastante normal. Eu tentei desativar ambos Bluetooth e Wifi na esperança de afetar Bonjour, mas eu estou em uma conexão Ethernet com fio (que eu não desconectei) e não parece ter nenhum efeito.

Após digitar isto, eu eventualmente notei que o cloudphotosd também estava tomando um pedaço saudável de CPU. Assumi que este era o notório processo de reindexação que frequentemente acontece após as atualizações do SO, passando pela minha (bastante grande) biblioteca de fotos, atualizando metadados com base em quaisquer novas funcionalidades que vieram com Catalina, e fazendo o upload dessas alterações para o iCloud. Isso explicaria alguma atividade constante na rede, e então pensei que talvez isso explicasse a atividade do mDNSResponder. Então deixei esta janela aberta sem submeter e esperei um pouco para ver se o cloudphotosd se acalmaria. Acalmou, mas o mDNSResponder não acalmou. Lá se vai esse palpite!

Finalmente, tentei reiniciar meu Mac; mDNSResponder não perdeu tempo voltando ao negócio. Sem aplicativos rodando após uma nova inicialização, ele já estava consistentemente sentado a 100% ou menos, como antes.

Este é um site Q&A, e eu não fiz nenhuma pergunta, então aqui vai: como faço para descobrir o que ele está fazendo, e como faço para parar?

UPDATE: já se passaram quase 48 horas e ele ainda está agitando. A minha bateria está uma porcaria agora. Observei que fechar a tampa do laptop parece fazê-lo parar, mas ele volta logo quando eu o abro novamente. Também notei um sintoma adicional: os primeiros acessos DNS após um reboot demoram ~2 segundos (eu esperaria <200ms). Não tenho certeza se isso é simplesmente um efeito colateral do mDNSResponder estar tão ocupado fazendo o que quer que esteja fazendo ou se está relacionado à causa.

UPDATE 2: já se passaram mais de três semanas. Eu adicionei uma recompensa de 100 repetições. O atraso na procura do DNS aumentou; muitas vezes leva de 20 a 30 segundos, e embora pareça haver algum caching no lugar, eu acho que ele tem um prazo de validade baseado no tempo, porque o atraso reaparece mais tarde sem um reinício. Estou feliz em interagir diretamente com alguém com conhecimento suficiente para depurar e diagnosticar este problema. Estou no horário de verão oriental nos Estados Unidos (UTC-4) e geralmente disponível durante o horário comercial.

Deixe uma resposta

O seu endereço de email não será publicado.