[devel] Python 2.6: task #16528
Alexey Tourbin
at на altlinux.ru
Пн Дек 7 20:49:10 UTC 2009
On Fri, Nov 27, 2009 at 05:54:34AM +0300, Alexey Tourbin wrote:
> > У нас очень долго выполняется фаза "no need to rebuild", в среднем
> > не менее минуты на пакет. Всё это конечно не планировалось что людишки
> > будут заливать пакеты целыми сотнями. Но есть то что есть -- мы так
> > никуда не уедем.
>
> > Я попробовал запрофилировать почему столько много времени уходит чтобы
> > просто понять что пакет не надо пересобирать от прошлого запуска; там
> > короче говоря причины разные, то есть одного узкого места нету.
>
> Главный фактор почему медленно работала проверка "no need to rebuild" --
> это сама схема проверки: собирается src.rpm пакет и в чрут
> устанавливаются все пакеты BuildReqires. Если содержимое чрута после
> этого совпадает, то пакет можно не пересобирать.
>
> Эта схема теперь модифицирована следующим образом: когда имеется src.rpm
> пакет от предыдущего запуска, можно замкнуть его список BuildRequires и
> получить список пакетов, которые будут установлены. То есть можно
> узнать содержимое чрута без фактической установки пакетов.
>
> Есть ещё два фактора, которые заметно влияют на скорость проверки "no
> need to rebuild".
>
> 1) hsh --init на репозитарии с полным списком файлов.
> Научно установлено, что 'hsh --init' на обычно репозитарии занимает 13
> секунд, а на репозитарии с полным списком файлов -- 20 секунд.
>
> 2) После сборки каждого очередного пакета хешеру нужно перегенерировать
> локальный репозитарий; в том числе прочитать все пакеты и вычислить их
> md5 суммы (потому что md5-кеш пакетов на нодах скорее всего не работает).
>
> Я думаю что в хешере можно вообще не генерировать репозитарий и целиком
> отказаться от genbasedir, а вместо этого в sources.list использовать
> метод доступа "rpm-dir" вместо "rpm" (repo). Тогда при изменении
> каталога rpm-dir apt будет считывать информацию прямо из хедеров
> пакетов, которые там лежат. А это лушче, перечитывать пакеты полностью
> (для вычисления md5-сумм).
В режиме "rpm-dir" хешер действительно работает быстрее, особенно
когда у него жирный локальный репозитарий. См. аттач 14-15.png.
По горизонтальной оси -- номер пакета для сборки, по вертикальной --
время диагностики "no need to rebuild" в секундах. Легенда --
log.14 (genbasedir) и log.15 (rpm-dir) задания 16528.
(Я ещё немного захачил апт, поэтому базовый уровень зелёной линии
ещё дополнительно где-то на 1-2 секунду ниже. А наклон показывает
эффект от rpm-dir.)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : 14-15.png
Тип : image/png
Размер : 10886 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20091207/73340d8a/attachment-0001.png>
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 198 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20091207/73340d8a/attachment-0001.bin>
Подробная информация о списке рассылки Devel