Noticias

Cómo tomar instantáneas más rápido

La excelente experiencia del usuario es (o al menos debería) ser una parte integral de cualquier software que implique la interacción del usuario. En el escritorio, esto comienza cuando se inicia la aplicación y continúa durante la sesión. El tiempo total para completar las tareas, así como la capacidad de respuesta interactiva, son un elemento central de este viaje.

Si eres un desarrollador o editor de Snap, el problema de la velocidad puede surgir por varias razones. Las diferencias en la arquitectura general y los principios de funcionamiento de Snaps en comparación con el software proporcionado como un paquete Deb o RPM a veces pueden resultar en una experiencia más lenta. Esto contradice la pauta más alta de uso de escritorio. En este artículo, queremos mostrarle una serie de métodos y herramientas que puede utilizar para hacer que sus instantáneas sean nítidas.

Como describimos en el anuncio del año pasado de que presentamos la compresión LZO, el cambio más inmediato que los desarrolladores pueden implementar es utilizar la compresión LZO para sus instantáneas. Es posible que también desee leer el artículo de seguimiento más detallado que explica por qué se eligió este algoritmo de compresión en particular para las instantáneas.

Esto da como resultado un aumento en el tamaño de Snap, pero generalmente da como resultado una mejora de 2-3 veces en los tiempos de inicio de Snap. Para implementar LZO, debe declarar una palabra clave de compresión de nivel superior en su archivo snapcraft.yaml:

compression: lzo

Las extensiones de Snapcraft son colecciones de componentes reutilizables y declaraciones que los editores pueden agregar a su snapcraft.yaml. Estas mejoras pueden reducir el tamaño de la receta de Snap y hacer que las compilaciones de Snap sean más fáciles y consistentes. En lugar de declarar manualmente varios plugs, construir y crear bibliotecas y variables de entorno, los desarrolladores pueden usar una extensión como GNOME o KDE neon y ocultar grandes bloques de código.

...
adopt-info: kblocks
apps:
    kblocks:
        extensions:
        - kde-neon
        common-id: org.kde.kblocks.desktop
...

Las extensiones de Snapcraft tienen otras ventajas. Reducen la necesidad de un conocimiento profundo de la pila de software de destino, proporcionan una plantilla común y mejoran la seguridad porque se prueban y actualizan de forma independiente.

Cuando se trata de velocidad, existen dos ventajas:

  • Primero, las extensiones de Snapcraft pueden hacer que Snap sea más pequeño y, por lo tanto, comenzar más rápido. Entre los diversos métodos mágicos que abstraen el código, las extensiones declaran el uso de varias instantáneas de contenido, incluidas bibliotecas en tiempo de ejecución, temas, símbolos y otros activos. Normalmente, estos deberían descomprimirse y cargarse en la memoria la primera vez que se ejecuta la aplicación (para cada instantánea), lo que puede provocar pérdidas de tiempo. Cualquier aplicación basada en instantáneas de contenido compartido que ya se hayan cargado en la memoria se beneficiará de tiempos de acceso más rápidos. Por ejemplo, la extensión agrega automáticamente las siguientes definiciones:
plugs:
  gnome-3-38-2004:
    default-provider: gnome-3-38-2004
    interface: content
    target: $SNAP/gnome-platform
  gtk-3-themes:
    default-provider: gtk-common-themes
    interface: content
    target: $SNAP/data-dir/themes
  icon-themes:
    default-provider: gtk-common-themes
    interface: content
    target: $SNAP/data-dir/icons
  sound-themes:
    default-provider: gtk-common-themes
    interface: content
    target: $SNAP/data-dir/sounds
  • En segundo lugar, las extensiones generan similitudes, lo que resulta en menos duplicados o contenido innecesario en Snaps. Si empaqueta Snaps manualmente, puede agregar bibliotecas incompatibles, duplicados o activos innecesarios, lo que puede complicar la secuencia de inicio y consumir más recursos. Este problema se minimiza con las extensiones.

Obtenga sus propias medidas en …

También siempre es útil intentar crear un perfil de su propio Snap para comprender bien lo que está haciendo y cómo se está comportando. Puede utilizar una herramienta multipropósito como etrace, que está diseñada para funcionar con Snaps y permite un análisis preciso de la secuencia de inicio. Por ejemplo, Chromium Snap es un gran ejemplo de Snap que se ha beneficiado enormemente del uso de Extensions en términos de velocidad y tamaño.

Incluso si por alguna razón no puede usar las extensiones en su flujo de trabajo, aún puede tomar algunas de las ideas y prácticas integradas en ellas en su snapcraft.yaml. Puede utilizar las instantáneas de contenido si es necesario.

  • Elimine cualquier paquete de escenario innecesario.
  • No agregue paquetes de desarrollo (-dev) a la sección Paquetes de etapa, ya que probablemente se usarán en el paso de compilación y no serán necesarios para el tiempo de ejecución.
  • Utilice la declaración de la palabra clave principal para excluir cualquier archivo que no necesite en el artefacto final (el complemento). Puede incluir o excluir archivos (con el signo menos (-)). Por ejemplo, para no agregar las subcarpetas include y pkgconfig que pueden ser parte de sus fuentes utilizadas en el paso de compilación del Snap, puede usar una declaración como la siguiente:
prime:
  - -usr/include
  - -usr/lib/pkgconfig

La velocidad y la capacidad de respuesta de las aplicaciones se suman significativamente a la experiencia del usuario. Con Snaps, puede haber algunas diferencias en los tiempos de ejecución típicos en comparación con las aplicaciones que se empaquetan tradicionalmente en Linux. Sin embargo, es posible reducir la brecha e incluso eliminarla. El uso de la compresión LZO y las extensiones de Snapcraft, así como la limpieza de activos innecesarios, puede ayudar a que los Snaps comiencen más pequeños, más limpios y más rápido. Si tiene alguna pregunta o idea sobre este tema, únase a nuestro foro y háganos saber lo que piensa.

Foto de Joe Neric en Unsplash.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba