В Fedora 42 планируют поставлять оптимизированные варианты исполняемых файлов

В выпуске Fedora 42, намеченный на конец апреля, предложено разрешить сопровождающим включать в пакеты дополнительные варианты исполняемых файлов, собранные с включением оптимизаций для микроархитектур x86-64-v2, x86-64-v3 и x86-64-v4. Отмечается, что Fedora продолжает собирать пакеты для архитектуры x86-64-v1, в то время как CentOS использует при сборке архитектуру x86-64-v2, а RHEL 10 – x86-64-v3. В большинстве случаев прирост производительности при сборке для подобных архитектур не превышает 10%, но в отдельных ситуациях приводит к заметному повышению производительности (до 120%). Предложение пока не утверждено комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora.

В Fedora уже допускается поставка дополнительных библиотек, оптимизированных для расширенных версий архитектуры x86_64, и подобную возможность теперь планируют распространить на исполняемые файлы. Загрузка оптимизированных реализаций библиотек осуществляется компоновщиком (dynamic linker), который проверяет наличие дополнительных вариантов в подкаталогах glibc-hwcaps, размещаемых в областях ФС, просматриваемых при поиске библиотек (например, /usr/lib64/glibc-hwcaps/x86-64-v2).

В случае исполняемых файлов предлагается использовать прослойку hwcaps-loader, которая будет выбирать и запускать вариант исполняемого файла, соответствующий возможностям текущей системы. Для пакетов, поставляющих несколько вариантов исполняемых файлов данную прослойку предлагается выставлять через символическую ссылку. Решение о добавлении дополнительно оптимизированных исполняемых файлов будут принимать сопровождающие, в зависимости от результатов тестирования производительности конкретных пакетов.

Версии x86-64-v* определяют неофициальный способ идентификации срезов состояния микроархитектуры, охватывающих определённые наборы расширений:

  • x86-64-v2 охватывает расширения SSE3, SSE4_2, SSSE3, POPCNT, LAHF-SAHF и CMPXCHG16B.
  • x86-64-v3 – AVX, AVX2, BMI2, FMA, LZCNT, MOVBE и SXSAVE.
  • x86-64-v4 – AVX512F, AVX512BW, AVX512CD, AVX512DQ и AVX512VL.

Дополнительно можно отметить предложение по унификации обновления загрузчиков grub и shim в атомарных и обычных вариантах Fedora. Вместо обновления содержимого каталогов /boot и /boot/efi через вызов скрипта во время установки rpm-пакета, для обновления загрузчика предлагается использовать инструментарий bootupd, который уже применяется в атомарно обновляемых вариантах Fedora. В rpm-пакетах с загрузчиками содержимое предлагается устанавливать не напрямую в
каталоги /boot и /boot/efi, а в отдельный каталог внутри раздела /usr, после чего синхронизировать с ним содержимое /boot и /boot/efi. Подобный подход даст возможность реализовать запасной вариант загрузки, который можно использовать для отката к старой конфигурации в случае проблем после обновления загрузчика.

Release. Ссылка here.