A inicialização do Android é lenta?
Meu telefone possui um Quad Core, 3 GB de RAM ... O Android (KitKat e Lollipop) leva cerca de 80 segundos para inicializar.
Meu telefone é apenas dual core com 1G RAM (Zenfone 4) e nunca tenho esse problema. Inicialização a frio em ~ 60 segundos, reinicialize em 40-ish (CyannogenMod 12.1).
alguns usuários relatam menos de 10 segundos de tempo de inicialização usando o Ubuntu com systemd e cerca de 20 segundos ...
Depende da configuração e do que você considerou "tempo de inicialização" . Meu laptop (i5 de 1ª geração, 4 GB de RAM com disco giratório) é considerado utilizável (inicialização concluída) após cerca de 90 segundos. Claro que posso atrasar / desativar alguns dos serviços para obter um tempo de inicialização mais rápido e iniciá-los manualmente, conforme necessário. Mas, no meu ponto de vista, com base na minha preferência, isso não será considerado útil .
No PC vs Celular
Há algumas diferenças que você deve considerar ao comparar entre pc e mobile linux. da CPU até o kernel . Diferenças mais notáveis:
- Devido à natureza do dispositivo, a CPU móvel foi projetada principalmente com a conservação de energia como principal consideração. Isso afeta muito o desempenho.
- O kernel do Android possui alguns recursos específicos para dispositivos móveis que podem afetar o tempo de inicialização e o acesso de E / S do hardware.
- Além disso, o kernel do Android conhecido por ter problemas de compatibilidade com o mainline / stable. Isso se deve principalmente à preferência do fornecedor em manter a versão antiga do kernel compatível com os drivers de dispositivo. O AOSP Marshmallow é executado
3.18.10
enquanto o kernel estável está atualmente em 4.6.2
.
Então, o que torna a inicialização do Android tão lenta?
Por que não checamos? :)
Se você tiver acesso ao adb e já ativar as Opções do desenvolvedor , verifique o log de inicialização usando
adb logcat -d -b events -v threadtime | grep "boot"
no meu dispositivo, esta é a saída:
bambang@pamungkas ~ % adb logcat -d -b events -v threadtime | grep "boot"
06-08 04:35:01.417 193 193 I boot_progress_start: 9906
06-08 04:35:03.718 193 193 I boot_progress_preload_start: 12208
06-08 04:35:07.838 193 193 I boot_progress_preload_end: 16328
06-08 04:35:08.158 513 513 I boot_progress_system_run: 16647
06-08 04:35:09.880 513 513 I boot_progress_pms_start: 18370
06-08 04:35:10.204 513 513 I boot_progress_pms_system_scan_start: 18693
06-08 04:35:24.487 513 513 I boot_progress_pms_data_scan_start: 32977
06-08 04:35:28.552 513 513 I boot_progress_pms_scan_end: 37042
06-08 04:35:28.696 513 513 I boot_progress_pms_ready: 37186
06-08 04:35:33.088 513 513 I boot_progress_ams_ready: 41578
06-08 04:35:40.755 513 533 I boot_progress_enable_screen: 49244
Como você pode ver, o tempo total de inicialização do início da VM até o desenho inicial da tela pelo gerenciador de janelas é de aproximadamente 40 segundos. Tempo adicional no firmware e no espaço do kernel (no seu link associado, isso traduz para as etapas de 1 a 4) não está incluído.
Observe que são necessários ~ 18 segundos para processar o apk do sistema inteiro ( boot_progress_pms_*
), que se traduz em ~ 45% do tempo de inicialização, o que inclui:
- limpeza de pacotes inexistentes do sistema e instalação incompleta de pacotes,
- validando aplicativos instalados,
- definindo o caminho da biblioteca
- etc (veja: código fonte completo do PackageManagerService )
Portanto, geralmente, o tempo total de inicialização depende do número de pacotes (aplicativos) instalados no dispositivo. Mais aplicativo significa mais espera durante o processo de mensagens. Além disso, as atividades iniciais levam aproximadamente 5 segundos / 20% do tempo de inicialização. O resto não é significativo nem modificável com segurança sem um conhecimento profundo dos comportamentos do sistema.
Há algo que eu possa fazer para acelerar o processo de inicialização?
- Tente outra ROM. A Sony é um dos "mocinhos" que proporcionam um ambiente saudável para os tweakers. Eu recomendo AOSP ou cianogênio . Esteja ciente das limitações
- Teste, não assuma! É fácil supor que uma inicialização lenta, B seja mais rápida. Um simples comando logcat como acima revelaria algumas informações úteis para o benchmarking básico do tempo de inicialização entre ROMs.
- Se você sabe o que está fazendo , o Embedded Linux Wiki possui uma lista de possíveis ajustes para melhorar o tempo de inicialização.
Melhorando o tempo de inicialização
No seu comentário
O ART foi projetado para tornar os aplicativos em execução mais rápidos. Quem está trabalhando em um para fazer a inicialização mais rápido fora da caixa ?
Na minha opinião, ajustar o tempo de inicialização é desnecessário e proporciona ganhos insignificantes. Como seu telefone, teoricamente , fica ativado a maior parte do tempo; é muito mais importante manter a estabilidade do sistema (com a troca de um processo de inicialização mais longo) para garantir maior tempo de atividade e menos erros.