ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: [devel] comprehensive rsyncability test
Date: Sat, 31 May 2008 22:58:47 +0400
Message-ID: <20080531185847.GZ7996@solemn.turbinal> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 3566 bytes --]

Предварительное тестирование rsyncable gzdio показало, что эффект
от rsyncable deflate есть, и лучше всего он проявляется при
незначительном изменении пакетов; кроме того, пакет должен содержать
достаточно большие файлы (если пакет целиком состоит из маленьких
файлов, то rsyncability резко падает).

Но одиночные тесты не выявляют "реального положения вещей"; требуется
более широкое тестирование с привлечением "реальных данных" за некоторый
промежуток времени.

Предлагаю протестировать rsyncability двух каталогов:
/ALT/archive/Sisyphus/2008/03/01/files/x86_64/RPMS
/ALT/archive/Sisyphus/2008/04/01/files/x86_64/RPMS

Методика тестирования следующая:
1) Из каталогов парами выбираются файлы, у которых совпадает
имя пакета %{NAME}, но при этом не совпадает имя файла
%name-%version-%release.x86_64.rpm.
2) Для каждой пары пакетов извлекается cpio архив и перепаковывается
с помощью rsyncable gzdio из нового rpmio.
3) Отсекаются маленькие пакеты: оба перепакованных архива должны быть
больше 32K.
4) Запускается rsync, который диагностирует степень "совпадения" двух
перепакованных архивов.

Полный результат приведён в таблице, которую я прицепил к письму.
Таблица подразумевает следующий заголовок.

файл-1   размер-1   файл-2   размер-2   послано   скочено   speedup
------   --------   ------   --------   -------   -------   -------

Последние три поля из диагностики rsync.  Размеры округляются
до килобайтов.

$ wc -l <rsyncability.txt
1360
$

Всего мы рассматриваем 1360 штук x86_64 пакетов, которые обновились
с 1 марта по 1 апреля 2008 года.

$ awk '$NF>2' rsyncability.txt |wc -l
211
$

Из них достаточно большим значением speedup (синхронизация вдвое
быстрее, чем простое скачивание) обладают 211 пакетов.

$ sum() { perl -MList::Util=sum -ln0 -e 'print sum split'; }
$ cut -f4 rsyncability.txt |sum
2433627
$

Общий размер новых пакетов 2.32G.

$ cut -f6 rsyncability.txt |sum
1643033
$

При этом rsync скачал 1.57G.

$ cut -f5 rsyncability.txt |sum    
14017
$

Нужно также понимать, что rsync не только что-то скачал,
но и послал 13.7M (оверхед протокола при поиске совпадающих кусков;
опция --block-size здесь влияет).

ТАКИМ ОБРАЗОМ, я считаю, что эта ситуация в какой-то степени отражает
"реальное положение вещей".  А именно, если бы мы просто скачивали
"новые файлы за март", то мы скачали бы 2.32G.  Если же мы
синхронизировали "новые файлы за март" со "старыми домартовскими
файлами", то мы скачали бы где-то 1.6G (напоминаю, что совсем маленькие
пакеты исключены из рассмотрения).  Этот расчёт сделан в предположении,
что как старые предмартовские файлы, так и новые файлы за март УЖЕ
запакованы при помощи rsyncable gzdio.

Вот код скрита (gzdio.c и rsync-shell были в одном из предыдущих писем,
packages из пакета qa-robot).

test-dirs:
#!/bin/sh -efu
packages "$1" >pkg1
packages "$2" >pkg2
join -t$'\t' -j 1 -o '0 1.3 2.3' pkg1 pkg2 |awk -F'\t' '$2!=$3' >pkg12
while read -r pkg f1 f2; do
	rpm2cpio "$1/$f1" |./gzdio >cpio1.gz
	rpm2cpio "$2/$f2" |./gzdio >cpio2.gz
	s1=$(du -b cpio1.gz |awk '{print int($1/1024+0.5)}')
	s2=$(du -b cpio2.gz |awk '{print int($1/1024+0.5)}')
	[ "$s1" -gt 32 ] && [ "$s2" -gt 32 ] || continue
	rsync --block-size 1024 -v -e ./rsync-shell foo:cpio2.gz cpio1.gz >out
	sent=$(awk '$1=="sent"{print int($2/1024+.5)}' out)
	received=$(awk '$4=="received"{print int($5/1024+.5)}' out)
	speedup=$(awk '$5=="speedup"{print$7}' out)
	echo $f1$'\t'$s1$'\t'$f2$'\t'$s2$'\t'$sent$'\t'$received$'\t'$speedup
done <pkg12

[-- Attachment #1.2: rsyncability.txt.bz2 --]
[-- Type: application/x-bzip2, Size: 25050 bytes --]

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

             reply	other threads:[~2008-05-31 18:58 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-31 18:58 Alexey Tourbin [this message]
2008-05-31 19:44 ` Dmitry V. Levin
2008-05-31 21:32   ` Alexey Tourbin
2008-05-31 21:57     ` Dmitry V. Levin
2008-05-31 22:14       ` Alexey Tourbin
2008-05-31 22:26         ` Dmitry V. Levin
2008-05-31 23:10           ` Alexey Tourbin
2008-06-01  8:11   ` Alexey Tourbin
2008-06-01 17:35     ` Michael Shigorin
2008-06-01 17:43       ` Mikhail Gusarov
2008-06-01 18:04         ` Michael Shigorin
2008-06-01 18:39         ` Alexey I. Froloff
2008-06-01 17:44       ` Alexander Bokovoy
2008-06-01 18:22         ` Alexey Tourbin
2008-06-01 18:32           ` Led
2008-06-01 19:04             ` Alexey Tourbin
2008-06-01 10:18 ` Alexey Tourbin
2008-06-01 12:18   ` Anton Farygin
2008-06-01 13:23     ` Mikhail Gusarov
2008-06-01 12:26       ` Anton Farygin
2008-06-01 13:48         ` Alexander Bokovoy
2008-06-01 21:17           ` [devel] rsync server load Alexey Tourbin
2008-06-01 21:52             ` Konstantin A. Lepikhov
2008-06-02 14:08             ` Dmitry V. Levin
2008-06-02 14:25               ` Konstantin A. Lepikhov
2008-06-02 14:29                 ` Dmitry V. Levin
2008-06-02 18:04                   ` Konstantin A. Lepikhov
2008-06-02 20:21                     ` [devel] [jt] " Dmitry V. Levin
2008-06-02 20:28                       ` Alexey Gladkov
2008-06-02 20:35                         ` Dmitry V. Levin
2008-06-02 20:41                           ` Alexey Gladkov
2008-06-02 20:58                           ` Sergey Y. Afonin
2008-06-03  6:30                         ` Dmitriy M. Maslennikov
2008-06-02 20:53                       ` Sergey Y. Afonin
2008-06-02 21:33                       ` Konstantin A. Lepikhov
2008-06-02 21:42                         ` Dmitry V. Levin
2008-06-02 22:25                           ` Konstantin A. Lepikhov
2008-06-02 22:50                             ` [devel] [jt] clustered fs Dmitry V. Levin
2008-06-02 22:54                               ` Konstantin A. Lepikhov
2008-06-02 23:08                                 ` Dmitry V. Levin
2008-06-03  5:38                                   ` Anton Farygin
2008-06-03  7:19                                   ` Serge Ryabchun
2008-06-03  8:53                                   ` Michael Shigorin
2008-06-03 10:27                                     ` [devel] " Dmitry V. Levin
2008-06-03 15:02                                       ` Michael Shigorin
2008-06-03 15:18                                         ` [devel] lustre Dmitry V. Levin
2008-06-03 20:21                                           ` Michael Shigorin
2008-06-03 21:27                                             ` Dmitry V. Levin
2008-06-04 12:15                                               ` Serge Ryabchun
2008-06-04 12:20                                                 ` Michael Shigorin
2008-06-04 12:47                                                   ` Anton Farygin
2008-06-04 14:17                                                     ` Andrey Brindeyev
2008-06-04 14:17                                                       ` Andrey Brindeyev
2008-06-04 14:46                                                       ` Anton Farygin
2008-06-04 15:12                                                         ` Serge Ryabchun
2008-06-04 15:22                                                         ` Andrey Brindeyev
2008-06-04 18:49                                                           ` Anton Farygin
2008-06-04 15:10                                                       ` Alexander Bokovoy
2008-06-05  9:04                                                         ` Sergey Zhumatiy
2008-06-05  9:08                                                           ` Alexander Bokovoy
2008-06-03 10:50                                     ` [devel] [jt] clustered fs Mykola S. Grechukh
2008-06-03  8:51                           ` [devel] [jt] rsync server load Michael Shigorin
2008-06-01 13:49         ` [devel] comprehensive rsyncability test Alexander Bokovoy
2008-06-01 12:55           ` Anton Farygin
2008-06-01 15:35           ` Alexey Tourbin
2008-06-01 16:38             ` Alexander Bokovoy
2008-06-01 16:42               ` Mikhail Gusarov
2008-06-01 16:55                 ` Alexander Bokovoy
2008-06-01 17:03                   ` Mikhail Gusarov
2008-06-01 17:41   ` Michael Shigorin
2008-06-01 17:47     ` Mikhail Gusarov
2008-06-01 18:07       ` [devel] [JT] насчёт НП-18 Michael Shigorin
2008-06-01 18:11         ` Mikhail Gusarov
2008-06-02  3:48           ` Anton Farygin
2008-06-02  4:50             ` Alexander Bokovoy
2008-06-02  9:45               ` Sergey Bolshakov
2008-06-02  9:52               ` Anton Farygin
2008-06-02  9:57                 ` Aleksey Novodvorsky
2008-06-02 10:18                   ` Mikhail Gusarov
2008-06-02 10:43                   ` Anton Farygin
2008-06-02 20:24   ` [devel] comprehensive rsyncability test Dmitry V. Levin
2008-06-02 20:31     ` Led
2008-06-04 12:33     ` Alexey Tourbin
2008-06-04 12:49       ` Anton Farygin
2008-06-04 13:04         ` Alexey Tourbin
2008-06-04 17:37           ` Michael Shigorin
2008-06-04 18:24             ` Alexey Tourbin
2008-06-04 18:54               ` Michael Shigorin
2008-06-05  7:36             ` Anton V. Boyarshinov
2008-06-04 18:49           ` Dmitry V. Levin
2008-06-02 10:06 ` Alexey Tourbin
2008-06-02 10:38   ` Alexander Bokovoy
2008-06-02 10:46     ` Anton Farygin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080531185847.GZ7996@solemn.turbinal \
    --to=at@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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