Muchos tuvimos que emigrar ya que nuestros PC no soportaban el peso del nuevo DE y sus aplicaciones. Otros con ordenadores nuevos, de parabienes.
Con Ubuntu 18.10 la velocidad en la fase de inicio pasa a ser un tema importante. Tal vez porque el mercado de PC usados es cada vez mayor y es inútil correr detrás de Windows. Linux (y Ubuntu obviamente) son otra cosa.
Con Ubuntu 18.10 la velocidad en la fase de inicio pasa a ser un tema importante. |
Los nuevos algoritmos de compresión.
Ubuntu será más rápido gracias a dos algoritmos de compresión: LZ4 y ztsd, de los cuáles ya habíamos hablado en una entrada anterior.Los nuevos algoritmos de compresión LZ4 y Ztsd, beneficiarán el arranque del sistema en un 10% más rápido (decíamos en el mes de mayo).
Nuevos test realizados han permitido aumentar ese margen a un 15-20%. Que definitivamente es una buena noticia para todos los usuarios de Ubuntu.
Pero esto en realidad que significa?
Veamos en detalle las características de estos dos algoritmos:Características.
El algoritmo proporciona una relación de compresión ligeramente peor que el algoritmo LZO , que a su vez es peor que los algoritmos como gzip . Sin embargo, las velocidades de compresión son similares a LZO y varias veces más rápidas que gzip, mientras que las velocidades de descompresión pueden ser significativamente más rápidas que LZO.Diseño.
El algoritmo LZ4 representa los datos como una serie de secuencias. Cada secuencia comienza con un token de un byte que se divide en dos campos de 4 bits. El primer campo representa el número de bytes literales que se copiarán a la salida. El segundo campo representa el número de bytes para copiar desde el búfer de salida ya decodificado (con 0 que representa la longitud de coincidencia mínima de 4 bytes). Un valor de 15 en cualquiera de los campos de bits indica que la longitud es mayor y hay un byte adicional de datos que se agregará a la longitud. Un valor de 255 en estos bytes adicionales indica que se agregará otro byte.Por lo tanto, las longitudes arbitrarias están representadas por una serie de bytes adicionales que contienen el valor 255. La cadena de literales viene después del token y de los bytes adicionales necesarios para indicar la longitud de la cadena. A esto le sigue un desplazamiento que indica qué tan atrás en el búfer de salida para comenzar a copiar. Los bytes adicionales (si los hay) de la longitud de coincidencia vienen al final de la secuencia.
Leer también: Muchas mejoras en la nueva versión de GNOME presente en Ubuntu 18.10 “Cosmic Cuttlefish”.La compresión puede llevarse a cabo en una corriente o en bloques. Se pueden lograr relaciones de compresión más altas invirtiendo más esfuerzo en encontrar las mejores coincidencias. Esto da como resultado una salida más pequeña y una descompresión más rápida.
Implementación.
La implementación de referencia en C por Yann Collet está licenciada bajo BSD. Hay puertos y enlaces en varios lenguajes como Java, C #, Python, etc. Las bases de datos como Hadoop usan este algoritmo para una compresión rápida. LZ4 también se implementó de forma nativa en el kernel de Linux 3.11.Las implementaciones de FreeBSD, Illumos, ZFS en Linux y ZFS-OSX del sistema de archivos ZFS son compatibles con el algoritmo LZ4 para la compresión sobre la marcha. Linux es compatible con LZ4 para SquashFS desde 3.19-rc1. Lann4 también se implementa en el nuevo archivador Zstd por Yann Collet.
¿Por qué usar LZ4?
Hay una gran cantidad de argumentos a favor y en contra de habilitar la compresión transparente en sus conjuntos de datos ZFS y no los vamos a repetir todos aquí. Si ya está utilizando la compresión, esta función mejorará su rendimiento esencialmente en todos los ámbitos.Por lo tanto, los puntos a continuación pueden convencer a las personas que tradicionalmente han evitado comprimir conjuntos de datos por una razón u otra para que prueben LZ4:
El extremadamente alto rendimiento por núcleo de LZ4 significa que los administradores de la base de datos pueden reducir el impacto que la compresión tiene en la latencia de la transacción (a 1,5 GB / s la descompresión de un bloque de disco de 8k agrega solo unos 5 microsegundos a cada acceso de almacenamiento, aproximadamente un orden de magnitud más rápido que incluso los dispositivos flash más rápidos disponibles en la actualidad).
El alto rendimiento combinado con una reducción de 2x en el volumen de datos también podría beneficiar a los sistemas de almacenamiento al reducir la congestión en los buses IO. Los clústeres de almacenamiento generalmente alcanzan la saturación en sus subsistemas de E / S mucho antes que en sus CPU. El uso de la compresión de alta velocidad puede ayudarlo a cambiar el equilibrio de su subsistema de IO haciendo que sus CPU en su mayoría inactivas compartan parcialmente las tareas de almacenamiento.
Otra cosa particular a tener en cuenta es que el rendimiento de LZ4 en datos no comprimibles es muy alto. Esto se logra al incorporar un mecanismo de "aborto anticipado" que se activará si LZ4 no puede alcanzar la relación de compresión mínima esperada (12.5% en ZFS). Esta función es particularmente útil para los administradores de almacenamiento que deseen utilizar la compresión como una característica de "habilitar y olvidarse de ella". La habilitación de LZ4 en todo el tablero solo usa la compresión cuando sea apropiado, mientras se asegura de que el algoritmo no funcione con datos incompresibles (por ejemplo, multimedia) y las lecturas no incurren en una penalización de latencia debido a la descompresión transparente.
Leer también: Las novedades de Ubuntu 18.10 Cosmic Cuttlefish: no solo renovacion estética.La importancia de las mejoras de rendimiento anteriores depende en gran medida de la composición de su conjunto de datos. Si tiene una combinación razonable de datos compresibles, entonces las ganancias pueden ser significativas. Por otro lado, si está tratando principalmente con cosas incompresibles (por ejemplo, transmisión multimedia), LZ4 no le va a ayudar mucho en absoluto.
El mayor crédito debería ir a Yann Collet por haber creado un algoritmo tan bueno y compartirlo con el mundo.
Ztsd.
Zstandard es un algoritmo de compresión en tiempo real, que proporciona altos índices de compresión. Ofrece una gama muy amplia de compensación de compresión / velocidad, mientras que está respaldado por un decodificador muy rápido.También ofrece un modo especial para datos pequeños, llamado compresión de diccionario , y puede crear diccionarios de cualquier conjunto de muestra.
La biblioteca Zstandard se proporciona como software de código abierto utilizando una licencia BSD.
Zstd puede cambiar la velocidad de compresión por relaciones de compresión más fuertes. Es configurable por pequeño incremento.
La velocidad de descompresión se conserva y permanece aproximadamente igual en todas las configuraciones, una propiedad compartida por la mayoría de los algoritmos de compresión LZ, como zlib o lzma.
La velocidad de descompresión se conserva y permanece aproximadamente igual en todas las configuraciones |
La biblioteca Zstandard se proporciona como software de código abierto utilizando una licencia BSD. |
Zstandard es un algoritmo de compresión en tiempo real, que proporciona altos índices de compresión |
Excelente post. Conocía algunas novedades pero de esta no tenía la más pálida idea. Saludos. Muy buen blog.
ResponderBorrarMuchas gracias por tus elogiosos comentarios Fausto. Me alegro que te haya sido útil. Saludos.
Borrar