Bienvenido a la última actualización de nuestra serie de rendimiento instantáneo de Firefox. Esta semana, cubriremos dos importantes mejoras de rendimiento que acaban de traer a todos los usuarios.
Primero, repasemos nuestra misión:
Este Instantánea de Firefox Ofrece muchos beneficios para los usuarios cotidianos de Ubuntu, así como una gama de otras distribuciones de Linux. Mejora la seguridad, proporciona compatibilidad entre versiones y reduce el tiempo que tarda Mozilla en ofrecer mejoras a los usuarios finales.
Actualmente, este enfoque tiene ventajas y desventajas en el rendimiento, especialmente cuando se inicia Firefox por primera vez después de reiniciar el sistema. Esta serie realiza un seguimiento de nuestro progreso en la reducción de los tiempos de lanzamiento para garantizar que ofrecemos la mejor experiencia de usuario posible.
En el camino, también abordaremos problemas de casos de uso específicos identificados con la ayuda de la comunidad.
Puede leer la historia hasta ahora en la Parte 1 y la Parte 2 de esta serie.
Tabla de Contenidos
¿Dónde estamos?
Desde nuestra última actualización, hemos logrado un progreso significativo en el rendimiento de inicio de Firefox. En comparación con Firefox 101, nuestras últimas mejoras están diseñadas para reducir el tiempo de arranque después de nuevas instalaciones en un promedio del 50 %, consistente en una variedad de distribuciones y plataformas.
Estas correcciones ahora están disponibles en la última versión estable de Firefox desde la tienda instantánea (o simplemente puede actualización rápida en la línea de comando para asegurarse de que todas las instantáneas estén actualizadas).
¿Que ha cambiado?
Ha habido dos mejoras importantes desde la última actualización. El primero son los cambios de Mozilla en la forma en que Firefox maneja los paquetes de idiomas. El segundo es una actualización de las instantáneas de temas de GNOME y GTK en las que se basa Firefox.
Manejo de extensiones: paquetes de idiomas
Anteriormente, Firefox copiaba todos los paquetes de idiomas en el primer lanzamiento, lo que suponía una sobrecarga enorme e innecesaria, ya que la mayoría de las personas ejecutan Firefox con un solo idioma de interfaz de usuario, por ejemplo, inglés o francés.
Mozilla última corrección Significa que Firefox ahora solo carga una configuración regional a la vez, según la configuración del sistema.
Esto afecta principalmente el lanzamiento de Firefox por primera vez después de una instalación nueva y reduce significativamente el tiempo de configuración inicial. Nuestras pruebas mostraron una reducción promedio de aproximadamente 6 segundos en sistemas modernos con almacenamiento rápido.
Compresión de instantáneas de temas GNOME y GTK
Antes del comienzo de esta serie, mejoramos el rendimiento de inicio de Firefox mediante el uso de la compresión LZO para el complemento de Firefox.
Lo que inicialmente no consideramos es que la instantánea de Firefox depende de las instantáneas gnome-3-38-2004 y gtk-common-theme, que aún se envían comprimidas mediante el algoritmo XZ. Dado que el complemento de Firefox carga bibliotecas de ambos complementos durante el inicio, el proceso de descompresión puede ser un cuello de botella.
Cambiar el algoritmo de compresión de ambas instantáneas a LZO puede (nuestro segundo) mejorar significativamente el tiempo de inicio de Firefox.
Otra ventaja es que este cambio afecta no solo a Firefox, sino también a la hora de inicio de todas las instantáneas que dependen de las instantáneas de GNOME y GTK, ¡incluidos Chromium y Thunderbird!
Los resultados son consistentes en diferentes distribuciones, incluidas otras versiones de Ubuntu, Fedora 36 y openSUSE Leap 15.4, que demostramos en la siguiente sección.
nuevo punto de referencia
Máquina de prueba: AMD Ryzen 5, 8 GB de RAM, gráficos Vega 8, unidad NVMe PCIe de 256 GB
Cuando se ejecuta en Kubuntu 22.04, usando el algoritmo XZ para comprimir instantáneas de gnome-3-38-2004 y gtk-common-themes, el tiempo de inicio en frío del navegador Firefox promedió unos 15 segundos. Utilizando el algoritmo LZO, el arranque en frío se ha reducido a unos 6 segundos. Se trata de una mejora del 60%. Asimismo, en openSUSE, el tiempo de arranque se redujo de 13 segundos a 4 segundos, una mejora del 70 %.
Los resultados para Thunderbird y Chromium Snap fueron consistentes, con tiempos de inicio que mejoraron de 12 y 9 segundos a 7 y 5 segundos, respectivamente. Esto representa mejoras de alrededor del 42% y 29%.
En Fedora 36, los resultados son más interesantes porque Fedora usa una configuración de kernel diferente para administrar el sistema de archivos Squashfs (incluida la descompresión). En el sistema de ejemplo anterior, el tiempo de Firefox es de unos 5 segundos. Utilizando el algoritmo LZO, los tiempos de inicio en frío para Firefox, Thunderbird y Chromium ahora son de 3 segundos, 4 segundos y 2 segundos, respectivamente, que es comparable al tiempo de inicio nativo de aproximadamente 2 segundos para estas aplicaciones.
Máquina de prueba: Raspberry Pi 400 con tarjeta SD
El Raspberry Pi representó nuestro caso de prueba más difícil. Aquí vemos que el tiempo para una instalación nueva se redujo de 36 segundos a 17 segundos al usar LZO y correcciones de paquetes de idiomas. Nuevamente, esta es una reducción respetable del 50% en el tiempo de inicio.
Esperando la parte 4
Si bien hemos logrado un progreso significativo en las últimas semanas, aún no hemos terminado de mejorar y optimizar el rendimiento del inicio rápido. Tenemos tres vías de investigación en curso que serán el foco de nuestro próximo impulso:
Descompresión de CPU de subprocesos múltiples
Actualmente, en las distribuciones basadas en Ubuntu, la descompresión de Squashfs es de un solo subproceso, independientemente del algoritmo utilizado. Estamos experimentando con la descompresión de CPU de subprocesos múltiples y tenemos algunos resultados preliminares prometedores.
Echa un vistazo a nuestro error de seguimiento para saber más información.
renderizado de software
El problema principal con Raspberry Pi es que Firefox no puede detectar la GPU (o aprovechar la aceleración de hardware). Por lo tanto, recurre a la representación de software, lo que afecta significativamente el rendimiento. Este problema parece ser específico de Firefox y ocurre tanto en deb como en snap.
este pregunta Actualmente trabajando con Mozilla y continuaremos trabajando con ellos para identificar soluciones.
precaché
El almacenamiento previo en caché generalmente se refiere al proceso mediante el cual el software predice las acciones futuras del usuario y descarga, instala o descomprime de manera preventiva los archivos necesarios para que estén listos inmediatamente cuando se los invoque. También puede referirse al proceso de carga de datos y bibliotecas de la aplicación en la memoria antes de que la aplicación realmente los use.
Esta es una técnica ampliamente utilizada en varios tipos de software; enlaces pre-caché de sitios web o páginas relacionadas a la página que el usuario está visitando actualmente, sombreadores de pre-caché de videojuegos para evitar fallas de rendimiento durante el juego, y los más relevantes son, su funcionamiento El sistema, como parte de su diseño y funcionamiento normal, el precaché almacena en caché las bibliotecas del entorno de escritorio y del sistema durante el proceso de arranque.
Por lo tanto, el almacenamiento previo en caché significa que el software responde mejor cuando el usuario interactúa con él, porque el sistema tarda menos en descubrir y cargar los activos necesarios, pero tiene el costo de una configuración más larga (única) porque funciona precargado. con trabajos de procesamiento.
Las instantáneas de contenido de GNOME son ampliamente utilizadas por una variedad de aplicaciones y deberían ser un buen candidato para el almacenamiento previo en caché, ya que proporcionará beneficios de inicio a todas las instantáneas de escritorio que dependen de él. Actualmente estamos experimentando con esta posibilidad para estudiar las compensaciones de rendimiento de este enfoque.
Comparta sus puntos de referencia con nosotros
Nos gustaría pedirle que comparta sus puntos de referencia actualizados con nosotros para que podamos validar estas correcciones en una gama más amplia de hardware y versiones y establecer nuevos puntos de referencia para la mejora continua.
La forma más fácil de registrar el tiempo de inicio es usar la extensión GNOME, Medición del tiempo de inicio de la aplicación Y tenga en cuenta el tiempo de inactividad para los siguientes tres escenarios:
- Tiempo de inicio después de una nueva instalación de Firefox
- Hora de inicio para iniciar Firefox después de reiniciar el sistema
- Tiempo de inicio para posteriores lanzamientos de Firefox
La mejor manera de informarlos es presentar un programa para «¿Problemas conocidos con el complemento de Firefox?» Un hilo de discusión con detalles de la versión que está ejecutando y las especificaciones de hardware de la máquina.
¡Gracias por seguir siendo parte de nuestro viaje!
Volveremos pronto con otra actualización.