В тестингах ROSA 2016.1 RPM 5, наученный упаковывать .rpm и .src.rpm, используя многопоточное сжатие xz.
Сжатие .src.rpm переведено с gzip на xz по умолчанию.
Сжатием .rpm был xz, он и остался, но стал многопоточным по умолчанию.
Пример проверки использованного в пакете сжатия:
# rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' rpm-5.4.10-82.src.rpm
xz
Настройка многопоточного сжатия производится записыванием параметров в файл /etc/rpm/macros
, которые переопределят параметры по умолчанию из файла /usr/lib/rpm/macros.d/mandriva
Новая стандартная конфигурация в /usr/lib/rpm/macros.d/mandriva
такая:
%_binary_payload w6T.xzdio
%_source_payload w2T.xzdio
%_binary_payload
— настройка сжатия .src.rpm
%_source_payload
— настройка сжатия .rpm
Примеры:
%_binary_payload w6T2.xzdio
— сжимать .rpm с помощью XZ на уровне упаковки 6 в 2+1=3 потока
%_binary_payload w9T0.xzdio
— сжимать .rpm с помощью XZ на уровне упаковки 9 в 0+1=1 поток
%_binary_payload w6T.xzdio
— сжимать .rpm с помощью XZ на уровне упаковки 6 в максимальное количество потоков по числу ядер процессора.
Про уровни упаковки см. в man xz.
.src.rpm решили сжимать xz на уровне 2 вместо стандартного 6, т.к. идет пересжатие уже сжатых тарболлов, и 2 оказалось оптимальнее по скорости и потреблению памяти.
(чтобы удостовериться, что именно n+1, см. код: https://abf.io/import/rpm/blob/rosa2016.1/rpm-5.4.10-Multithreaded-XZ.patch#lc-55 )
https://bugzilla.rosalinux.ru/show_bug.cgi?id=9608
Патчи, добавшие эти изменения:
* https://abf.io/import/rpm/blob/rosa2016.1/rpm-5.4.10-Multithreaded-XZ.patch
* https://abf.io/import/rpm/blob/rosa2016.1/rpm-5.4.10-Use-multithreaded-XZ-by-default-for-both-binary-and-.patch
* https://abf.io/import/rpm/blob/rosa2016.1/rpm-5.4.10-multithreaded-xz-memlimit.patch
Сборки нового RPM для тех, кто не пользуется тестовыми репозиториями rosa2016.1:
https://abf.io/build_lists/2956123
https://abf.io/build_lists/2956124
В качестве бенчмарка по упаковке нескольких гигабайтов в RPM предлагается использовать https://gitlab.com/nixtux-packaging/appimage2pkg .
[…] From RPM 4 to RPM 5, multi-threaded xz compression is ported; by default, multi-threaded xz compression is enabled with standard compression 6 for RPM packaging and compression 2 for SRPM packaging ( more ) […]