Glossário/Processos que você vai ver

logd

Também: registro unificado

Resposta rápida

logd é o processo do macOS que executa o registro unificado, o registro de todo o sistema com o que o macOS e os seus apps relatam enquanto rodam. Cada processo entrega as mensagens de log ao logd, que as comprime, mantém as recentes na memória e salva o resto em um armazenamento de logs no disco, de onde o app Console e o comando log no Terminal as leem.

Existe um único logd, ele roda como root e o launchd o inicia quando o Mac liga. Desde o macOS Sierra, a maioria das mensagens não vai mais para arquivos de texto em /var/log. Os apps as entregam ao logd, que as guarda em um formato binário comprimido em /var/db/diagnostics, com o texto fixo de cada mensagem guardado em /var/db/uuidtext. É por isso que você lê o log com o Console ou com o comando log, e não abrindo um arquivo.

O uso de CPU e de disco dele acompanha o quanto o resto do Mac está registrando. Em um Mac tranquilo, ele usa uma fração de um por cento. Quando o logd está perto do topo da lista, quase nunca é culpa dele: outro processo está escrevendo mensagens muito mais rápido do que o normal, e o logd está fazendo o trabalho de guardá-las.

Por que o logd está usando tanta CPU ou disco

Um app ou processo em segundo plano está registrando em loop. Um processo que falha e tenta de novo muitas vezes por segundo, como um cliente de rede que não alcança o servidor, uma sincronização travada ou um driver que relata o mesmo erro sem parar, pode escrever centenas de milhares de mensagens por minuto. O logd comprime e salva cada uma, e a CPU e os Bytes Gravados dele sobem junto.

Um registro extra ativado para solucionar problemas tem o mesmo efeito. Um perfil de registro instalado para um relatório de bug, ou uma mudança feita com o comando log config, faz o logd salvar mensagens que normalmente ele só manteria na memória.

O que fazer

Encontre o processo que está inundando o log e resolva esse processo, não o logd. No Terminal, log stats --last 5m classifica os processos pelo quanto registraram nos últimos cinco minutos. Encerre ou atualize o app que estiver no topo, ou reinicie o Mac se for um processo em segundo plano travado.

Se você instalou um perfil de registro de que não precisa mais, remova-o em Ajustes do Sistema → Geral → Gerenciamento de Dispositivos. Encerrar o logd não ajuda: o macOS o inicia de novo na hora, e o processo que está inundando o log continua.

Como encontrar o processo que está inundando o log

O logd é quem armazena, então a pergunta útil é quem está escrevendo. O Monitor de Atividade mostra o custo e o Terminal mostra o culpado.

  1. Abra o Monitor de Atividade, clique na aba CPU, escolha Visualizar → Todos os Processos e digite logd no campo de busca. Anote a % CPU dele.
  2. Clique na aba Disco e observe os Bytes Gravados do logd. Um valor que sobe rápido significa que ele está salvando uma enxurrada de mensagens no disco.
  3. Limpe o campo de busca e ordene a aba CPU por % CPU. O processo que está inundando o log muitas vezes também está ocupado, e pode estar reiniciando sem parar, com um PID novo a cada vez.
  4. Abra o Terminal e execute log stats --last 5m. Em processes, ele lista os processos que mais registraram nos últimos cinco minutos, com o número de eventos e de bytes. O WindowServer e alguns outros processos do sistema registram muito em qualquer Mac, então procure um processo com uma fatia fora do comum, ou um que deveria estar ocioso.
  5. Para ler o que esse processo está dizendo, execute log show --last 5m --predicate 'process == "Name"', com o nome do processo no lugar de Name. Para acompanhar ao vivo, use log stream com o mesmo predicado e pressione Control-C para parar.

Uso normal do logd ou sinal de problema

Normal: o logd fica bem abaixo de alguns por cento de CPU, com subidas curtas quando o Mac liga, sai do repouso ou quando muitos apps abrem ao mesmo tempo.

Vale investigar: o logd fica perto do topo da lista de CPU por minutos seguidos, ou os Bytes Gravados dele continuam crescendo rápido enquanto você faz pouca coisa. Estas são as causas comuns:

  • Um processo que falha e tenta de novo em um loop apertado, como um cliente de rede que não alcança o servidor ou uma sincronização travada.
  • Um auxiliar que trava e é iniciado de novo na mesma hora, registrando a mesma inicialização e a mesma falha a cada vez.
  • Registro de depuração ou de informações ativado com log config, ou por um perfil de registro instalado para um relatório de bug.
  • Um app com registro detalhado ativado nos próprios ajustes, ou uma versão de teste de um app que registra tudo.
  • O Console deixado transmitindo ao vivo, ou uma ferramenta que lê o log ao vivo o tempo todo. Esse custo aparece principalmente no diagnosticd, o companheiro do logd.

Como ler o log no Console

O Console, em Aplicativos → Utilitários, mostra o mesmo log em uma janela. Clique em Iniciar na barra de ferramentas para ver as mensagens conforme chegam e digite o nome de um processo no campo de busca para mostrar só as mensagens que o mencionam. Quando um processo enche a tela mais rápido do que você consegue ler, você encontrou o que ocupa o logd.

Pare a transmissão quando terminar. Enquanto o Console mostra o log ao vivo, o diagnosticd e os processos que registram fazem trabalho extra, o oposto do que você quer em um Mac que já está ocupado.

Perguntas frequentes

O que é logd no Mac?

O processo do macOS por trás do registro unificado. Todo app e processo do sistema envia as mensagens de log ao logd, que as comprime e guarda para que o Console e o comando log possam mostrá-las.

Por que o logd está com CPU alta?

Quase sempre porque outro processo está escrevendo mensagens de log em loop, e o logd precisa guardar todas. Execute log stats --last 5m no Terminal para ver qual processo está registrando mais.

Posso apagar os logs que o logd guarda?

Pode, mas raramente há motivo. O macOS descarta sozinho as mensagens antigas quando o armazenamento de logs chega ao limite de tamanho, então ele não cresce sem fim. Se você precisar limpá-lo, sudo log erase --all remove as mensagens guardadas, junto com o histórico de que você ou o Suporte da Apple precisariam para diagnosticar um problema. Não apague /var/db/diagnostics nem /var/db/uuidtext à mão.

O que é o diagnosticd no Mac?

Outra parte do sistema de registro unificado. O logd armazena as mensagens, e o diagnosticd as entrega ao vivo para o Console e para o log stream. Ele só usa mais CPU enquanto um desses está mostrando o log ao vivo.

É seguro encerrar o logd?

Não causa dano duradouro, porque o macOS o inicia de novo na hora, mas também não ajuda. O processo que estava inundando o log continua, e o logd retoma o trabalho assim que reinicia.

Relacionados

Procurando algo melhor que o Monitor de Atividade? Veja as melhores alternativas ao Monitor de Atividade para Mac ou navegue por todos os termos do glossário.