Esta pregunta me preocupa (y quizás muchas por ahí) porque no hay una parte giratoria en mi teléfono.
Mi teléfono tiene un Quad Core, 3 Gig de RAM y mucho espacio de almacenamiento, todo de tipo SSD, con increíbles velocidades de lectura / escritura.
Con todo esto, Android (tanto KitKat como Lollipop) tarda unos 80 segundos en iniciarse para completarse. Se necesita mucho menos en Ubuntu usando systemd o upstart. (algunos usuarios informan menos de 10 segundos de tiempo de arranque usando Ubuntu con systemd y unos 20 segundos cuando usan Upstart, con especificaciones como Intel i5 y RAM de 8 Gig)
Entonces, ¿qué hace que el arranque de Android sea tan lento? ¿Y puedo hacer algo como usuario para acelerar el proceso de arranque?
Edición: de acuerdo con el proceso de arranque explicado ( https://android.stackexchange.com/a/29738/27870 ), no parece haber muchas diferencias en el proceso de arranque general en comparación con el sistema operativo convencional como Ubuntu. ¿Dónde se equivoca Android en el proceso?
fuente
Respuestas:
Hace unos años, trabajé en la optimización del tiempo de arranque de Android, como desarrollador de Android. Obviamente, como parte de este trabajo, primero necesitábamos analizar dónde Android pasa tiempo durante el arranque.
A continuación se presentan los breves hallazgos:
Hardware utilizado :
OMAP3430 Board
que es como una placa de desarrollo en la que se muestra Stock Android. En el dispositivo comercial / de producción real, habrá hardware específico adicional. Para visualizar el tiempo de arranque, utilizamos una herramienta de desarrollador llamadabootchart
La mayor parte del tiempo que dedica Android es en las siguientes 2 áreas:
¿Por qué? Porque la precarga de la clase zygote es esencial para un buen rendimiento del sistema después del arranque. Entonces, una vez que se cargan las clases de todas las aplicaciones, el tiempo de ejecución de la aplicación es mucho más rápido.
/system/app
``/system/framework
`/data/app
`/data/app-private
.A continuación, hay un componente llamado Administrador de actividades que inicia diferentes servicios, como el servicio de ubicación, el servicio de telefonía, etc. Y toma cerca de 11-12 segundos terminar esto.
¿Por qué? Porque, la exploración del paquete puede, en teoría, almacenar en caché algunos de sus resultados después del primer arranque y puede verificar si hay vulnerabilidades de seguridad.
Si suma estas 2 veces, son aproximadamente 35 segundos
Puede ignorar estos números hoy en día, pero el punto que indican estos números es donde el código AOSP de Android pasa tiempo durante el arranque. Los OEM tienen su propio conjunto de hardware que varía de dispositivo a dispositivo.
Por supuesto, hay otras inicializaciones de hardware y software que Android necesita hacer después de estos 2 pasos que consumen mucho tiempo, lo que puede alargar aún más el tiempo de arranque.
No mucho, supongo. La comunidad de desarrolladores de Android y los fabricantes de equipos originales todavía están trabajando para acelerar el tiempo de arranque, pero como puede imaginar, no es tan fácil y hacer cambios para optimizar el tiempo de arranque puede terminar causando más tiempo de carga de la aplicación durante las operaciones normales, como lo sugiere el marco de Android ingeniero .
fuente
¿El arranque de Android es lento?
Mi teléfono es de doble núcleo con 1G de RAM (Zenfone 4) y nunca tengo ese problema. Arranque en frío en ~ 60 segundos, reiniciar en 40-ish (CyannogenMod 12.1).
Depende de la configuración y de lo que consideró "tiempo de arranque" . Mi computadora portátil (i5 1st Gen, 4 GB de RAM con disco giratorio) se considera utilizable (arranque finalizado) después de aproximadamente 90 segundos. Claro que puedo retrasar / deshabilitar algunos de los servicios para obtener un tiempo de arranque más rápido e iniciarlos manualmente según sea necesario. Pero en mi punto de vista, según mi preferencia, eso no contará como utilizable .
En PC vs móvil
Hay algunas diferencias que debe considerar al comparar entre PC y Linux móvil. desde la CPU hasta el núcleo . Diferencias más notables:
3.18.10
mientras el kernel estable está actualmente en4.6.2
.Entonces, ¿qué hace que el arranque de Android sea tan lento?
¿Por qué no lo comprobamos? :)
Si tiene acceso a adb y ya habilita las Opciones de desarrollador , verifique el registro de arranque usando
en mi dispositivo, esta es la salida:
Como puede ver, el tiempo total de arranque desde el inicio de la VM hasta el dibujo inicial de la pantalla por parte del administrador de ventanas es de ~ 40 segundos. No se incluye tiempo adicional en el firmware y el espacio del kernel (en su respuesta enlazada, esto se traduce al paso 1-4).
Tenga en cuenta que se tarda ~ 18 segundos en procesar el apk de todo el sistema (
boot_progress_pms_*
), esto se traduce en ~ 45% del tiempo de arranque, que incluye:En general, el tiempo de arranque total depende de la cantidad de paquetes (aplicación) instalados en el dispositivo. Más aplicación significa esperar más durante el proceso de pms. Además, las actividades de inicio requieren ~ 5 segundos / 20% del tiempo de arranque. El resto no es significativo ni modificable de manera segura sin un profundo conocimiento de los comportamientos del sistema.
¿Hay algo que pueda hacer para acelerar el proceso de arranque?
Sobre la mejora del tiempo de arranque
En mi opinión, ajustar el tiempo de arranque es innecesario y proporciona una ganancia insignificante. Como su teléfono, en teoría , permanecerá despierto la mayor parte del tiempo; Es mucho más importante mantener la estabilidad del sistema (con el compromiso de un proceso de arranque más largo) para garantizar un mayor tiempo de actividad y menos errores.
fuente
adb logcat -d -b events -v threadtime | grep "boot"
vuelve vacío Revisé el reinicio, y todavía no hay registros que coincidanboot
.adb logcat -d -b events -v threadtime | less
. O modifique el búfer de anillo logcatPara lo que vale, ejecuto Android-x86 en una máquina virtual con Linux y arranca en unos 22 segundos, lo que está a la par con la mayoría de las distribuciones de GNU / Linux y Windows 10 en una unidad SSD con una CPU de escritorio de cuatro núcleos.
Así que no considero que el tiempo de arranque de Android sea particularmente lento.
fuente