systemd-analyze
é seu amigo.
Por exemplo, systemd-analyze critical-chain
envia a árvore de bloqueio dos daemons.
Meu por exemplo:
graphical.target @20.211s
└─multi-user.target @20.211s
└─nginx.service @19.348s +862ms
└─network.target @19.347s
└─NetworkManager.service @10.315s +9.031s
└─basic.target @10.312s
└─timers.target @10.311s
└─systemd-tmpfiles-clean.timer @10.311s
└─sysinit.target @10.295s
└─systemd-update-utmp.service @10.167s +127ms
└─systemd-tmpfiles-setup.service @10.124s +41ms
└─local-fs.target @10.097s
└─home-entd-Downloads.mount @10.093s +2ms
└─home.mount @9.326s +672ms
└─[email protected] @8.472s +696ms
└─dev-sda6.device @8.471s
NetworkManager no exemplo basicamente mantendo o boot inteiro.
Se você quiser ter uma visão mais detalhada, você pode renderizar toda a cadeia de execução em um arquivo svg.
systemd-analyze plot > something.svg
gera toda a cadeia (mais de 120 módulos) como barras de progresso para o arquivo SVG de alta resolução, que mostra estados bloqueados e outros problemas.
Finalmente, você tem a ferramenta systemd-analyze dot
, que gera o arquivo de pontos que gera toda a hierarquia:
%código%
Com a ferramenta de pontos, você pode gerar arquivos ps e svg.
Todas as ferramentas acima são integradas na ferramenta systemd-analyze, que vem por padrão com o systemd no archlinux, pelo menos. Eu acho que há alguns projetos de terceiros lidando com isso também.