Solução da comunidade

searchd do ZimaOS a 100% de CPU após uma transferência de ficheiros de grandes dimensões: a correção da versão 1.3.2 e a forma como a pesquisa atual agenda a indexação

A January-February 2025 ZimaOS thread where searchd stayed at 100% CPU for hours or days after a large file transfer. IceWhale first explained that Files search required indexing, then identified an occasional pagination-logic corner case, fixed it in 1.3.2-beta2, added idle service folding, moved content indexing to midnight at low resource use, and documented how to disable search.

O comportamento original de elevado consumo de CPU não era simplesmente “a indexação normal pode funcionar indefinidamente”. Após uma transferência de grandes dimensões, searchd permaneceu a 100% de CPU durante horas — e alguns utilizadores relataram vários dias — aumentando a temperatura do sistema e obrigando-os a escolher entre parar a pesquisa ou deixar a CPU ocupada.

Mais tarde, a IceWhale deu uma explicação precisa: um caso limite ocasional na lógica de paginação podia causar o problema de CPU prolongado. Este problema foi corrigido/otimizado no ZimaOS 1.3.2-beta2. A mesma atualização adicionou a suspensão do motor de pesquisa após um período de inatividade, manteve a indexação dos nomes dos ficheiros precisa/em tempo real e transferiu a indexação do conteúdo dos ficheiros para a meia-noite, com menor consumo de recursos. A documentação atual da Pesquisa do ZimaOS evoluiu ainda mais, com limitação explícita e valores muito inferiores de memória e contagem de serviços em inatividade.

o monitor do sistema ZimaOS a mostrar o searchd a consumir 100% da CPU após uma transferência de ficheiros de grandes dimensões
O monitor de origem mostra searchd a consumir a maior parte da CPU depois de a transferência já ter terminado.

A Pesquisa Requer um Índice

Zima-Giorgio explicou inicialmente que a função de pesquisa de Ficheiros precisa de indexar os ficheiros. Essa parte estava correta, mas não explicava por que motivo a CPU permanecia a 100% durante períodos invulgarmente longos.

Mais Tarde, a IceWhale Identificou um Caso Limite na Lógica de Paginação

Em 11 de fevereiro de 2025, orca-zhang afirmou que o problema prolongado de CPU podia ser ocasionalmente causado por um erro na lógica de paginação e que o problema tinha sido corrigido e otimizado na versão 1.3.2-beta2.

Esta é a conclusão mais sólida da fonte e deve substituir a explicação vaga anterior de que “está a indexar”.

A 1.3.2 Adicionou a Suspensão do Serviço de Pesquisa em Inatividade

A IceWhale afirmou que, quando a pesquisa não era necessária, searchd seria libertado após aproximadamente três minutos de inatividade, deixando apenas o zimaos-search serviço abaixo dos 100 MB de memória e cerca de 0–1% de CPU.

A Indexação do Conteúdo Foi Transferida para a Meia-Noite

A mesma resposta separou duas tarefas:

  • índice dos nomes dos ficheiros — mantido tão preciso e em tempo real quanto possível;
  • índice do conteúdo dos ficheiros — adiado até à meia-noite e executado com baixo consumo de recursos.

Essa distinção ainda existe na arquitetura de pesquisa atual.

A documentação atual da IceWhale descreve:

  • monitorização em tempo real das alterações aos ficheiros e indexação dos nomes dos ficheiros;
  • indexação do conteúdo à meia-noite;
  • máximo de 100 000 documentos por tipo de processamento/sessão;
  • máximo de cinco minutos de processamento por tipo;
  • proteção contra picos de CPU através de barreiras de escrita;
  • recolha de memória do serviço após um período de inatividade.

Utilize arquitetura atual da Pesquisa do ZimaOS.

A pesquisa podia ser desativada a partir do ZimaOS 1.3.2

orca-zhang afirmou que a persistência adicionada à /etc na versão 1.3.2 permitia aos utilizadores que não precisavam da pesquisa executar:

systemctl disable zimaos-search

Parar/desativar a pesquisa fará com que a pesquisa de ficheiros comunique que o serviço está indisponível. Os utilizadores atuais devem primeiro verificar o comportamento atual da pesquisa antes de desativarem um serviço essencial apenas devido a um erro histórico.

A captura de ecrã “100% cheia” de /dev/root referia-se a um problema diferente

Outro participante reparou /dev/root apresentava 100% de utilização e o utilizador tentou aumentá-la. A IceWhale explicou que esta representação da raiz SquashFS, só de leitura, é intencional para garantir a integridade do sistema e não deve ser tratada como uma partição raiz convencional, gravável, que necessite de espaço livre.

Não redimensione nem elimine partições do sistema ZimaOS porque a imagem SquashFS indica que estão cheias.

Painel do ZimaOS durante o período de uso elevado do CPU pelo searchd, mostrando a carga do CPU do sistema, o armazenamento e as aplicações instaladas
O elevado uso do CPU pela pesquisa era visível ao nível do sistema, embora o esquema subjacente da raiz do sistema, só de leitura, estivesse a funcionar conforme concebido.

Se a pesquisa utilizar muito CPU no ZimaOS atual

  1. confirme que o sistema está a utilizar a versão estável atual do ZimaOS;
  2. verifique se acabou de ser importado um ficheiro de grandes dimensões;
  3. permita que o período de indexação documentado termine;
  4. monitorize se o CPU diminui após o período de inatividade do serviço;
  5. recolha os dados atuais zimaos-search registos se o CPU continuar elevado muito além do período esperado.

Perguntas frequentes sobre o uso elevado do CPU pelo searchd

Era considerado normal o uso de 100% do CPU durante vários dias?

Não. Mais tarde, a IceWhale identificou um caso-limite na lógica de paginação e corrigiu-o na versão 1.3.2-beta2.

Quando é que o ZimaOS atual faz a indexação de conteúdos?

A documentação atual indica que a indexação de conteúdos é processada durante as horas de menor atividade, à meia-noite, enquanto as alterações aos nomes dos ficheiros são indexadas em tempo real.

O facto de /dev/root estar a 100% significa que o disco do sistema está sem espaço livre?

Não se trata do caso original. A IceWhale explicou que a representação da raiz do sistema SquashFS é intencionalmente só de leitura e deve aparecer cheia.