L'avvio di Android è lento?
Il mio telefono ha un Quad Core, 3 Gig di RAM ... Android (sia KitKat che Lollipop) impiega circa 80 secondi per avviarsi fino al completamento.
Il mio telefono è solo dual core con 1G RAM (Zenfone 4) e non ho mai avuto questo problema. Avvio a freddo in ~ 60 secondi, riavvio in 40 secondi (CyannogenMod 12.1).
alcuni utenti riportano meno di 10 secondi di avvio utilizzando Ubuntu con systemd e circa 20 secondi ...
Dipende dalla configurazione e da quello che hai considerato "tempo di avvio" . Il mio laptop (i5 1st Gen, 4 GB RAM con disco rotante) è considerato utilizzabile (avvio completato) dopo circa 90 secondi. Certo, posso ritardare / disabilitare alcuni servizi per velocizzare l'avvio e avviarli manualmente secondo necessità. Ma dal mio punto di vista, in base alle mie preferenze, ciò non sarà considerato utilizzabile .
Su PC vs cellulare
Ci sono alcune differenze da considerare quando si confronta tra PC e Linux mobile. dalla CPU al kernel . Differenze più rilevanti:
- A causa della natura del dispositivo, la CPU mobile è stata progettata principalmente con risparmio energetico come considerazione principale. Ciò influisce notevolmente sulle prestazioni.
- Il kernel Android ha alcune funzionalità specifiche per dispositivi mobili che possono influire sul tempo di avvio e sull'accesso all'i / o hardware.
- Inoltre, il kernel Android è noto per avere problemi di compatibilità con mainline / stable. Ciò è dovuto principalmente alla preferenza del fornitore di attenersi alla vecchia versione del kernel compatibile con i driver del dispositivo. AOSP Marshmallow funziona
3.18.10
mentre il kernel stabile è attualmente disponibile 4.6.2
.
Quindi, cosa rende l'avvio di Android così lento?
Perché non controlliamo? :)
Se hai accesso ad adb e abiliti già le Opzioni sviluppatore , controlla il registro di avvio usando
adb logcat -d -b events -v threadtime | grep "boot"
sul mio dispositivo, questo è l'output:
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
Come puoi vedere, il tempo di avvio totale dalla macchina virtuale inizia fino a quando il disegno iniziale dello schermo da parte del gestore finestre è di ~ 40 secondi. Non è incluso altro tempo nello spazio del firmware e del kernel (sulla tua risposta collegata, questo passaggio al passaggio 1-4).
Si noti che occorrono ~ 18 secondi per elaborare l' apk ( boot_progress_pms_*
) dell'intero sistema , questo si traduce in ~ 45% del tempo di avvio, che include:
- pulizia di pacchetti di sistema inesistenti e installazione incompleta dei pacchetti,
- convalida app installate,
- impostazione del percorso della libreria,
- ecc. (vedi: codice sorgente completo di PackageManagerService )
Quindi, in generale, il tempo di avvio totale dipende dal numero di pacchetti (app) installati sul dispositivo. Più app significa attendere più a lungo durante il processo pms. Inoltre, l'avvio delle attività richiede ~ 5 sec / 20% del tempo di avvio. Il resto non è né significativo né modificabile in modo sicuro senza una profonda conoscenza dei comportamenti del sistema.
C'è qualcosa che posso fare per accelerare il processo di avvio?
- Prova altra ROM. Sony è uno dei "bravi ragazzi" che offrono un ambiente sano ai tweaker. Raccomando AOSP o Cyanogen . Basta essere consapevoli dei limiti
- Prova, non dare per scontato! È facile supporre che A sia lento, B è più veloce. Un semplice comando logcat come sopra rivelerebbe alcune informazioni utili per il benchmark di base del tempo di avvio tra le ROM.
- Se sai cosa stai facendo , Embedded Linux Wiki ha un elenco di possibili modifiche per migliorare il tempo di avvio.
Migliorare il tempo di avvio
Sul tuo commento
ART è stato progettato per rendere più veloci le app in esecuzione. Chi sta lavorando su uno per rendere l'avvio più veloce fuori dalla scatola ?
A mio avviso, ottimizzare il tempo di avvio è sia inutile che fornisce un guadagno insignificante. Dal momento che il tuo telefono, in teoria , rimarrà sveglio la maggior parte del tempo; è molto più importante mantenere la stabilità del sistema (con il compromesso di un processo di avvio più lungo) per garantire tempi di attività più elevati e meno errori.