ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
@ 2018-03-03 13:02 Igor Vlasenko
  2018-03-05  4:14 ` Андрей Бергман
  0 siblings, 1 reply; 7+ messages in thread
From: Igor Vlasenko @ 2018-03-03 13:02 UTC (permalink / raw)
  To: devel

Уважаемые господа!

Продолжаю цикл писем, посвященный предложениям по улучшению
нашей сборочницы.

VII. Алгоритмы ускорения сборки Больших Транзакций.

Большие транзакции естественно возникают при обновлении
многих языковых экосистем. У нас на слуху perl и python,
сейчас добавился texlive, но это только потому, что они
хорошо представлены в Сизифе и регулярно обновляются.

На самом деле это типичная проблема. Просто ранее 
большинство языковых экосистем у нас были представлены
только базовым компилятором или интерпретатором и ограниченным набором
основных библиотек. На самом деле такая ситуация не очень
хороша. Это как дать пользователю базовую систему
(ядро+shell+cc) и сказать, а дальше собирайте сами.
Тем не менее, большинство предпочтет полноценный дистрибутив.
Но сейчас ALTLinux вырастает из детских штанишек,
и у него растут требования к поддержке, в. т. ч.
различных языковых экосистем.
Поэтому Большие Транзакции (как пересборка питона с 3000+ пакетов)
все чаще и чаще посещают нашу сборочницу.

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

В прошлых письмах я описывал алгоритмы работы параллельной
сборочницы. Эти алгоритмы решают проблему, как быстро собрать
большое число транзакций параллельно. Однако эти алгоритмы
не влияют на скорость сборки каждой отдельной транзакции.

Однако в параллельной сборочнице сборку Больших Транзакций
тоже можно ускорить. Но в данном случае автоматические
алгоритмы предлагаю использовать в сочетании со специальной
разметкой пакетов транзакции человеком.

Именно, часть subtask'ов в task'е надо пометить как синхронные.

Синхронный subtask означает, что, пока синхронный subtask и
все ему предыдущие не собраны, параллельная сборочница не пытается
собрать subtask'и, следующие за синхронным.

К примеру, при обновлении perl я помечу самый первый subtask в
транзакции, perl, как синхронный.
Все остальные subtask'и в обновлении perl я помечать (как синхронный)
не буду, пусть сборочница пытается их собрать параллельно.

Для полноты опишу алгоритм.
У транзакции есть пул собранных пакетов, в начале пустой.
Субтаски могут иметь флаг "синхронный",
а внутри состояния "ожидает", "собирается", "собран", "ошибка сборки",
"в пуле" (собранные пакеты добавлены в пул).
есть указатель головы сборки.

Начиная с головы, субтаски ставятся в параллельную сборку с текущим
пулом по порядку номеров в числе имеющихся параллельных потоков
сборки, но лишь до тех пор, пока не встретится "синхронный"
или "ошибка сборки" субтаск.
Если первый же субтаск, на который указывает текущий указатель,
"синхронный" или "ошибка сборки", он единственный отправляется
на сборку, неудача сборки делает всю транзакцию FAILED.
Собранные субтаски добавляются в пул, указатель инкрементируется.
(есть тонкости как реализовывать, синхронно проще, асинхронно быстрее).

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

Зато вместо 10 суток результат будет через 10 часов.


-- 

I V


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-03 13:02 [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций Igor Vlasenko
@ 2018-03-05  4:14 ` Андрей Бергман
  2018-03-05 12:57   ` Igor Vlasenko
  0 siblings, 1 reply; 7+ messages in thread
From: Андрей Бергман @ 2018-03-05  4:14 UTC (permalink / raw)
  To: Igor Vlasenko; +Cc: devel

Спасибо!

Можете ли вы продумать, как интегрировать "языковые репозитарии" вообще? Т.е. нельзя ли сделать какую-то инфраструктуру, API для более-менее быстрого подключения всех этих CPAN, CTAN, OPAM, Hackage, Crates.io и прочего?

Там же есть проблемы вроде cabal-hell, "живых" зависимостей и наверно ещё чего-то. Плюс, хотелось бы, чтобы для пересборки, скажем, инфраструктуры Ocaml'а не требовалось вручную добавлять строки в changelog'е для десятка пакетов.

Ну и вообще, странно, что нужно делать какие-то действия для сборки десятка пакетов из OPAM'а, если их разработчики всё давно уже оттестировали и собрали у себя. Аналогично с Hackage (релизы stack'а).


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-05  4:14 ` Андрей Бергман
@ 2018-03-05 12:57   ` Igor Vlasenko
  2018-03-05 13:12     ` Anton Farygin
  0 siblings, 1 reply; 7+ messages in thread
From: Igor Vlasenko @ 2018-03-05 12:57 UTC (permalink / raw)
  To: ALT Linux Team development discussions
  Cc: Андрей
	Бергман

On Mon, Mar 05, 2018 at 07:14:12AM +0300, Андрей Бергман wrote:
> Спасибо!
> 
> Можете ли вы продумать, как интегрировать "языковые репозитарии" вообще? Т.е. нельзя ли сделать какую-то инфраструктуру, API для более-менее быстрого подключения всех этих CPAN, CTAN, OPAM, Hackage, Crates.io и прочего?

Я уже придумал, как интегрировать, и реализовал как 
фреймворк с общими библиотеки и плагинами под конкретный язык.

Плагины есть под Perl (стабильный), Octave (Нет пользователя)
NodeJS (Нет пользователя), TeXLive (в разработке),
Python (в разработке).

Если есть интерес, то после того, как закончу с texlive,
могу разработать для вас плагин к OCAML.
Есть желание им пользоваться?
 
> Там же есть проблемы вроде cabal-hell, "живых" зависимостей и наверно ещё чего-то. Плюс, хотелось бы, чтобы для пересборки, скажем, инфраструктуры Ocaml'а не требовалось вручную добавлять строки в changelog'е для десятка пакетов.

Никаких вручную, все автоматизировано,
запускаем скрипт
./обновить_{Perl,Octave,...}
собирваем, тестируем, отправляем пакеты.

> Ну и вообще, странно, что нужно делать какие-то действия для сборки десятка пакетов из OPAM'а, если их разработчики всё давно уже оттестировали и собрали у себя. Аналогично с Hackage (релизы stack'а).

Аналогично. Поэтому и разрабатываю автоматизацию для их сборки.

-- 

I V


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-05 12:57   ` Igor Vlasenko
@ 2018-03-05 13:12     ` Anton Farygin
  2018-03-05 13:14       ` Anton Farygin
  0 siblings, 1 reply; 7+ messages in thread
From: Anton Farygin @ 2018-03-05 13:12 UTC (permalink / raw)
  To: ALT Linux Team development discussions, Igor Vlasenko
  Cc: Андрей
	Бергман

05.03.2018 15:57, Igor Vlasenko пишет:
> On Mon, Mar 05, 2018 at 07:14:12AM +0300, Андрей Бергман wrote:
>> Спасибо!
>>
>> Можете ли вы продумать, как интегрировать "языковые репозитарии" вообще? Т.е. нельзя ли сделать какую-то инфраструктуру, API для более-менее быстрого подключения всех этих CPAN, CTAN, OPAM, Hackage, Crates.io и прочего?
> Я уже придумал, как интегрировать, и реализовал как
> фреймворк с общими библиотеки и плагинами под конкретный язык.
>
> Плагины есть под Perl (стабильный), Octave (Нет пользователя)
> NodeJS (Нет пользователя), TeXLive (в разработке),
> Python (в разработке).
>
> Если есть интерес, то после того, как закончу с texlive,
> могу разработать для вас плагин к OCAML.
> Есть желание им пользоваться?
>   

Нет, пока нету.




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-05 13:12     ` Anton Farygin
@ 2018-03-05 13:14       ` Anton Farygin
  2018-03-10  4:32         ` Андрей Бергман
  0 siblings, 1 reply; 7+ messages in thread
From: Anton Farygin @ 2018-03-05 13:14 UTC (permalink / raw)
  To: ALT Linux Team development discussions, Igor Vlasenko
  Cc: Андрей
	Бергман

05.03.2018 16:12, Anton Farygin пишет:
>>>
>> Я уже придумал, как интегрировать, и реализовал как
>> фреймворк с общими библиотеки и плагинами под конкретный язык.
>>
>> Плагины есть под Perl (стабильный), Octave (Нет пользователя)
>> NodeJS (Нет пользователя), TeXLive (в разработке),
>> Python (в разработке).
>>
>> Если есть интерес, то после того, как закончу с texlive,
>> могу разработать для вас плагин к OCAML.
>> Есть желание им пользоваться?
>
> Нет, пока нету. 

С ocaml проблема не сколько в том, что нужно массово собрать модули, 
сколько в том, что их нужно собрать правильно. У меня болтается таск, в 
котором я начал обновлять ocaml и столкнулся с тем, что для сборки новых 
версий модулей ocaml из гита нужно собрать некоторый набор инструментов.

Всё в TODO.

После того, как я закончу эту работу - можно будет и робота подключить.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-05 13:14       ` Anton Farygin
@ 2018-03-10  4:32         ` Андрей Бергман
  2018-03-11  8:20           ` Anton Farygin
  0 siblings, 1 reply; 7+ messages in thread
From: Андрей Бергман @ 2018-03-10  4:32 UTC (permalink / raw)
  To: ALT Linux Team development discussions

А как решается проблема появления/пропадания зависимостей к OPAM?
Т.е. какие-то библиотеки могут требоваться для сборки конечных программ, а потом пропадать и вообще попадать в разряд deprecated.

А как с библиотеками, которые требуют внешних по отношению к OPAM зависимостей - типа GSL? Это учитывается?

Это же административные проблемы, по-сути.

05.03.2018, 16:14, "Anton Farygin" <rider@basealt.ru>:
> 05.03.2018 16:12, Anton Farygin пишет:
> С ocaml проблема не сколько в том, что нужно массово собрать модули,
> сколько в том, что их нужно собрать правильно. У меня болтается таск, в
> котором я начал обновлять ocaml и столкнулся с тем, что для сборки новых
> версий модулей ocaml из гита нужно собрать некоторый набор инструментов.
>
> Всё в TODO.
>
> После того, как я закончу эту работу - можно будет и робота подключить.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций.
  2018-03-10  4:32         ` Андрей Бергман
@ 2018-03-11  8:20           ` Anton Farygin
  0 siblings, 0 replies; 7+ messages in thread
From: Anton Farygin @ 2018-03-11  8:20 UTC (permalink / raw)
  To: ALT Linux Team development discussions,
	Андрей
	Бергман

Я же написал, что сейчас ocaml собирается вручную.

10.03.2018 07:32, Андрей Бергман пишет:
> А как решается проблема появления/пропадания зависимостей к OPAM?
> Т.е. какие-то библиотеки могут требоваться для сборки конечных программ, а потом пропадать и вообще попадать в разряд deprecated.
>
> А как с библиотеками, которые требуют внешних по отношению к OPAM зависимостей - типа GSL? Это учитывается?
>
> Это же административные проблемы, по-сути.
>
> 05.03.2018, 16:14, "Anton Farygin" <rider@basealt.ru>:
>> 05.03.2018 16:12, Anton Farygin пишет:
>> С ocaml проблема не сколько в том, что нужно массово собрать модули,
>> сколько в том, что их нужно собрать правильно. У меня болтается таск, в
>> котором я начал обновлять ocaml и столкнулся с тем, что для сборки новых
>> версий модулей ocaml из гита нужно собрать некоторый набор инструментов.
>>
>> Всё в TODO.
>>
>> После того, как я закончу эту работу - можно будет и робота подключить.
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-03-11  8:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-03 13:02 [devel] Сборочница. VII. Алгоритмы ускорения сборки Больших Транзакций Igor Vlasenko
2018-03-05  4:14 ` Андрей Бергман
2018-03-05 12:57   ` Igor Vlasenko
2018-03-05 13:12     ` Anton Farygin
2018-03-05 13:14       ` Anton Farygin
2018-03-10  4:32         ` Андрей Бергман
2018-03-11  8:20           ` Anton Farygin

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