En un sistema moderno, ¿usar compresión de disco me dará un mejor rendimiento general?

10

Parece que los aumentos de CPU han superado la velocidad del disco por un tiempo. Suponiendo una computadora de escritorio o portátil con CPU Intel / AMD de doble núcleo moderna y un solo disco SATA promedio, ¿la compresión en la mayoría de todos los discos daría un mejor rendimiento general? Básicamente, ¿el ancho de banda de disco reducido compensa con creces el aumento de la carga de la CPU? Estoy seguro de que la respuesta real es "depende de lo que estés haciendo". Al hacer esta pregunta, espero tener a alguien que haya hecho esto y dar algunos ejemplos o trampas.

kbyrd
fuente
definir el rendimiento? Como en aumento de velocidad o aumento de espacio? ¡Probablemente no notarías ningún aumento de velocidad, pero definitivamente encontrarías útiles los bytes de repuesto! :-p
Christopher Lightfoot

Respuestas:

9

Sí, la compresión de disco puede proporcionar un mejor rendimiento en circunstancias particulares:

  • Su aplicación está vinculada al rendimiento del disco: las CPU modernas y los algoritmos de (des) compresión pueden ejecutarse a un ancho de banda mucho mayor que los discos modernos en transferencias largas. Cualquier reducción en la cantidad de datos que se mueven hacia o desde discos de disco es una victoria en esta circunstancia
  • Se necesita menos tiempo para (des) comprimir los datos que van a discos de disco que la diferencia en los tiempos de transferencia, y tiene ciclos de CPU de sobra

Hay una razón por la que tanto ZFS como Btrfs, ambos diseños recientes de campo verde, incluyen disposiciones para la compresión.

En el espacio HPC, cuando una aplicación está apuntando desde la memoria al disco, las CPU con frecuencia no hacen nada útil. Esta vez es esencialmente pura sobrecarga. Cualquier uso de las CPU para reducir este tiempo es una victoria.

Phil Miller
fuente
Los discos de transmisión de medios son probablemente el único lugar donde se obtienen beneficios, ya que el tamaño del fragmento es lo suficientemente grande. Los discos OS estándar * siempre recibirán un golpe.
Ryaner
55
La transmisión de medios no es una aplicación atractiva para la compresión a nivel del sistema de almacenamiento. Los datos ya deberían estar comprimidos en un formato mucho mejor específico de la aplicación.
Phil Miller
5

La compresión de disco nunca te dará un mejor rendimiento.

Es posible que casi no te penalice debido a las CPU modernas y rápidas, pero eso es algo completamente diferente.

Asume que tener que transferir menos datos desde / al disco puede mejorar el rendimiento; pero las grandes transferencias de datos casi nunca son un cuello de botella de E / S: los cuellos de botella reales son el tiempo de búsqueda y la latencia. Los discos duros modernos son realmente rápidos en transferencias de datos sostenidas con archivos grandes, lo que los ralentiza son las pequeñas transferencias de todo el disco.

Algunos escenarios:

  • Archivos multimedia. Por lo general, ya están comprimidos por sí mismos (JPEG, MPEG, MP3), por lo que comprimirlos en el nivel del sistema de archivos no va a ayudar en absoluto; en cambio empeorará las cosas, porque los recursos de la CPU ya son necesarios para codificarlos / decodificarlos.
  • Bases de datos Por lo general, estos se leen / escriben en pequeñas ráfagas aleatorias, por lo que comprimirlos no solo no tendrá ningún beneficio, sino que también degradará el rendimiento, ya que el DBMS no puede identificar adecuadamente en qué disco se encuentran los datos físicos a los que necesita acceder. almacenado
  • Archivo de página. Por lo general, esto es bastante grande, pero el sistema operativo necesita abordar fragmentos de datos muy pequeños y debe hacerlo con mucha precisión ("Leer 4K en la dirección física X"); la compresión no suele ser posible, pero incluso si lo fuera, sería una pérdida total de tiempo y recursos: proporcionaría una compresión casi nula, debido a la naturaleza de "datos aleatorios completos" de este archivo.
Massimo
fuente
1
Entonces, ¿transferir menos datos del disco no proporciona ningún beneficio?
kbyrd
Editado para responder eso :-)
Massimo
3
Nunca es una palabra de mente muy estrecha. El ancho de banda sin procesar desde el disco y a través del bus pci es a menudo el cuello de botella con parte del trabajo que hago. La compresión puede ayudar a un rendimiento mucho, sobre todo si ya ha tomado medidas para eliminar algunos de los otros cuellos de botella que mencionas
JamesRyan
1
También dudaría en decir "nunca". Bien puede haber escenarios en los que el ancho de banda del disco es el cuello de botella. Pero probablemente tengas razón en que este no es el caso típico.
sleske 03 de
2
Disk I / O es casi siempre un cuello de botella en las bases de datos
Nick Kavadias
3

Hay situaciones específicas que hacen esto ya en el nivel por aplicación, como la compresión de video: un sistema que no podía leer videos de calidad HD sin procesar lo suficientemente rápido desde un dsk puede leer información comprimida y expandirla usando memoria y potencia de la CPU . No hay ninguna razón para que este no sea el caso de otras situaciones específicas, pero esto se puede manejar mejor a nivel de aplicación, por lo que los métodos de compresión utilizados están optimizados para su propósito.

Tenga en cuenta que la sobrecarga de rendimiento de la descompresión vale la pena si aumenta todo el rendimiento, por lo que la idea no debe descartarse de la mano: no creo que estemos listos para un rendimiento de uso general que aumente la compresión, pero es teóricamente posible para intercambiar un recurso que tiene exceso de (CPU y memoria) por un impulso en otro lugar (datos totales leídos del disco duro)

DrStalker
fuente
3

¡Usted contestó su propia pregunta! depende es de hecho la respuesta.

La mejor generalización que puedo hacer es:

Si tiene una aplicación de base de datos con restricciones de lectura de disco , ¡sí! El rendimiento es mejor.

No creo que este sea el caso para la mayoría de las actividades que realizarás en una computadora de escritorio / portátil.

En mi dominio (SQL Server) sé que las bases de datos de informes bajo cargas de lectura pesadas pueden obtener un mejor rendimiento si se utiliza la compresión. Sé que lo mismo es cierto para mysql.

Microsoft tiene un documento técnico sobre sus funciones de compresión en SQL Server 2008. No es exactamente una lectura ligera a menos que sea un DBA, pero aquí hay un gráfico que admite mi generalización:

texto alternativo

Nick Kavadias
fuente
0

Las velocidades de CPU siempre han sido más rápidas que las velocidades de disco. En mi humilde opinión, la compresión aumentará los gastos generales y, por lo tanto, disminuirá el rendimiento.

joeqwerty
fuente
pero depende de lo que estés haciendo :-)
Josh
¿Cómo es eso? Un aumento de gastos generales es un aumento de gastos generales. No puedes comprar dinero gastando dinero (a menos que sea dinero falsificado, pero esa es otra historia).
Mark Henderson
La función de comprimir y descomprimir archivos, independientemente de si son más pequeños debido a la compresión, introducirá una sobrecarga de rendimiento. Cuando el archivo se lee desde el disco a la memoria, debe descomprimirse. Cuando se escribe de la memoria al disco, debe comprimirse.
joeqwerty 03 de
3
pero si su CPU no está haciendo nada y el ancho de banda de su disco es el cuello de botella, su CPU terminará haciendo más trabajo pero el rendimiento general aumentará. Realmente depende de qué tipo de datos está recuperando y qué está haciendo con ellos.
JamesRyan
0

Estaba leyendo algo similar a esto ayer con respecto a OSX y es la compresión del sistema de archivos. Básicamente, la respuesta gira en torno a lo que desea comprimir. En este ejemplo, está hablando de los datos "FAT"; estructuras de archivos, propiedades, metadatos, etc.que cuando se almacenan juntos se pueden comprimir para ahorrar espacio y leerse en la CPU más rápido que buscar la cabeza por todas partes para encontrar los datos de cada archivo ...

De todos modos, vale la pena leerlo si estás pensando en estas cosas :-p

Pero la compresión no se trata solo de ahorrar espacio en disco. También es un ejemplo clásico de intercambiar ciclos de CPU para disminuir la latencia de E / S y el ancho de banda. En las últimas décadas, el rendimiento de la CPU ha mejorado (y los recursos informáticos más abundantes, más sobre eso más adelante) a un ritmo mucho más rápido que el rendimiento del disco. Los tiempos modernos de búsqueda de disco duro y los retrasos de rotación todavía se miden en milisegundos. En un milisegundo, una CPU de 2 GHz pasa por dos millones de ciclos. Y luego, por supuesto, todavía hay que considerar el tiempo real de transferencia de datos.

Por supuesto, varios niveles de almacenamiento en caché en todo el sistema operativo y el hardware funcionan poderosamente para ocultar estos retrasos. Pero esos bits tienen que salir del disco en algún momento para llenar esos cachés. La compresión significa que se deben transferir menos bits. Dado el exceso casi cómico de recursos de la CPU en una Mac moderna de varios núcleos bajo uso normal, el tiempo total necesario para transferir una carga útil comprimida desde el disco y usar la CPU para descomprimir su contenido en la memoria aún será mucho menor que el tiempo tomaría transferir los datos en forma no comprimida.

Eso explica los posibles beneficios de rendimiento de transferir menos datos, pero el uso de atributos extendidos para almacenar el contenido de los archivos también puede hacer que las cosas sean más rápidas. Todo tiene que ver con la localidad de datos.

Si hay algo que ralentiza un disco duro más que transferir una gran cantidad de datos, está moviendo sus cabezas de una parte del disco a otra. Cada movimiento significa tiempo para que la cabeza comience a moverse, luego se detenga, luego asegúrese de que esté colocada correctamente sobre la ubicación deseada, luego espere a que el disco giratorio coloque los bits deseados debajo de ella. Todas estas son partes reales, físicas y móviles, y es sorprendente que bailen tan rápido y eficientemente como lo hacen, pero la física tiene sus límites. Estos movimientos son los verdaderos asesinos de rendimiento para el almacenamiento rotativo como los discos duros.

El formato de volumen HFS + almacena toda su información sobre los archivos (metadatos) en dos ubicaciones principales en el disco: el archivo de catálogo, que almacena las fechas de los archivos, los permisos, la propiedad y una gran cantidad de otras cosas, y el archivo de atributos, que almacena "tenedores con nombre" ".

Los atributos extendidos en HFS + se implementan como horquillas con nombre en el archivo de atributos. Pero a diferencia de los tenedores de recursos, que pueden ser muy grandes (hasta el tamaño máximo de archivo admitido por el sistema de archivos), los atributos extendidos en HFS + se almacenan "en línea" en el archivo de atributos. En la práctica, esto significa un límite de aproximadamente 128 bytes por atributo. Pero también significa que la cabeza del disco no necesita hacer un viaje a otra parte del disco para obtener los datos reales.

Como puede imaginar, se accede con frecuencia a los bloques de disco que componen los archivos de Catálogo y Atributos y, por lo tanto, es más probable que en la mayoría de los casos se encuentren en un caché. Todo esto conspira para hacer que el almacenamiento completo de un archivo, incluidos sus metadatos en sus datos, dentro de los archivos de Catálogo y Atributos estructurados en árbol B sea una ganancia de rendimiento general. Incluso una carga útil de ocho bytes que aumenta a 25 bytes no es una preocupación, siempre que sea menor que el tamaño del bloque de asignación para el almacenamiento de datos normal, y siempre y cuando todo encaje dentro de un nodo B-tree en el Archivo de Atributos que el sistema operativo tiene que leer en su totalidad de todos modos.

Hay otras contribuciones significativas a la huella de disco reducida de Snow Leopard (por ejemplo, la eliminación de localizaciones innecesarias y archivos "designable.nib") pero la compresión HFS + es, con mucho, la más interesante desde el punto de vista técnico.

De: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3

Christopher Lightfoot
fuente
He pensado en esto antes, pero ese artículo exacto me llevó a publicar esta pregunta.
kbyrd
jajaja Interesante :-p
Christopher Lightfoot
0

La compresión de disco de Microsoft es fea ANTIGUA. Difícilmente es comparable en proporciones con el método ARJ de los años 80. Pero, incluso la compresión de Microsoft PUEDE proporcionar un mejor rendimiento en discos duros muy lentos (portátiles). Especialmente si hay suficiente RAM para el almacenamiento en caché de escritura y evitar escrituras excesivas.

El proceso de escritura es un punto débil de cualquier método de compresión habilitado para acceso aleatorio.

Entonces, si desea un disco comprimido, es mejor que se mude a algún tipo de Linux.

La compresión de disco también es muy adecuada para unidades RAM, no es necesario que le diga por qué.

Sano
fuente
1
¿Podría agregar algunos datos de respaldo, tal vez una comparación de rendimiento entre las soluciones basadas en Windows y Linux?
psarossy
Sí, si vas a toparte con un hilo de 3.5 años, será mejor que traigas algunos datos nuevos y duros.
MDMarra
-1

Con dudas. La compresión y descompresión implica más que solo el disco y la CPU; en particular, habrá una gran cantidad de transferencia de datos hacia y desde la memoria (además de la sobrecarga de transferencia estándar sin compresión), lo que realmente perjudicará en términos de fallas de página.

Maximus Minimus
fuente
-1

En resumen, no, probablemente no ganes en rendimiento.

Si bien la compresión mejorará el rendimiento de su almacenamiento, degradará significativamente la velocidad de su procesador. Probablemente se reduce a qué tipo de archivos va a descomprimir. Si solo se trata de Word, Excel y otros tipos de archivos básicos, continúe y comprímalos. Si los archivos individuales son más voluminosos, sacrificará más tiempo.

tormenta
fuente