por que lsb_release parece mais lento que um programa que deveria imprimir alguns bytes?

1

Estou apenas imaginando porque em todas as caixas de linux, o lsb_release demora mais tempo para imprimir algumas informações sobre distro,
Alguém poderia me esclarecer sobre esse fato? por favor.

    
por Jonas 11.01.2016 / 14:14

1 resposta

4

Imprimir alguns bytes não é a parte difícil. A parte difícil é encontrar quais bytes devem ser impressos. Para fazer isso, lsb_release precisa analisar muitos arquivos do sistema. Você pode ver onde está gastando tempo em E / S rastreando suas chamadas de sistema:

strace -f -tt -T -o lsb_release.strace lsb_release

Na minha máquina, cerca de 1/3 do tempo é gasto executando o comando

dpkg-query -f '${Version} ${Provides}\n' -W lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-security

que analisa o banco de dados de pacotes instalados. Não há outro consumidor significativo de E / S.

Como este é um script Python, você também pode usar o profiler do Python para ter uma ideia de onde está gastando tempo:

python -m cProfile

Isso não é muito revelador para mim, o maior momento em que os consumidores estão relacionados à inicialização do script (ele usa algumas bibliotecas) e à invocação do subprocesso dpkg .

    
por 12.01.2016 / 01:00