Salvar a árvore de dependência do Systemd

0

Como eu sei, systemd armazena dependências entre serviços em arquivos unitários. Eu preciso saber como o systemd se comporta na inicialização:

  1. Carrega arquivos unitários de caminhos específicos e recalcula dependências toda vez que inicializa?

  2. Ou armazena este gráfico de dependência em algum arquivo e carrega este arquivo na inicialização?

no caso (2), pois acho que o gráfico de dependência pode ser recalculado através de algum comando, por exemplo, no sysctl add.

Como vejo nas fontes, é (1). Mas parece que isso tem uma má influência no desempenho. Por que (2) não está implementado? Estou errado? Obrigado.

    
por Alex Hoppus 08.04.2015 / 08:20

2 respostas

2

O gráfico de dependência no systemd é mantido apenas na memória. Não há nenhum cache (binário) em disco das unidades carregadas ou suas propriedades.

But it seems that this have bad influence on performance.

Os arquivos da unidade são completamente relidos e o gráfico de dependência é completamente recalculado toda vez que você emite systemctl daemon-reload ou chama um equivalente método de barramento ( org.freedesktop.systemd1.Reload() ), que é síncrono. Como você pode ver no tempo de execução desse comando, tal recálculo não impede o desempenho de qualquer forma.

    
por 08.04.2015 / 12:07
0

Ele carrega todos os arquivos unitários de dois caminhos específicos (geralmente / usr / lib / systemd / system e / etc / systemd / system ).

O cálculo de dependências é MUITO rápido no systemd. Ele tem um alvo principal definido, como o multi-user.target, que é executado após outros destinos, como basic.target, mas que, ao mesmo tempo, deseja algumas unidades que são, na verdade, links simbólicos no diretório multi-user.target.wants. / p>

Descobrir qual é a ordem em que as unidades seriam executadas deve levar apenas algumas ms para que não seja necessário ter algum tipo de cache para isso.

    
por 08.04.2015 / 11:08