O bloqueio da inicialização é por design. O objetivo do ureadahead é pré-carregar todos os dados que sua inicialização exigirá antes do tempo. A razão para isso é que o principal motivo para a lentidão do disco é o tempo de busca - mesmo os discos rígidos lentos devem ser capazes de extrair leituras de 50 MB / s, mas se você precisar procurá-los em dezenas de milissegundos por busca - que diminui drasticamente. Ao executar antecipadamente, o ureadahead deve ser capaz de minimizar as buscas e, portanto, minimizar o tempo necessário para ler todos os dados que sua inicialização precisará.
Assim, o bootchart ideal se parece com ureadahead a 100% de utilização de E / S, seguido por todo o restante inicializando e usando E / S sem disco. Essa inicialização não é praticamente possível, até porque muitos dos serviços que estamos iniciando gravam no disco, mas essa é a ideia.
Olhando para o seu bootchart, parece que o ureadahead está tendo dificuldades para extrair dados do seu disco - há muito tempo em que ele tem um throughput muito baixo. Mesmo assim, parece que está fazendo um pouco do seu trabalho - depois que o ureadahead inicia sua inicialização é principalmente ligado à CPU, em vez de vinculado à E / S, e parece que as grandes correções de inicialização de E / S estão associadas a preload
disparar.
Você pode querer tentar remover preload
, ou reprofile sua inicialização¹, ou pode ser que alguns dos seus arquivos estejam muito fragmentados, ou pode ser um bug no ureadahead.
1: Remover os arquivos pack
do / var / lib / ureadahead fará com que o ureadahead faça um novo perfil na sua próxima inicialização.