ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] I: weekend mail
Date: Mon, 7 Sep 2009 23:04:19 +0400
Message-ID: <20090907190419.GK10888@altlinux.org> (raw)
In-Reply-To: <cc557aab0909071143g4cc8b1d7m66c12eb3a7096ee@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2358 bytes --]

On Mon, Sep 07, 2009 at 09:43:17PM +0300, Kirill A. Shutemov wrote:
> 2009/9/7 Alexey Tourbin <at@altlinux.ru>:
> > On Mon, Sep 07, 2009 at 09:04:05PM +0300, Kirill A. Shutemov wrote:
> >> 2009/9/7 Dmitry V. Levin <ldv@altlinux.org>:
> >> > На данный момент мне кажется, что путём распараллеливания выполнения
> >> > заданий можно получить лучший результат, чем путём увеличения $NPROCS.
> >>
> >> Дима, а можно по подробней? Какие работы ведутся в этом направлении?
> >
> > Есть некоторые идеи.  Когда два задания собираются параллельно, то одно
> > из них в конечном счете выбирается жертвой и идёт на второй заход.  Но
> > на втором заходе, скорее всего, пакеты пересобирать не потребуется.
> 
> Есть предварительные оценки при каком максимальном количестве потоков
> сборки результат будет приемлемым?

Поясню несколько подробнее.  С одной стороны, нужна полная сериализация
заданий: каждое задание может успешно завершиться только на том же самом
репозитории, на котором оно начиналось.  Если репозитарий за это время
изменился, то задание надо проигрывать заново.

С другой стороны, мы можем кешировать самую дорогую операцию -- сборку
пакетов -- по принципу содержимого сборочного чрута.  Если содержимое
сборочного чрута не изменилось, то пакет пересобирать не надо.

Получается довольно грубая гранулярность: первое задание, которое
успешно завершается, "вышибает" все остальные задания -- они становятся
жертвами и идут на второй заход.  Думаю что на практике в 2-4 потока
собирать можно.

Нельзя ли улучить гранулярность?  Теоретически можно.  То, что
я описываю, можно считать вырожденным случаем transactional memory:
http://en.wikipedia.org/wiki/Software_transactional_memory
Transactional memory означает, что результат сборки задания зависит
только от конечного числа пакетов, которые мы "читаем" во время сборки.
Поэтому в принципе возможны непересекающиеся транзакции.  Но ведь мы ещё
строим транзитивное замыкание!  Это всё портит -- получается, что каждая
транзакция читает весь репозиторий целиком, потому что она строит
транзитивное замыкание.

Короче, на практике гранулярность улучшить нельзя, потому что тогда надо
отслеживать по каким альтернативным переходам строится транзитивное
замыкание.  То есть нельзя отказаться от принципа что первое успешное
задание вышибает все конкурирующие.

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

  reply	other threads:[~2009-09-07 19:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-07 16:29 Dmitry V. Levin
2009-09-07 17:03 ` Max Ivanov
2009-09-07 17:49   ` Dmitry V. Levin
2009-09-07 18:04     ` Kirill A. Shutemov
2009-09-07 18:12       ` Alexey Tourbin
2009-09-07 18:43         ` Kirill A. Shutemov
2009-09-07 19:04           ` Alexey Tourbin [this message]
2009-09-08 11:47     ` Michael Shigorin
2009-09-08 11:56       ` Alexey Rusakov
2009-09-08  4:18   ` REAL

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=20090907190419.GK10888@altlinux.org \
    --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