[devel] печальные последствия перехода на rpm-4.13

Gleb Fotengauer-Malinovskiy glebfm на altlinux.org
Ср Янв 25 20:42:43 MSK 2017


Hi,

On Wed, Jan 25, 2017 at 07:48:12AM +0300, Alexey Tourbin wrote:
> Уважаемые мужчины!
> 
> Вследствие перехода на rpm-4.13 в вашем национальном дистрибутиве
> наблюдается многократное замедление работы.
> 
> Вот как сканировал пакеты старый rpm:
[...]
> Предварительный осмотр показывает, что rpm теперь вычисляет какие-то
> хитрые SHA1-суммы.

Никакой хитрости, оно сравнивает SHA1HEADER с реальностью.  Мне не кажется
это совсем плохой идеей, а для чтения тысяч файлов всегда можно сделать
%__vsflags = %__vsflags|_RPMVSF_NODIGESTS, например 0xf0f00.

> Но это полбеды, а настоящий масштаб бедствия становится понятен, если
> посмотреть, что происходит с виртуальной памятью.
[...]

Спасибо за исследование!

> У пакета ffmpeg маленький заголовок, потому что в нем находится только
> программа ffmpeg (плюс еще ffplay и ffprobe) и несколько man-страниц.
> Старому rpm нужно было 2 страницы виртуальной памяти, новому - 12.
> 
> Всё это конечно же происходит из-за readahead.  Я когда-то делал патч
> для отключения readahead во время загрузки заголовка:
> http://git.altlinux.org/people/at/packages/rpm.git?a=commitdiff;h=66b17f5f
> На новый rpm его не портировали.

Да, портировалось необходимое, а такие вещи к сожалению остались
до появления необходимости. :)

Со спортированным патчем (см task #177147) на rpmquery
-p ~/chromium-55.0.2883.75-alt1.x86_64.rpm получается:

-total cached size: 245,760
+total cached size: 77,824

Раньше были те же 77,824.

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

В контексте сборочницы этот патч очень важен когда кэша нет.  Мы даже с
ним теряем минут, кажется, 40 на создание кэша.

> Теоретически этом может
> привести к тому, что для загрузки заголовка может потребоваться
> несколько physical reads.  Но на практике их не требуется (ср. total
> time у /tmp/rpmq и rpmquery) - вероятно, выручает встроенный кеш
> внутри самого жесткого диска.
>
> * * *
> 
> В связи со всем этим безобразием более актуально встает вопрос о
> кешировании заголовков.  Пожалуй, напишу об этом отдельным письмом.

Если речь в первую очередь о сборочнице, то, возможно, стоит задуматься о
патчинге apt-овых индексов (вместо генерации их с нуля).  Остальные
клиенты gb-sh-rpmhdrcache вполне могли бы патчить то, что у них есть -- и
генератор useful-files и генератор contents_index.
Понятно, что единственной загвоздкой в патчинге индексов являются именно
useful-files.

-- 
glebfm
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 801 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20170125/fb91caea/attachment.bin>


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