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