* [devel] rpm: rsyncable deflate vs LZMA
@ 2008-05-29 12:38 Alexey Tourbin
2008-05-29 13:28 ` Alexander Bokovoy
2008-05-30 8:21 ` Anton V. Boyarshinov
0 siblings, 2 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 12:38 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 3322 bytes --]
Я уже собирался включить LZMA сжатие для rpm payload (после некоторого
внутреннего тестирования), но Александр Боковой напомнил нам про
rsyncable патч для deflate сжатия (для gzip и zlib).
Поскольку deflate и LZMA алгоритмы по сути похожи (сжатие в два этапа --
замена подстрок по "словарю", точнее, поиск совпадающих подстрок в
пределах скользящего окна; и частотное кодирование "букв", когда
наиболее часто встречающиеся буквы кодируются ниболее короткими битовыми
последовательностями), то для LZMA в принципе возможен такой формат
"контейнера", в котором идут rsyncable сжатые блоки (как в zlib).
К сожалению, я убедился, что LZMA в текущем виде не может быть
использован (или ограниченно модифицирован) таким образом, чтобы
получить rsyncable сжатые данные. "Старый" формат контейнера
LZMA_Alone вообще не предусматривание разбиение на блоки. Спецификация
нового формата носит alpha status, разработчики пишут: "Do not trust
the files created by the alpha versions, unless you can uncompress
the files with the stable 4.32.x." Кроме того, семантика "разбиения на
блоки" в новом LZMA формате отличается от семантики разбиения на блоки
в deflate. В общем, если использовать новый формат LZMA контейнера
с целью добиться rsyncablity, то это плохо повлияет на сжатие.
Поэтому есть два варианта, как быть дальше.
1) Включить LZMA_Alone сжатие, забив на rsyncability.
2) Вернуться к идее rsyncable deflate.
Экономия на трафике будет и в том, и в другом случае, но она будет
проявляться по-разному.
Подробности про формат контейнера. Чтобы эффективно реализовать
rsyncability для алгоритмов типа deflate/LZMA, должны быть выполнены
следующие условия: 1) небольшой размер окна; 2) продолжение/сохранение
прежнего словаря при записи сжатого блока (то есть "восстановление"
первого этапа кодирования при начале следующего сжатого блока);
3) повторная инициализация частотного кодирования "букв" (то есть
"ресет" второго этапа кодирования при начале следующего сжатого блока).
Семантика deflate блоков как раз состоит в том, что при переходе к
новому блоку словарь остаётся прежним (возможны backreferences в
предыдущие сжатые блоки в пределах окна), а частотное кодирование
инициализируется заново (в начале каждого сжатого блока идёт Huffman
tree). Восстановление на первом этапе несколько ухудшает rsyncability,
то есть сжатые блоки могут различаться из-за несовпадающих backreferences;
но за счёт небольшого размера окна (см. требование №1) после
"провафленных" таким образом двух-трёх блоков backreferences будут
совпадать, и все последующие блоки будут rsyncable. Зато восстановление
на первом этапе очень хорошо влияет на коэффициент сжатия.
А вот ресет частотного кодирования на втором этапе просто жизненно
неоходим для rsyncability, т.к. частотное кодирование определяет
бинарное представление сжатых данных (если частотная модель хоть
чуть-чуть отличается, то получается полностью несовпадающее побитовое
представление).
Более частый ресет частотного кодирования (из-за rsyncable patch)
отрицательно влияет на коэффициент сжатия, но это влияние огранчивается
где-то 1%.
В новом формате контейнера LZMA при начале нового блока ресетится
как словарь, так и частотное кодирование букв. Из-за ресета словаря
коэффициент сжатия заметно падает.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 12:38 [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
@ 2008-05-29 13:28 ` Alexander Bokovoy
2008-05-29 16:50 ` Alexey Tourbin
2008-05-29 18:37 ` Dmitry V. Levin
2008-05-30 8:21 ` Anton V. Boyarshinov
1 sibling, 2 replies; 37+ messages in thread
From: Alexander Bokovoy @ 2008-05-29 13:28 UTC (permalink / raw)
To: ALT Linux Team development discussions
29 мая 2008 г. 16:38 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> А вот ресет частотного кодирования на втором этапе просто жизненно
> неоходим для rsyncability, т.к. частотное кодирование определяет
> бинарное представление сжатых данных (если частотная модель хоть
> чуть-чуть отличается, то получается полностью несовпадающее побитовое
> представление).
>
> Более частый ресет частотного кодирования (из-за rsyncable patch)
> отрицательно влияет на коэффициент сжатия, но это влияние огранчивается
> где-то 1%.
>
> В новом формате контейнера LZMA при начале нового блока ресетится
> как словарь, так и частотное кодирование букв. Из-за ресета словаря
> коэффициент сжатия заметно падает.
Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
против lzma, потому что это дает следующие преимущества:
1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
2. Повзоляет для популярного транспорта http включить механизм zsync,
что дополнительно дает возможность разгрузить сервера (основная работа
по вычислению разницы в блоках перекладывается на клиента, который и
так обычно недогружен)
То есть, с rsyncable мы выигрываем в долгосрочной перспективе, снижая
нагрузку на зеркала. Я бы для пущей эффективности закрыл бы
ftp-транспорт.
--
/ Alexander Bokovoy
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 13:28 ` Alexander Bokovoy
@ 2008-05-29 16:50 ` Alexey Tourbin
2008-05-29 18:37 ` Dmitry V. Levin
1 sibling, 0 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 16:50 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 965 bytes --]
On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
> Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> против lzma, потому что это дает следующие преимущества:
> 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
> 2. Повзоляет для популярного транспорта http включить механизм zsync,
> что дополнительно дает возможность разгрузить сервера (основная работа
> по вычислению разницы в блоках перекладывается на клиента, который и
> так обычно недогружен)
>
> То есть, с rsyncable мы выигрываем в долгосрочной перспективе, снижая
> нагрузку на зеркала. Я бы для пущей эффективности закрыл бы
> ftp-транспорт.
Okay, я сделал предварительную реализацию rsyncable gzdio (вопреки
тому, что думает джей-би-джей, для этого не требуется потрошить zlib;
достаточно в точках синхронизации вызывать gzflush).
Кто сможет проверить мой код? Дело стрёмное, в этот раз на SuSE
надежды нету.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 13:28 ` Alexander Bokovoy
2008-05-29 16:50 ` Alexey Tourbin
@ 2008-05-29 18:37 ` Dmitry V. Levin
2008-05-29 19:50 ` Alexey Tourbin
2008-05-29 21:31 ` Alexey Tourbin
1 sibling, 2 replies; 37+ messages in thread
From: Dmitry V. Levin @ 2008-05-29 18:37 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 416 bytes --]
On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
[...]
> Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> против lzma, потому что это дает следующие преимущества:
> 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
Несмотря на неизменность большинства файлов, и постоянные переименования
большинства из оставшихся файлов?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 18:37 ` Dmitry V. Levin
@ 2008-05-29 19:50 ` Alexey Tourbin
2008-05-29 20:13 ` Alexey Tourbin
2008-05-29 20:16 ` Alexander Bokovoy
2008-05-29 21:31 ` Alexey Tourbin
1 sibling, 2 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 19:50 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 849 bytes --]
On Thu, May 29, 2008 at 10:37:44PM +0400, Dmitry V. Levin wrote:
> On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
> [...]
> > Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> > против lzma, потому что это дает следующие преимущества:
> > 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
>
> Несмотря на неизменность большинства файлов, и постоянные переименования
> большинства из оставшихся файлов?
В следующих случаях:
rsync -y dir1/file dir2/
rsync -y dir1/ dir2/
при отсутствии dir2/file (destination file с таким же названием)
rsync будет искать dir2/other_file с названием, "наиболее похожим
на file". То есть, с опцией -y, по идее, переименование rpm пакетов
вследствие увеличения релиза должно отслеживаться. Правда, я не
смотрел в код rsync.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 19:50 ` Alexey Tourbin
@ 2008-05-29 20:13 ` Alexey Tourbin
2008-05-29 20:28 ` Led
2008-05-29 20:16 ` Alexander Bokovoy
1 sibling, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 20:13 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1070 bytes --]
On Thu, May 29, 2008 at 11:50:00PM +0400, Alexey Tourbin wrote:
> On Thu, May 29, 2008 at 10:37:44PM +0400, Dmitry V. Levin wrote:
> > On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
> > [...]
> > > Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> > > против lzma, потому что это дает следующие преимущества:
> > > 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
> >
> > Несмотря на неизменность большинства файлов, и постоянные переименования
> > большинства из оставшихся файлов?
>
> В следующих случаях:
> rsync -y dir1/file dir2/
> rsync -y dir1/ dir2/
>
> при отсутствии dir2/file (destination file с таким же названием)
> rsync будет искать dir2/other_file с названием, "наиболее похожим
> на file". То есть, с опцией -y, по идее, переименование rpm пакетов
> вследствие увеличения релиза должно отслеживаться. Правда, я не
> смотрел в код rsync.
В мане также написано, что надо использовать опцию --delete-after (а
не --delete, которая равна --delete-before).
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 19:50 ` Alexey Tourbin
2008-05-29 20:13 ` Alexey Tourbin
@ 2008-05-29 20:16 ` Alexander Bokovoy
1 sibling, 0 replies; 37+ messages in thread
From: Alexander Bokovoy @ 2008-05-29 20:16 UTC (permalink / raw)
To: ALT Linux Team development discussions
29 мая 2008 г. 23:50 пользователь Alexey Tourbin <at@altlinux.ru> написал:
> On Thu, May 29, 2008 at 10:37:44PM +0400, Dmitry V. Levin wrote:
>> On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
>> [...]
>> > Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
>> > против lzma, потому что это дает следующие преимущества:
>> > 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
>>
>> Несмотря на неизменность большинства файлов, и постоянные переименования
>> большинства из оставшихся файлов?
>
> В следующих случаях:
> rsync -y dir1/file dir2/
> rsync -y dir1/ dir2/
>
> при отсутствии dir2/file (destination file с таким же названием)
> rsync будет искать dir2/other_file с названием, "наиболее похожим
> на file". То есть, с опцией -y, по идее, переименование rpm пакетов
> вследствие увеличения релиза должно отслеживаться. Правда, я не
> смотрел в код rsync.
/* This is an implementation of the Levenshtein distance algorithm. It
* was implemented to avoid needing a two-dimensional matrix (to save
* memory). It was also tweaked to try to factor in the ASCII distance
* between changed characters as a minor distance quantity. The normal
* Levenshtein units of distance (each signifying a single change between
* the two strings) are defined as a "UNIT". */
Так что это немного модифицированный алгоритм Левенштейна.
--
/ Alexander Bokovoy
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 20:13 ` Alexey Tourbin
@ 2008-05-29 20:28 ` Led
2008-05-29 20:42 ` Alexey Tourbin
0 siblings, 1 reply; 37+ messages in thread
From: Led @ 2008-05-29 20:28 UTC (permalink / raw)
To: ALT Linux Team development discussions
Thursday, 29 May 2008 23:13:44 Alexey Tourbin написав:
> On Thu, May 29, 2008 at 11:50:00PM +0400, Alexey Tourbin wrote:
> > On Thu, May 29, 2008 at 10:37:44PM +0400, Dmitry V. Levin wrote:
> > > On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
> > > [...]
> > >
> > > > Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> > > > против lzma, потому что это дает следующие преимущества:
> > > > 1. Позволяет более полно использовать состояние зеркала на стороне
> > > > пользователя.
> > >
> > > Несмотря на неизменность большинства файлов, и постоянные
> > > переименования большинства из оставшихся файлов?
> >
> > В следующих случаях:
> > rsync -y dir1/file dir2/
> > rsync -y dir1/ dir2/
> >
> > при отсутствии dir2/file (destination file с таким же названием)
> > rsync будет искать dir2/other_file с названием, "наиболее похожим
> > на file". То есть, с опцией -y, по идее, переименование rpm пакетов
> > вследствие увеличения релиза должно отслеживаться. Правда, я не
> > смотрел в код rsync.
>
> В мане также написано, что надо использовать опцию --delete-after (а
> не --delete, которая равна --delete-before).
Может проще будет пропатчить rsync на предмет поддержки *.rpm (чтоб *.rpm
файлы сравнивались по названиям файлов за вычетом %version-%release.%arch)?
--
Led
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 20:28 ` Led
@ 2008-05-29 20:42 ` Alexey Tourbin
0 siblings, 0 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 20:42 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 822 bytes --]
On Thu, May 29, 2008 at 11:28:39PM +0300, Led wrote:
> > В мане также написано, что надо использовать опцию --delete-after (а
> > не --delete, которая равна --delete-before).
>
> Может проще будет пропатчить rsync на предмет поддержки *.rpm (чтоб *.rpm
> файлы сравнивались по названиям файлов за вычетом %version-%release.%arch)?
Метрика Левенштейна не самая глупая вещь. Она будет лажаться только
в специфических случаях, когда релиз меняется очень сильно. Например,
имеем файлы:
libfoo1-alt1.rpm
libfoo2-alt0.cvs20080101.rpm
Надо просинхронизировать новый файл
libfoo2-alt1.rpm
Тогда алгоритм будет синхронизировать
libfoo1-alt1.rpm
libfoo2-alt1.rpm
тогда как по смыслу надо синхронизировать libfoo2-*.
Но это относительно редкие случаи. А также не следует
вносить snapshot в релиз. :)
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 18:37 ` Dmitry V. Levin
2008-05-29 19:50 ` Alexey Tourbin
@ 2008-05-29 21:31 ` Alexey Tourbin
2008-05-29 21:56 ` Dmitry V. Levin
1 sibling, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 21:31 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1610 bytes --]
On Thu, May 29, 2008 at 10:37:44PM +0400, Dmitry V. Levin wrote:
> On Thu, May 29, 2008 at 05:28:39PM +0400, Alexander Bokovoy wrote:
> [...]
> > Я в этом деле лицо скорее заинтересованное, но я бы выбрал rsyncable
> > против lzma, потому что это дает следующие преимущества:
> > 1. Позволяет более полно использовать состояние зеркала на стороне пользователя.
>
> Несмотря на неизменность большинства файлов, и постоянные переименования
> большинства из оставшихся файлов?
Также следует понимать, что rsyncable deflate работает только для
достаточно больших (порядка 32K) полностью совпадающих кусков.
На практике это значит, что в *.rpm пакетах из синхронизации исключаются
маленькие файлы. Например, для пакета man-pages rsyncable оптимизация
почти ничего не даёт (speedup 1.09 после _простой_ повторной
пересборки). Это связано с тем, что в cpio хедере (перед содержимым
файла) есть mtime, и он получается всё время разный. А различие в mtime
"надолго" сбивает синхронизацию (то есть весь "маленький" файл
выпадает).
У меня есть идея. Для выбора точек синхронизации (gzflush) можно
использовать не только "слепой" rsync hint, но и cpio hint -- как
только мы видим cpio magic "070707", мы знаем, что через несколько
байтов будет mtime и потом пойдёт имя и содержимое файла. То есть
sync можно делать в месте окончания очередного cpio header.
Правда, я не знаю, даст это что-нибудь в случае с маленькими файлами
или нет. Это может ничего не дать из-за того, что первые совпавшие
блоки в сжатом виде всё равно могут отличаться (из-за backreferences
в предыдущий блок).
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 21:31 ` Alexey Tourbin
@ 2008-05-29 21:56 ` Dmitry V. Levin
2008-05-29 23:23 ` Alexey Tourbin
2008-05-30 9:27 ` [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
0 siblings, 2 replies; 37+ messages in thread
From: Dmitry V. Levin @ 2008-05-29 21:56 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 764 bytes --]
On Fri, May 30, 2008 at 01:31:14AM +0400, Alexey Tourbin wrote:
[...]
> У меня есть идея. Для выбора точек синхронизации (gzflush) можно
> использовать не только "слепой" rsync hint, но и cpio hint -- как
> только мы видим cpio magic "070707", мы знаем, что через несколько
> байтов будет mtime и потом пойдёт имя и содержимое файла. То есть
> sync можно делать в месте окончания очередного cpio header.
Это заметно снизит степень сжатия, когда в архиве много маленьких файлов?
> Правда, я не знаю, даст это что-нибудь в случае с маленькими файлами
> или нет. Это может ничего не дать из-за того, что первые совпавшие
> блоки в сжатом виде всё равно могут отличаться (из-за backreferences
> в предыдущий блок).
Могут или будут?
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 21:56 ` Dmitry V. Levin
@ 2008-05-29 23:23 ` Alexey Tourbin
2008-05-30 21:31 ` Alexey Tourbin
2008-05-30 9:27 ` [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
1 sibling, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-29 23:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3223 bytes --]
On Fri, May 30, 2008 at 01:56:10AM +0400, Dmitry V. Levin wrote:
> On Fri, May 30, 2008 at 01:31:14AM +0400, Alexey Tourbin wrote:
> [...]
> > У меня есть идея. Для выбора точек синхронизации (gzflush) можно
> > использовать не только "слепой" rsync hint, но и cpio hint -- как
> > только мы видим cpio magic "070707", мы знаем, что через несколько
> > байтов будет mtime и потом пойдёт имя и содержимое файла. То есть
> > sync можно делать в месте окончания очередного cpio header.
>
> Это заметно снизит степень сжатия, когда в архиве много маленьких файлов?
Этим можно управлять, чтобы сознательно пропускать только "совсем
маленькие" файлы.
> > Правда, я не знаю, даст это что-нибудь в случае с маленькими файлами
> > или нет. Это может ничего не дать из-за того, что первые совпавшие
> > блоки в сжатом виде всё равно могут отличаться (из-за backreferences
> > в предыдущий блок).
>
> Могут или будут?
Если сделать как показано ниже, то для пакета man-pages (после повторной
пересборки) 'speedup 1.09' возрастает до 'speedup 1.19'. То есть эффект
от синхронизации сразу после cpio хедера есть, он заметный, но не
настолько большой, чтобы всё искупать.
--- rpmio.c- 2008-05-29 22:27:55 +0400
+++ rpmio.c 2008-05-30 03:08:32 +0400
@@ -2148,6 +2148,9 @@ struct rsync_state {
typedef struct rpmGZFILE_s {
gzFile *gz;
struct rsync_state rs;
+ uint32_t cs; /* cpio state */
+ uint32_t nb; /* bytes pending for sync */
+
} rpmGZFILE;
static /*@null@*/ FD_t gzdOpen(const char * path, const char * fmode)
@@ -2274,6 +2277,56 @@ bool rsync_next(struct rsync_state *s, u
return false;
}
+/* from ../lib/cpio.h */
+#define CPIO_NEWC_MAGIC "070701"
+#define PHYS_HDR_SIZE 110
+
+static inline
+bool sync_hint(rpmGZFILE *rpmgz, unsigned char c)
+{
+ /* sync only if at least nb_min bytes pending */
+ static const uint32_t nb_min = PHYS_HDR_SIZE + 1024;
+ rpmgz->nb++;
+ if (rpmgz->cs >= sizeof(CPIO_NEWC_MAGIC) - 1) {
+ /* cpio major progress, reset rsync */
+ rpmgz->rs.n = rpmgz->rs.sum = 0;
+ rpmgz->cs++;
+ if (rpmgz->cs >= PHYS_HDR_SIZE) {
+ /* sync after cpio header */
+ rpmgz->cs = 0;
+ if (rpmgz->nb >= nb_min) {
+ rpmgz->nb = 0;
+ fprintf(stderr, "SYNC cpio\n");
+ return true;
+ }
+ else {
+ fprintf(stderr, "SKIP cpio\n");
+ return false;
+ }
+ }
+ }
+ else if (CPIO_NEWC_MAGIC[rpmgz->cs] == c) {
+ /* cpio minor progress */
+ rpmgz->cs++;
+ }
+ else {
+ rpmgz->cs = 0;
+ }
+ if (rsync_next(&rpmgz->rs, c)) {
+ if (rpmgz->nb >= nb_min) {
+ rpmgz->nb = 0;
+ rpmgz->cs = 0;
+ fprintf(stderr, "SYNC rsync\n");
+ return true;
+ }
+ else {
+ fprintf(stderr, "SKIP rsync\n");
+ return false;
+ }
+ }
+ return false;
+}
+
static ssize_t
rsyncable_gzwrite(rpmGZFILE *rpmgz, const unsigned char *const buf, size_t len)
{
@@ -2283,7 +2336,7 @@ rsyncable_gzwrite(rpmGZFILE *rpmgz, cons
size_t i;
for (i = 0; i < len; i++) {
- if (rsync_next(&rpmgz->rs, buf[i])) {
+ if (sync_hint(rpmgz, buf[i])) {
size_t n = i + 1 - (begin - buf);
rc = gzwrite(rpmgz->gz, begin, n);
if (rc < 0)
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 12:38 [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
2008-05-29 13:28 ` Alexander Bokovoy
@ 2008-05-30 8:21 ` Anton V. Boyarshinov
2008-05-30 11:28 ` Alexey Tourbin
1 sibling, 1 reply; 37+ messages in thread
From: Anton V. Boyarshinov @ 2008-05-30 8:21 UTC (permalink / raw)
To: devel
> 1) Включить LZMA_Alone сжатие, забив на rsyncability.
> 2) Вернуться к идее rsyncable deflate.
Мне, как человеку, собирающему болванки, на которые вечно ничего не помещается, кажется более привлекательным вариантом LZMA_Alone.
Антон
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 21:56 ` Dmitry V. Levin
2008-05-29 23:23 ` Alexey Tourbin
@ 2008-05-30 9:27 ` Alexey Tourbin
1 sibling, 0 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-30 9:27 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1.1: Type: text/plain, Size: 1500 bytes --]
On Fri, May 30, 2008 at 01:56:10AM +0400, Dmitry V. Levin wrote:
> On Fri, May 30, 2008 at 01:31:14AM +0400, Alexey Tourbin wrote:
> [...]
> > У меня есть идея. Для выбора точек синхронизации (gzflush) можно
> > использовать не только "слепой" rsync hint, но и cpio hint -- как
> > только мы видим cpio magic "070707", мы знаем, что через несколько
> > байтов будет mtime и потом пойдёт имя и содержимое файла. То есть
> > sync можно делать в месте окончания очередного cpio header.
>
> Это заметно снизит степень сжатия, когда в архиве много маленьких файлов?
Можно оценить деградацию сжатия от уменьшения deflate блока.
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/glibc-core-2.5.1-alt5.x86_64.rpm |gzip -9 |wc -c
1488757
$ gcc -DBUFSIZE=$((8*1024)) gztest.c -lz
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/glibc-core-2.5.1-alt5.x86_64.rpm |./a.out |wc -c
1488040
$ gcc -DBUFSIZE=$((4*1024)) gztest.c -lz
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/glibc-core-2.5.1-alt5.x86_64.rpm |./a.out |wc -c
1506758
$ gcc -DBUFSIZE=$((2*1024)) gztest.c -lz
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/glibc-core-2.5.1-alt5.x86_64.rpm |./a.out |wc -c
1544170
$ gcc -DBUFSIZE=$((1*1024)) gztest.c -lz
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/glibc-core-2.5.1-alt5.x86_64.rpm |./a.out |wc -c
1598928
$
Здесь deflate блок создаётся на каждые 8K, 4K, 2K, 1K входного потока.
Потери составляют 0%, 1.2%, 3.7%, 7.4%. На данных, которые сжимаются
лучше, потери могут быть выше.
[-- Attachment #1.2: gztest.c --]
[-- Type: text/plain, Size: 362 bytes --]
#include <zlib.h>
#include <stdio.h>
#include <assert.h>
#ifndef BUFSIZE
#define BUFSIZE BUFSIZ
#endif
int main()
{
char buf[BUFSIZE];
gzFile gz = gzdopen(fileno(stdout), "w9");
assert(gz);
int n;
while ((n = fread(buf, 1, sizeof(buf), stdin))) {
int m = gzwrite(gz, buf, n);
assert(n == m);
gzflush(gz, Z_SYNC_FLUSH);
}
gzclose(gz);
return 0;
}
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 11:28 ` Alexey Tourbin
@ 2008-05-30 10:44 ` Anton Farygin
2008-05-30 12:07 ` Alexander Bokovoy
2008-05-31 10:25 ` Alexey Tourbin
2008-05-30 11:47 ` Anton V. Boyarshinov
1 sibling, 2 replies; 37+ messages in thread
From: Anton Farygin @ 2008-05-30 10:44 UTC (permalink / raw)
To: public-devel-XbBxUvOt3X3HsNE/8sQLYR2eb7JE58TQ
Alexey Tourbin пишет:
> On Fri, May 30, 2008 at 12:21:00PM +0400, Anton V. Boyarshinov wrote:
>>> 1) Включить LZMA_Alone сжатие, забив на rsyncability.
>>> 2) Вернуться к идее rsyncable deflate.
>> Мне, как человеку, собирающему болванки, на которые вечно ничего не помещается, кажется более привлекательным вариантом LZMA_Alone.
>
> Я помню, как собирали болванку Junior 2.2 (1 CD), и, значит,
> в последний день выясняли, войдёт туда WindowMaker или нет... :)
> http://lists.altlinux.org/pipermail/devel/2003-February/010742.html
> http://lists.altlinux.org/pipermail/devel/2003-February/010744.html
>
> С появлением DVD как основного media-носителя дышать стало проще. А
> ситуация с интернетом стала глобально выправляться только в последнее
> время; так что теперь экономия на трафике rpm пакетов это чаще вопрос
> комфорта, а не денег. В общем, увы, общая актуальность вопроса сжатия
> несколько снизилась.
>
> Возвращаясь к теме, дилемма как раз состоит в том, что для разовой
> передачи пакетов лучше подходит LZMA, а для последующей синхронизации
> пакетов, если в пакетах небольшие изменения, лучше подходит rsyncable
> deflate. И если LZMA даёт эффект сразу, то от rsyncable deflate эффект
> появляется только со второго или третьего раза.
>
> Но, в общем, хорошо иметь выбор, и этот выбор становится всё менее
> гипотетическим. Можно будет сделать какую-нибудь статистику,
> перекрывает ли экономия от rsyncability экономию от LZMA или нет.
> Пока интрига сохраняется. :)
DVD конечно, ситуацию намного облегчило.. но, к сожалению, всё ещё
востребованы дистрибутивы на CD.
Идеальный вариант - LZMA + rsync.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 8:21 ` Anton V. Boyarshinov
@ 2008-05-30 11:28 ` Alexey Tourbin
2008-05-30 10:44 ` Anton Farygin
2008-05-30 11:47 ` Anton V. Boyarshinov
0 siblings, 2 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-30 11:28 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1449 bytes --]
On Fri, May 30, 2008 at 12:21:00PM +0400, Anton V. Boyarshinov wrote:
> > 1) Включить LZMA_Alone сжатие, забив на rsyncability.
> > 2) Вернуться к идее rsyncable deflate.
> Мне, как человеку, собирающему болванки, на которые вечно ничего не помещается, кажется более привлекательным вариантом LZMA_Alone.
Я помню, как собирали болванку Junior 2.2 (1 CD), и, значит,
в последний день выясняли, войдёт туда WindowMaker или нет... :)
http://lists.altlinux.org/pipermail/devel/2003-February/010742.html
http://lists.altlinux.org/pipermail/devel/2003-February/010744.html
С появлением DVD как основного media-носителя дышать стало проще. А
ситуация с интернетом стала глобально выправляться только в последнее
время; так что теперь экономия на трафике rpm пакетов это чаще вопрос
комфорта, а не денег. В общем, увы, общая актуальность вопроса сжатия
несколько снизилась.
Возвращаясь к теме, дилемма как раз состоит в том, что для разовой
передачи пакетов лучше подходит LZMA, а для последующей синхронизации
пакетов, если в пакетах небольшие изменения, лучше подходит rsyncable
deflate. И если LZMA даёт эффект сразу, то от rsyncable deflate эффект
появляется только со второго или третьего раза.
Но, в общем, хорошо иметь выбор, и этот выбор становится всё менее
гипотетическим. Можно будет сделать какую-нибудь статистику,
перекрывает ли экономия от rsyncability экономию от LZMA или нет.
Пока интрига сохраняется. :)
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 11:28 ` Alexey Tourbin
2008-05-30 10:44 ` Anton Farygin
@ 2008-05-30 11:47 ` Anton V. Boyarshinov
1 sibling, 0 replies; 37+ messages in thread
From: Anton V. Boyarshinov @ 2008-05-30 11:47 UTC (permalink / raw)
To: devel
On Fri, 30 May 2008 15:28:39 +0400 Alexey Tourbin
wrote:
> Я помню, как собирали болванку Junior 2.2 (1 CD), и, значит,
> С появлением DVD как основного media-носителя дышать стало проще.
lite на 1 CD. Школьные Лёгкий и Юниор -- наборы из 2 CD.
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 10:44 ` Anton Farygin
@ 2008-05-30 12:07 ` Alexander Bokovoy
2008-05-30 15:03 ` Anton V. Boyarshinov
2008-06-01 12:06 ` Anton Farygin
2008-05-31 10:25 ` Alexey Tourbin
1 sibling, 2 replies; 37+ messages in thread
From: Alexander Bokovoy @ 2008-05-30 12:07 UTC (permalink / raw)
To: ALT Linux Team development discussions
30 мая 2008 г. 14:44 пользователь Anton Farygin <rider@altlinux.com> написал:
>> Но, в общем, хорошо иметь выбор, и этот выбор становится всё менее
>> гипотетическим. Можно будет сделать какую-нибудь статистику,
>> перекрывает ли экономия от rsyncability экономию от LZMA или нет.
>> Пока интрига сохраняется. :)
>
> DVD конечно, ситуацию намного облегчило.. но, к сожалению, всё ещё
> востребованы дистрибутивы на CD.
>
> Идеальный вариант - LZMA + rsync.
Пока по оценке Алексея в текущем контейнере LZMA это сделать не
получается. Все же, я бы предложил более внимательно смотреть на
формирование содержимого lite на пакетном уровне. Думаю, что там есть
еще резервы.
--
/ Alexander Bokovoy
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 12:07 ` Alexander Bokovoy
@ 2008-05-30 15:03 ` Anton V. Boyarshinov
2008-05-30 15:09 ` Dmitry V. Levin
2008-06-01 12:06 ` Anton Farygin
1 sibling, 1 reply; 37+ messages in thread
From: Anton V. Boyarshinov @ 2008-05-30 15:03 UTC (permalink / raw)
To: devel
> Пока по оценке Алексея в текущем контейнере LZMA это сделать не
> получается. Все же, я бы предложил более внимательно смотреть на
> формирование содержимого lite на пакетном уровне. Думаю, что там есть
> еще резервы.
openoffice не выкинешь
и даже gcc :(
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 15:03 ` Anton V. Boyarshinov
@ 2008-05-30 15:09 ` Dmitry V. Levin
2008-05-30 15:17 ` Anton V. Boyarshinov
0 siblings, 1 reply; 37+ messages in thread
From: Dmitry V. Levin @ 2008-05-30 15:09 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 437 bytes --]
On Fri, May 30, 2008 at 07:03:38PM +0400, Anton V. Boyarshinov wrote:
> > Пока по оценке Алексея в текущем контейнере LZMA это сделать не
> > получается. Все же, я бы предложил более внимательно смотреть на
> > формирование содержимого lite на пакетном уровне. Думаю, что там есть
> > еще резервы.
> openoffice не выкинешь
> и даже gcc :(
Если для lite не нужен gcc, значит, существует способ от него избавиться.
--
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 15:09 ` Dmitry V. Levin
@ 2008-05-30 15:17 ` Anton V. Boyarshinov
2008-05-30 15:25 ` Mikhail Gusarov
0 siblings, 1 reply; 37+ messages in thread
From: Anton V. Boyarshinov @ 2008-05-30 15:17 UTC (permalink / raw)
To: devel
> > и даже gcc :(
> Если для lite не нужен gcc, значит, существует способ от него избавиться.
пока только вместе с Xorg :(
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 15:17 ` Anton V. Boyarshinov
@ 2008-05-30 15:25 ` Mikhail Gusarov
2008-05-30 15:32 ` Anton V. Boyarshinov
0 siblings, 1 reply; 37+ messages in thread
From: Mikhail Gusarov @ 2008-05-30 15:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 394 bytes --]
Twas brillig at 19:17:13 30.05.2008 UTC+04 when Anton V. Boyarshinov did gyre and gimble:
>> Если для lite не нужен gcc, значит, существует способ от него избавиться.
AVB> пока только вместе с Xorg :(
А какая там зависимость?
--
JID: dottedmag@altlinux.org / dottedmag@jabber.dottedmag.net
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 15:25 ` Mikhail Gusarov
@ 2008-05-30 15:32 ` Anton V. Boyarshinov
2008-05-30 15:37 ` Mikhail Gusarov
0 siblings, 1 reply; 37+ messages in thread
From: Anton V. Boyarshinov @ 2008-05-30 15:32 UTC (permalink / raw)
To: devel
> >> Если для lite не нужен gcc, значит, существует способ от него избавиться.
> AVB> пока только вместе с Xorg :(
>
> А какая там зависимость?
http://lists.altlinux.org/pipermail/devel/2008-May/074683.html
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 15:32 ` Anton V. Boyarshinov
@ 2008-05-30 15:37 ` Mikhail Gusarov
0 siblings, 0 replies; 37+ messages in thread
From: Mikhail Gusarov @ 2008-05-30 15:37 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 624 bytes --]
Twas brillig at 19:32:54 30.05.2008 UTC+04 when Anton V. Boyarshinov did gyre and gimble:
>> >> Если для lite не нужен gcc, значит, существует способ от него избавиться.
>> AVB> пока только вместе с Xorg :(
>> А какая там зависимость?
AVB> http://lists.altlinux.org/pipermail/devel/2008-May/074683.html
Ну, так я и думал. Значит, как Дима и писал, существует способ от него
избавиться.
--
JID: dottedmag@altlinux.org / dottedmag@jabber.dottedmag.net
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-29 23:23 ` Alexey Tourbin
@ 2008-05-30 21:31 ` Alexey Tourbin
2008-05-31 10:09 ` [devel] rsyncability test: openoffice Alexey Tourbin
0 siblings, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-30 21:31 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3042 bytes --]
On Fri, May 30, 2008 at 03:23:31AM +0400, Alexey Tourbin wrote:
> On Fri, May 30, 2008 at 01:56:10AM +0400, Dmitry V. Levin wrote:
> > On Fri, May 30, 2008 at 01:31:14AM +0400, Alexey Tourbin wrote:
> > [...]
> > > У меня есть идея. Для выбора точек синхронизации (gzflush) можно
> > > использовать не только "слепой" rsync hint, но и cpio hint -- как
> > > только мы видим cpio magic "070707", мы знаем, что через несколько
> > > байтов будет mtime и потом пойдёт имя и содержимое файла. То есть
> > > sync можно делать в месте окончания очередного cpio header.
> >
> > Это заметно снизит степень сжатия, когда в архиве много маленьких файлов?
>
> Этим можно управлять, чтобы сознательно пропускать только "совсем
> маленькие" файлы.
>
> > > Правда, я не знаю, даст это что-нибудь в случае с маленькими файлами
> > > или нет. Это может ничего не дать из-за того, что первые совпавшие
> > > блоки в сжатом виде всё равно могут отличаться (из-за backreferences
> > > в предыдущий блок).
> >
> > Могут или будут?
>
> Если сделать как показано ниже, то для пакета man-pages (после повторной
> пересборки) 'speedup 1.09' возрастает до 'speedup 1.19'. То есть эффект
> от синхронизации сразу после cpio хедера есть, он заметный, но не
> настолько большой, чтобы всё искупать.
Я реализовал более аккуратный cpio хинтинг для rsyncable_gzwrite().
Также появились первые результаты rsyncability тестирования.
А именно, мы тестируем rsyncability двух rpm пакетов, как если
бы они были собраны уже с помощью rsyncable_gzwrite().
test-rsynability glibc-core-2.5.1-alt4.x86_64.rpm glibc-core-2.5.1-alt5.x86_64.rpm => "speedup is 15.99"
test-rsynability glibc-core-2.3.5-alt7.x86_64.rpm glibc-core-2.5.1-alt5.x86_64.rpm => "speedup is 1.00"
test-rsynability glibc-2.3.5-alt7.x86_64.rpm glibc-2.5.1-alt5.x86_64.rpm => "speedup is 1.28"
test-rsynability firefox-2.0.0.13-alt1.x86_64.rpm firefox-2.0.0.14-alt1.x86_64.rpm => "speedup is 1.97"
test-rsynability xorg-x11-server-1.4.0.90-alt17.x86_64.rpm xorg-x11-server-1.4.0.90-alt19.x86_64.rpm => "speedup is 1.48"
Например, "speedup is 1.97" для пакета firefox означает, что примерно
половина кусков между этими двумя пакетами совпадают (если бы эти пакеты
были собраны с rsyncable_gzwrite), а другая половина кусков не совпадает;
так что по размеру придётся скачивать примерно половину фаерфокса.
Вот код для тестирования.
gzdio.c:
#include <stdio.h>
#include <assert.h>
#include <rpmio.h>
int main()
{
FD_t Fd = Fdopen(fdDup(fileno(stdout)), "w9.gzdio");
assert(Fd);
char buf[BUFSIZ];
size_t n, m;
while ((n = fread(buf, 1, sizeof(buf), stdin))) {
m = Fwrite(buf, 1, n, Fd);
assert(m == n);
}
Fclose(Fd);
return 0;
}
(gzdio.c надо линковать с новым librpmio, в котором сидит
rsyncable_gzwrite).
test-rsynability:
#!/bin/sh -efu
f1="$1" f2="$2"
shift 2
rpm2cpio "$f1" |./gzdio >cpio1.gz
rpm2cpio "$f2" |./gzdio >cpio2.gz
rsync -v -e ./rsync-shell foo:cpio1.gz cpio2.gz
rsync-shell:
shift && exec "$@"
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* [devel] rsyncability test: openoffice
2008-05-30 21:31 ` Alexey Tourbin
@ 2008-05-31 10:09 ` Alexey Tourbin
0 siblings, 0 replies; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-31 10:09 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 2777 bytes --]
On Sat, May 31, 2008 at 01:31:09AM +0400, Alexey Tourbin wrote:
> Также появились первые результаты rsyncability тестирования.
> А именно, мы тестируем rsyncability двух rpm пакетов, как если
> бы они были собраны уже с помощью rsyncable_gzwrite().
>
> test-rsynability glibc-core-2.5.1-alt4.x86_64.rpm glibc-core-2.5.1-alt5.x86_64.rpm => "speedup is 15.99"
> test-rsynability glibc-core-2.3.5-alt7.x86_64.rpm glibc-core-2.5.1-alt5.x86_64.rpm => "speedup is 1.00"
> test-rsynability glibc-2.3.5-alt7.x86_64.rpm glibc-2.5.1-alt5.x86_64.rpm => "speedup is 1.28"
> test-rsynability firefox-2.0.0.13-alt1.x86_64.rpm firefox-2.0.0.14-alt1.x86_64.rpm => "speedup is 1.97"
> test-rsynability xorg-x11-server-1.4.0.90-alt17.x86_64.rpm xorg-x11-server-1.4.0.90-alt19.x86_64.rpm => "speedup is 1.48"
>
> Например, "speedup is 1.97" для пакета firefox означает, что примерно
> половина кусков между этими двумя пакетами совпадают (если бы эти пакеты
> были собраны с rsyncable_gzwrite), а другая половина кусков не совпадает;
> так что по размеру придётся скачивать примерно половину фаерфокса.
Вот пример с опенофисом.
$ ./test-rsyncability /ALT/archive/Sisyphus/2008/01/01/files/x86_64/RPMS/openoffice.org-2.3.1.1-alt2.x86_64.rpm /ALT/Sisyphus/files/x86_64/RPMS/openoffice.org-2.4.0.12-alt1.x86_64.rpm
sent 776603 bytes received 88086117 bytes 6582423.70 bytes/sec
total size is 114643659 speedup is 1.29
$
Тут я взял старый опенофис (по состоянию на первое число сего года)
и новый опенофис. Размер нового опенофиса составляет 114M (беру по
первым цифрам), но при синхронизации со старым опенофисом придётся
скачать всего 88M.
Теперь посмотрим, что будет, если сжать новый опенофис с помощью LZMA.
$ rpm2cpio /ALT/Sisyphus/files/x86_64/RPMS/openoffice.org-2.4.0.12-alt1.x86_64.rpm |./lzma -2 |wc -c
92916334
$
Значит, если сжать опенофис с помощью LZMA, то придётся заново качать
92M вместо 114M; при этом синхронизация с помощью rsync ничего не даст.
Таким образом, эффект rsyncability в данном случае перекрывает эффект
LZMA (заново надо качать 92M, а при синхронизации -- 88M). Правда,
не знаю, имеет ли смысл сравнивать эти эффекты напрямую. Всё же эффект
rsyncability получается не настолько большой, как того хотелось бы (с
другой стороны, я синхронизирую достаточно разные *версии* опенофиса
2.3.x -> 2.4.x).
> test-rsynability:
> #!/bin/sh -efu
> f1="$1" f2="$2"
> shift 2
> rpm2cpio "$f1" |./gzdio >cpio1.gz
> rpm2cpio "$f2" |./gzdio >cpio2.gz
> rsync -v -e ./rsync-shell foo:cpio1.gz cpio2.gz
Этот скрипт лучше немного поправить:
test-rsyncability:
#!/bin/sh -efu
rpm2cpio "$1" |./gzdio >cpio1.gz
rpm2cpio "$2" |./gzdio >cpio2.gz
rsync --block-size 1024 -v -e ./rsync-shell foo:cpio2.gz cpio1.gz
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 10:44 ` Anton Farygin
2008-05-30 12:07 ` Alexander Bokovoy
@ 2008-05-31 10:25 ` Alexey Tourbin
2008-05-31 16:59 ` Kirill A. Shutemov
1 sibling, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-05-31 10:25 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 747 bytes --]
On Fri, May 30, 2008 at 02:44:39PM +0400, Anton Farygin wrote:
> Идеальный вариант - LZMA + rsync.
Для rsynability нужен маленьий размер словаря. У deflate размер
словаря 32K, а у 'lzma -2' -- 1M.
Представь себе, что ты за раз съел десерт, первое блюдо и второе блюдо,
запив всё это компотом; в выходных данных всё премешается, и уже нельзя
определить, где что было.
А если заглатывать понемножку, долго переваривать и какать понемножку,
то можно установить связь между входными и выходными данными. А это
и требуется для rsyncability.
Вот таблица для сравнения.
Алгоритм Размер словаря Сжатый размер опенофиса
-------- -------------- -----------------------
deflate 32K 114M
lzma -1 64K 100M
lzma -2 1M 92M
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-31 10:25 ` Alexey Tourbin
@ 2008-05-31 16:59 ` Kirill A. Shutemov
2008-06-01 0:33 ` Alexey Tourbin
0 siblings, 1 reply; 37+ messages in thread
From: Kirill A. Shutemov @ 2008-05-31 16:59 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 498 bytes --]
On Sat, May 31, 2008 at 02:25:23PM +0400, Alexey Tourbin wrote:
> А если заглатывать понемножку, долго переваривать и какать понемножку,
> то можно установить связь между входными и выходными данными. А это
> и требуется для rsyncability.
В фортунки!
--
Regards, Kirill A. Shutemov
+ Belarus, Minsk
+ ALT Linux Team, http://www.altlinux.com/
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-31 16:59 ` Kirill A. Shutemov
@ 2008-06-01 0:33 ` Alexey Tourbin
2008-06-01 13:07 ` Mikhail Gusarov
0 siblings, 1 reply; 37+ messages in thread
From: Alexey Tourbin @ 2008-06-01 0:33 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 567 bytes --]
On Sat, May 31, 2008 at 07:59:30PM +0300, Kirill A. Shutemov wrote:
> On Sat, May 31, 2008 at 02:25:23PM +0400, Alexey Tourbin wrote:
> > А если заглатывать понемножку, долго переваривать и какать понемножку,
> > то можно установить связь между входными и выходными данными. А это
> > и требуется для rsyncability.
>
> В фортунки!
$ fortune -a -m rabelaisian
fortune: /usr/share/games/fortune/off: No fortune files in directory.
fortune:/usr/share/games/fortune/off not a fortune file or directory
zsh: segmentation fault fortune -a -m rabelaisian
$
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-05-30 12:07 ` Alexander Bokovoy
2008-05-30 15:03 ` Anton V. Boyarshinov
@ 2008-06-01 12:06 ` Anton Farygin
1 sibling, 0 replies; 37+ messages in thread
From: Anton Farygin @ 2008-06-01 12:06 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexander Bokovoy пишет:
> 30 мая 2008 г. 14:44 пользователь Anton Farygin <rider@altlinux.com> написал:
>>> Но, в общем, хорошо иметь выбор, и этот выбор становится всё менее
>>> гипотетическим. Можно будет сделать какую-нибудь статистику,
>>> перекрывает ли экономия от rsyncability экономию от LZMA или нет
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-06-01 0:33 ` Alexey Tourbin
@ 2008-06-01 13:07 ` Mikhail Gusarov
2008-06-01 18:08 ` [devel] [JT] fortunezilla :) Michael Shigorin
2008-06-01 19:05 ` [devel] rpm: rsyncable deflate vs LZMA Alexey I. Froloff
0 siblings, 2 replies; 37+ messages in thread
From: Mikhail Gusarov @ 2008-06-01 13:07 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 458 bytes --]
Twas brillig at 04:33:31 01.06.2008 UTC+04 when Alexey Tourbin did gyre and gimble:
>> В фортунки!
AT> $ fortune -a -m rabelaisian
AT> fortune: /usr/share/games/fortune/off: No fortune files in directory.
AT> fortune:/usr/share/games/fortune/off not a fortune file or directory
AT> zsh: segmentation fault fortune -a -m rabelaisian
AT> $
В багзиллу!
--
JID: dottedmag@altlinux.org / dottedmag@jabber.dottedmag.net
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* [devel] [JT] fortunezilla :)
2008-06-01 13:07 ` Mikhail Gusarov
@ 2008-06-01 18:08 ` Michael Shigorin
2008-06-02 1:44 ` Sergey Balbeko
2008-06-01 19:05 ` [devel] rpm: rsyncable deflate vs LZMA Alexey I. Froloff
1 sibling, 1 reply; 37+ messages in thread
From: Michael Shigorin @ 2008-06-01 18:08 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Sun, Jun 01, 2008 at 08:07:43PM +0700, Mikhail Gusarov wrote:
> >> В фортунки!
> AT> $ fortune -a -m rabelaisian
> AT> fortune: /usr/share/games/fortune/off: No fortune files in directory.
> AT> fortune:/usr/share/games/fortune/off not a fortune file or directory
> AT> zsh: segmentation fault fortune -a -m rabelaisian
> AT> $
> В багзиллу!
В фортунки всё вместе!
--
---- WBSegmentation fault (core dumped)
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] rpm: rsyncable deflate vs LZMA
2008-06-01 13:07 ` Mikhail Gusarov
2008-06-01 18:08 ` [devel] [JT] fortunezilla :) Michael Shigorin
@ 2008-06-01 19:05 ` Alexey I. Froloff
1 sibling, 0 replies; 37+ messages in thread
From: Alexey I. Froloff @ 2008-06-01 19:05 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
* Mikhail Gusarov <dottedmag@> [080601 17:13]:
> AT> $ fortune -a -m rabelaisian
> AT> fortune: /usr/share/games/fortune/off: No fortune files in directory.
> AT> fortune:/usr/share/games/fortune/off not a fortune file or directory
> AT> zsh: segmentation fault fortune -a -m rabelaisian
> AT> $
> В багзиллу!
Типа уже пофиксил.
--
Regards,
Sir Raorn.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] [JT] fortunezilla :)
2008-06-01 18:08 ` [devel] [JT] fortunezilla :) Michael Shigorin
@ 2008-06-02 1:44 ` Sergey Balbeko
2008-06-02 5:06 ` Mikhail Gusarov
2008-06-02 8:21 ` Michael Shigorin
0 siblings, 2 replies; 37+ messages in thread
From: Sergey Balbeko @ 2008-06-02 1:44 UTC (permalink / raw)
To: ALT Linux Team development discussions
А может нам действительно какой-то фортунозавр завести;) ? С
регулярным копи-пастом в него, постоянным голосованием и
чисткой-разбором раз в месяц;)
On 6/1/08, Michael Shigorin <mike@osdn.org.ua> wrote:
> On Sun, Jun 01, 2008 at 08:07:43PM +0700, Mikhail Gusarov wrote:
>> >> В фортунки!
>> AT> $ fortune -a -m rabelaisian
>> AT> fortune: /usr/share/games/fortune/off: No fortune files in directory.
>> AT> fortune:/usr/share/games/fortune/off not a fortune file or directory
>> AT> zsh: segmentation fault fortune -a -m rabelaisian
>> AT> $
>> В багзиллу!
>
> В фортунки всё вместе!
>
> --
> ---- WBSegmentation fault (core dumped)
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
Sent from Gmail for mobile | mobile.google.com
wbr, Sergey Balbeko <balbeko[at]altlinux.org>.
--
Ukraine, Lugansk region, Stakhanov.
Donbass State Technical University.
Institute of Automation and Electrotechnical Systems.
Computer Systems Department.
--
ICQ == "244-711"
JID == "m0s.bizzy[at]gmail.com"
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] [JT] fortunezilla :)
2008-06-02 1:44 ` Sergey Balbeko
@ 2008-06-02 5:06 ` Mikhail Gusarov
2008-06-02 7:54 ` Alexey I. Froloff
2008-06-02 8:21 ` Michael Shigorin
1 sibling, 1 reply; 37+ messages in thread
From: Mikhail Gusarov @ 2008-06-02 5:06 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 296 bytes --]
Twas brillig at 04:44:45 02.06.2008 UTC+03 when Sergey Balbeko did gyre and gimble:
SB> А может нам действительно какой-то фортунозавр завести;)
Его wrar@ зовут :)
--
JID: dottedmag@altlinux.org / dottedmag@jabber.dottedmag.net
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] [JT] fortunezilla :)
2008-06-02 5:06 ` Mikhail Gusarov
@ 2008-06-02 7:54 ` Alexey I. Froloff
0 siblings, 0 replies; 37+ messages in thread
From: Alexey I. Froloff @ 2008-06-02 7:54 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 190 bytes --]
* Mikhail Gusarov <dottedmag@> [080602 11:39]:
> SB> А может нам действительно какой-то фортунозавр завести;)
> Его wrar@ зовут :)
Только не wrar@, а vvk@.
--
Regards,
Sir Raorn.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [devel] [JT] fortunezilla :)
2008-06-02 1:44 ` Sergey Balbeko
2008-06-02 5:06 ` Mikhail Gusarov
@ 2008-06-02 8:21 ` Michael Shigorin
1 sibling, 0 replies; 37+ messages in thread
From: Michael Shigorin @ 2008-06-02 8:21 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Mon, Jun 02, 2008 at 04:44:45AM +0300, Sergey Balbeko wrote:
> А может нам действительно какой-то фортунозавр завести;) ?
> С регулярным копи-пастом в него, постоянным голосованием и
> чисткой-разбором раз в месяц;)
1) apt-cache search fortunes-ALT
2) можешь спросить у raorn@ его скрипты и помочь vvk@ ;)
> >> >> В фортунки!
> >> В багзиллу!
> > В фортунки всё вместе!
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2008-06-02 8:21 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-29 12:38 [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
2008-05-29 13:28 ` Alexander Bokovoy
2008-05-29 16:50 ` Alexey Tourbin
2008-05-29 18:37 ` Dmitry V. Levin
2008-05-29 19:50 ` Alexey Tourbin
2008-05-29 20:13 ` Alexey Tourbin
2008-05-29 20:28 ` Led
2008-05-29 20:42 ` Alexey Tourbin
2008-05-29 20:16 ` Alexander Bokovoy
2008-05-29 21:31 ` Alexey Tourbin
2008-05-29 21:56 ` Dmitry V. Levin
2008-05-29 23:23 ` Alexey Tourbin
2008-05-30 21:31 ` Alexey Tourbin
2008-05-31 10:09 ` [devel] rsyncability test: openoffice Alexey Tourbin
2008-05-30 9:27 ` [devel] rpm: rsyncable deflate vs LZMA Alexey Tourbin
2008-05-30 8:21 ` Anton V. Boyarshinov
2008-05-30 11:28 ` Alexey Tourbin
2008-05-30 10:44 ` Anton Farygin
2008-05-30 12:07 ` Alexander Bokovoy
2008-05-30 15:03 ` Anton V. Boyarshinov
2008-05-30 15:09 ` Dmitry V. Levin
2008-05-30 15:17 ` Anton V. Boyarshinov
2008-05-30 15:25 ` Mikhail Gusarov
2008-05-30 15:32 ` Anton V. Boyarshinov
2008-05-30 15:37 ` Mikhail Gusarov
2008-06-01 12:06 ` Anton Farygin
2008-05-31 10:25 ` Alexey Tourbin
2008-05-31 16:59 ` Kirill A. Shutemov
2008-06-01 0:33 ` Alexey Tourbin
2008-06-01 13:07 ` Mikhail Gusarov
2008-06-01 18:08 ` [devel] [JT] fortunezilla :) Michael Shigorin
2008-06-02 1:44 ` Sergey Balbeko
2008-06-02 5:06 ` Mikhail Gusarov
2008-06-02 7:54 ` Alexey I. Froloff
2008-06-02 8:21 ` Michael Shigorin
2008-06-01 19:05 ` [devel] rpm: rsyncable deflate vs LZMA Alexey I. Froloff
2008-05-30 11:47 ` Anton V. Boyarshinov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git