[devel] rpm: LZMA payload compression
Alexander Bokovoy
=?iso-8859-1?q?ab_=CE=C1_altlinux=2Eorg?=
Сб Май 24 19:53:55 MSD 2008
24 мая 2008 г. 19:35 пользователь Alexey Tourbin <at на altlinux.ru> написал:
>> Два вопроса по производительности:
>> 1. Насколько это ускоряет типичную установку пакетов? Скажем, kde или
>> что-нибудь подобное по объему?
>
> Это не может ускорить установку пакетов, потому что скорость разжатия
> раза в три меньше, чем у gzip, который сейчас используется (но при этом
> раза в 3-4 больше, чем у bzip2).
>
> Точнее, на это лучше смотреть по-другому. Скорость разжатия LZMA на
> современных процессорах (2GHz) -- 20 Mb/s. Это неплохо соотносится
> со скоростью современных дисков и media. Например, если *.rpm пакеты
> с DVD читаются медленнее, чем 20 MB/s (чем процессор успевает их
> распаковывать), то установка пойдёт несколько быстрее (за счёт того,
> что при LZMA сжатии *.rpm пакеты занимают меньше места на DVD).
Было бы интересно увидеть конкретные цифры установок в хэшере.
>
>> 2. Насколько этот режим совместим с rsync? Сам по себе LZMA не очень
>> приспособлен к генерации блочных структур.
>
> Не знаю. В текущем виде gzdio тоже создаёт payload, который rsync
> "не берёт". К тому же rsync синхронизирует только файлы с одинаковыми
> названиями (точнее, у rsync есть опция -y, но я не уверен, что она
> всегда хорошо работает).
Дело в том, что gzip имеет код, который позволяет создавать архивы,
построенные на фиксированных блоках (опция --rsyncable в утилите
gzip), наверняка такую же настройку можно активировать и в библиотеке.
С этими фиксированными блоками rsync очень хорошо справляется.
>> 3. Использует ли реализация в rpm возможности порождения
>> дополнительных потоков, как это сделано в 7z?
>
> В lzdio используется формат LZMA_Alone. Больше об этом я сейчас ничего
> сказать не могу, но постараюсь ещё почитать исходники и разобраться.
>
> А что дают "дополнительные потоки" в 7z?
В большинстве машин, выпущенных в последние год-два уже есть два
аппаратных потока (core или threads). Реализация LZMA в 7zip
многопоточна и позволяет порождать несколько потоков при упаковке и
увеличивать производительность за счет параллелизации. Это, увы, не
относится к распаковке.
--
/ Alexander Bokovoy
Подробная информация о списке рассылки Devel