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 ...
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.