Inicialização do Linux lenta? Encontre e otimize serviços de gargalo em 3 minutos com systemd-analyze

Visão Geral

Se o tempo de inicialização do seu servidor ou PC Linux estiver mais demorado do que o normal, é necessário identificar a causa e reduzir atrasos desnecessários. Usando o comando systemd-analyze, você pode facilmente medir o tempo total de inicialização, rastrear serviços do sistema que causam gargalos e validar arquivos de unidade. Este artigo aborda os principais comandos de análise e técnicas de otimização de desempenho prontos para uso prático.

1. Verificação do tempo de inicialização e medição de atrasos por seção (time & blame)

O comando systemd-analyze mede e exibe o tempo total gasto no processo de inicialização, bem como o tempo de inicialização do kernel e do espaço do usuário (userspace).
Ao observar o resultado da execução, é possível confirmar que o sistema levou um total de 315ms para inicializar e alcançar o graphical.target, o ambiente GUI.
⚙️ [Principais opções]

time : Exibe o tempo total consumido no kernel e no userspace durante a inicialização (comportamento padrão).
blame : Lista os serviços que causaram atrasos na inicialização durante o processo de inicialização, em ordem decrescente de tempo gasto.
critical-chain : Exibe a árvore de dependência de serviços do caminho crítico (cadeia de tempo crítico) que causa atrasos na inicialização.
plot : Gera uma linha do tempo gráfica em formato SVG da execução de cada serviço durante todo o processo de inicialização.
dot : Gera os relacionamentos de dependência entre serviços no formato Graphviz dot.

systemd-analyze

O comando systemd-analyze blame | head -n 10 classifica e exibe, em ordem decrescente, os 10 principais serviços que levaram mais tempo para inicializar entre os serviços executados no boot.
No resultado da execução, é possível notar que systemd-resolved.service (68ms) e ldconfig.service (67ms) consumiram a maior parte do tempo durante o processo de inicialização.

systemd-analyze blame | head -n 10

2. Rastreando o caminho crítico de atraso na inicialização (critical-chain)

O comando systemd-analyze critical-chain gera a árvore de dependência (caminho crítico) dos serviços que impactaram diretamente a conclusão da inicialização do sistema.
Na saída, o símbolo @ indica o momento em que a unidade foi ativada ou iniciada, e o símbolo + representa o tempo gasto na execução da própria unidade.
Analisando a árvore resultante, nota-se que, para alcançar o graphical.target (315ms), serviços como systemd-resolved.service (68ms) e systemd-journald.service (39ms) estavam encadeados em série, constituindo o caminho de gargalo crítico que causou o atraso geral no boot.

systemd-analyze critical-chain

O comando systemd-analyze critical-chain networking.service rastreia seletivamente apenas a cadeia crítica até o início de um serviço específico (neste caso, networking.service).
Isso é útil quando você deseja isolar e analisar dependências de gargalo de um serviço de rede ou backend específico, em vez de examinar todo o caminho do sistema.

systemd-analyze critical-chain networking.service

3. Gerando um relatório SVG de visualização da linha do tempo de boot (plot)

Para armazenar e gerenciar sistematicamente os arquivos de relatório de análise de boot, execute o comando mkdir -p ~/systemd-reports para criar um diretório dedicado.

mkdir -p ~/systemd-reports

O comando systemd-analyze plot > ~/systemd-reports/boot-analysis.svg gera e salva o momento de início e o tempo de execução de cada serviço executado durante todo o processo de inicialização como um arquivo gráfico SVG em formato de linha do tempo visual.
Você pode verificar de forma intuitiva, por meio de um gráfico visual, os fluxos de execução paralela e os intervalos de atraso entre serviços, difíceis de compreender apenas com logs de texto.

systemd-analyze plot > ~/systemd-reports/boot-analysis.svg

O comando ls -lh ~/systemd-reports/boot-analysis.svg verifica informações detalhadas, como a existência do arquivo de relatório SVG gerado e seu tamanho (59KB).
O arquivo SVG gerado pode ser aberto em um navegador web ou visualizador de imagens para analisar visualmente o gráfico detalhado da linha do tempo de boot.

ls -lh ~/systemd-reports/boot-analysis.svg

4. Verificação de erros de configuração de unidades de serviço e status de segurança (verify & security)

O comando sudo systemd-analyze verify /lib/systemd/system/ssh.service valida previamente se há erros sintáticos ou omissões de configuração no arquivo de unidade especificado.
Se nenhuma mensagem for exibida após a execução, significa que não há falhas sintáticas ou erros de configuração no arquivo de unidade do serviço.

sudo systemd-analyze verify /lib/systemd/system/ssh.service

O comando systemd-analyze security ssh.service diagnostica as configurações de isolamento de segurança e o nível de exposição do sistema (Security Exposure) da unidade de serviço especificada.
A partir do resultado da execução, é possível verificar detalhadamente o status de aplicação dos principais itens de segurança, como execução com privilégios de root (User=), controle de acesso a dispositivos (PrivateDevices=), prevenção de elevação de privilégios (NoNewPrivileges=), além da pontuação de exposição a riscos.

systemd-analyze security ssh.service

Neste artigo, vimos brevemente como usar o comando systemd-analyze para identificar e otimizar serviços com gargalos que causam atrasos na inicialização.
Organize e desative serviços desnecessários para criar um ambiente de inicialização do Linux muito mais rápido e agradável.