[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