Я читал нечто похожее на это вчера относительно OSX и его сжатия файловой системы - в основном ответ вращается вокруг того, что вы хотите сжать - в этом примере он говорит о данных «FAT»; файловые структуры, свойства, метаданные и т. д., которые при совместном хранении могут быть сжаты для экономии места и считывания в процессор быстрее, чем поиск головы в любом месте, чтобы найти данные для каждого файла ...
Но сжатие - это не просто сохранение дискового пространства. Это также классический пример торговли циклами ЦП для снижения задержки ввода-вывода и пропускной способности. За последние несколько десятилетий производительность процессора возросла (а вычислительные ресурсы стали более многочисленными, подробнее об этом позже) с гораздо большей скоростью, чем производительность диска. Современное время поиска жесткого диска и задержки вращения все еще измеряются в миллисекундах. За одну миллисекунду процессор с частотой 2 ГГц проходит два миллиона циклов. И затем, конечно, еще есть фактическое время передачи данных для рассмотрения.
Конечно, несколько уровней кэширования во всей ОС и аппаратном обеспечении работают мощно, чтобы скрыть эти задержки. Но эти биты должны сойти с диска в какой-то момент, чтобы заполнить эти кэши. Сжатие означает, что нужно передавать меньше битов. Учитывая почти комическое изобилие ресурсов ЦП на современном многоядерном Mac при нормальном использовании, общее время, необходимое для передачи сжатой полезной нагрузки с диска и использования ЦП для распаковки его содержимого в память, обычно будет намного меньше, чем время потребуется перенести данные в несжатом виде.
Это объясняет потенциальные преимущества производительности при передаче меньшего количества данных, но использование расширенных атрибутов для хранения содержимого файла также может реально ускорить процесс. Все это связано с локальностью данных.
Если есть одна вещь, которая замедляет работу жесткого диска больше, чем передача большого объема данных, она перемещает свои головки из одной части диска в другую. Каждое движение означает время, когда головка начнет двигаться, затем остановится, затем убедитесь, что она правильно расположена над нужным местом, затем подождите, пока вращающийся диск не поставит нужные биты под нее. Это все реальные, физические, движущиеся части, и удивительно, что они танцуют так же быстро и эффективно, как и они, но физика имеет свои пределы. Эти движения являются реальными убийцами производительности для ротационного хранилища, такого как жесткие диски.
Формат тома HFS + хранит всю свою информацию о файлах - метаданные - в двух основных местах на диске: файл каталога, в котором хранятся даты файлов, разрешения, владелец и множество других вещей, и файл атрибутов, в котором хранятся «именованные вилки». «.
Расширенные атрибуты в HFS + реализованы в виде именованных вилок в файле атрибутов. Но в отличие от разветвлений ресурсов, которые могут быть очень большими (вплоть до максимального размера файла, поддерживаемого файловой системой), расширенные атрибуты в HFS + хранятся «встроенными» в файле атрибутов. На практике это означает ограничение около 128 байт на атрибут. Но это также означает, что головке диска не нужно отправляться в другую часть диска, чтобы получить реальные данные.
Как вы можете себе представить, к дисковым блокам, которые составляют файлы Каталога и Атрибутов, часто обращаются, и, следовательно, с большей вероятностью, чем большинство, находится где-то в кеше. Все это позволяет сделать полное хранение файла, включая как его метаданные в данных, в файлах каталога и атрибутов с B-древовидной структурой, как выигрыш в общей производительности. Даже восьмибайтовая полезная нагрузка, которая расширяется до 25 байтов, не является проблемой, если она все еще меньше, чем размер блока выделения для обычного хранения данных, и до тех пор, пока все это вписывается в узел B-дерева в файле атрибутов, который в любом случае ОС должна читать целиком.
Есть и другие существенные вклады в уменьшение занимаемой диском памяти Snow Leopard (например, удаление ненужных локализаций и файлов «designable.nib»), но сжатие HFS + является наиболее технически интересным.