[devel] ресурсоёмкое тестирование пакетов

Alexey Tourbin at на altlinux.ru
Ср Май 20 16:46:10 MSD 2009


On Wed, May 20, 2009 at 09:41:55AM +0400, Anton Farygin wrote:
> Alexey Tourbin пишет:
> >А также ясно, что основная проблема с 
> >ресурсами и с распараллеливанием
> >лежит в другой плоскости.  Она связана не 
> >со сборкой самих заданий, а с
> >тестовой пересборкой репозитария для 
> >каждого задания.
> >
> >Тестовая пересборка сизифа для каждого 
> >задания -- это очень круто (то
> >есть, это challenge).  Дольно сложно будет 
> >реализовать её оптимально.
> >С другой стороны, тестовая пересборка 
> >дает наиболее полное представление
> >о целостности репозитария (то есть, дает 
> >комплексную оценку пригодности
> >пакетов).  Мы же не в крестики-нолики 
> >играем, а хотим поддерживать
> >целостный репозитарий.  Это дорогое 
> >развлечение.
> 
> Кстати, тогда уж целью стоит объявлять 
> выявление и устранение изменений в 
> результатах пересборки после каждого 
> нового пакета.
> 
> Например, после появления glibc, каждый 
> пересобранный пакет уже не равен 
> существующему пакету в репозитории (по 
> зависимостям).

Это совершенно верный ход мыслей.  Результат сборки существующих пакетов
в новой среде может отличаться, и не только по базовому параметру
собираемости/несобираемости (который сейчас выявляется при еженедельной
тестовой пересборке пакетов), но и по другим параметрам.  Необходимо
каким-то образом фиксировать такие отличия.  Для этого нужна модель
данных, в рамках которой эти отличия могут быть каким-то образом
представлены.

Такая модель данных в основном уже продумана.  Она называется
"метарепозитарий".  Метарепозитарий описывает состояния пакетов в
репозитарии.  Для пакетов, которые прошли тестовую пересборку, вводится
специальное "фантомное состояние".  Все фантомные состояния, которые
возникают в результате тестовой пересборки пакетов, должны явно
фиксироваться в метарпозитарии.  Метарепозитарий позволяет
интроспективно отслеживать изменения свойств (существующих) пакетов,
когда эти изменения обусловлены изменениями в сборочной среде.
Метарепозитарий позволяет выяснить, какие именно пакеты/задания влияют
на результат сборки существующих пакетов.

С философской точки зрения, метарепозитарий позволяет частично
предсказывать будущее; точнее, делать наиболее обоснованные
предсказания.  Эти предсказания полностью никогда сбываться не будут,
но у них будет правильное направление.  Я не буду подробнее
останавливаться на философских аспектах.

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

Такую пересобиралку несложно реализовать (когда будет реализовано всё
остальное), но, скорее всего, её не следует реализовывать.  Во-первых,
они будет генерировать очень большой трафик.  Более того, если для
пересобиралки задать слишком жесткие условия, то процесс пересборки
никогда не закончится (например, новый gcc будет пересобран с новой
glibc; тогда уже нужно опять пересобирать glibc с новым gcc и т.д.).
Во-вторых, я считаю, что сборкой пакетов должны заниматься люди, а не
роботы.

> Тогда можно и параллелить (аккуратно, 
> естественно).

У тебя есть навязчивая идея, что нужно распараллеливать сборку.
У ldv есть навязчивая идея, что ACL нужно проверять до, а не после
сборки пакета.  Нам нужно осовободиться от навязчивых идей.  Я считаю,
что самое главное -- это поддержка целостности репозитарий (и я не
отношу это к навязчивой идее).  Всякие оптимизации -- это вторично.

> Да, а железа для этого нужно, судя по 
> всему - раз в 50 больше, чем сейчас. С 
> учётом того, что сейчас пересборка 
> сизифа занимает порядка трёх суток (72 
> часа), а мы не можем допустить, что бы у 
> нас пакет собирался более чем разумное 
> время (в данном контексте, думаю, один час 
> - вполне разумно), то текущее количество 
> сборочных серверов нужно умножить на 72 
> (на самом деле - больше, нужно считать 
> overhead на постановку задач/сеть).

Существуют оценки потребности в железе для полной пересборки сизифа.
Эти оценки основываются на двух простых постулатах: 1) некоторые вещи
распараллелить нельзя; 2) некоторые другие вещи распараллелить можно.
В частности, речь идет о том, что тестовую сборку отдельного пакета
распараллелить или ускорить почти никак нельзя, а пересборка репозитария
очень хорошо поддается распараллеливанию.  Тогда мы устанавливаем время
полной пересборки репозитария на уровне самого сложного пакета (где-то
два-три часа) и смотрим, сколько ещё нужно ресурсов, чтобы эа зто же самое
время успеть пересобрать все пакеты попроще.

Для одной архитектуры получается оценка 57 процессорных ядер (в
предположении, что ядра дают линейное распараллеливание).

> С учётом того, что в данный момент (по 
> словам ldv) задействовано 4 сервера, для 
> полной автоматизации этого процесса 
> необходимо порядка 288 серверов.

Для полной пересборки сизифа на двух архитектурах требуется 57*2=114
ядер, в большую сторону это округляются до 128.  Следовательно требуется
32 четырехядерных процессора.  Я беру процессоры класса Nehalem Xeon,
потому что другие процессоры брать нет смысла.  Это получается 16
двухпроцессорных лезвий.  Теперь можно округлить в меньшую сторону.
Сейчас выпускаются корпуса высотой 7U, в которые входит 10 лезвий.
Это примерно то, что нам нужно.

Впрочем, я не специалист по железу.

> Это чуть меньше половины кластера СКИФ 
> Т-60, который считается одним из самых 
> мощных в России и стоил порядка 10 
> миллионов долларов. И потребляет порядка 
> 0.5 мегаватта энергии в час.

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

Посмотрим, сколько это _минимум_ может стоить.  Процессор Xeon E5520
стоит $457, к нему нужно минимум 12G памяти.  12G DDR-III kit стоит $265.
Всего нужно 32 таких комплекта.  Получается 32*(457+265)=$23k на
микросхемы.  Цена всего вместе может быть где-то в районе $50k.
Дорого это или очень дорого?  Я не знаю.  Автомобиль, могущий
производить впечатление на красивых женщин, стоит примерно столько же.

> Без оптимизации или без спонсора, явно - 
> не обойтись ;) Ни у кого нет подруги - 
> дочери нефтяного магната ?
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090520/906f04f9/attachment-0001.bin>


Подробная информация о списке рассылки Devel