В конце октября 2024 года разработчик Джош Пуамбёф (Josh Poimboeuf) из компании Red Hat опубликовал 21-строчный патч для ядра Linux, ускоряющий прохождение теста per_thread_ops на 2.6%, оценивающего число операций, которые могут быть выполнены в одном потоке.
В патче используется маскирование указателей для снижения числа медленных вызовов barrier_nospec() в 64-битной функции copy_from_user(), применяемой для копирования данных в ядро из пространства пользователя.
Линус Торвальдс перенёс данную оптимизацию в состав Linux 6.12-rc6.
«Barrior_nospec() в 64-битной функции copy_from_user() работает медленно. Вместо этого используйте pointer masking, чтобы заставить user pointer установить все единицы для недопустимого адреса. Kernel test robot сообщает об улучшении на 2,6% в тесте per_thread_ops», — уточнил Торвальдс.
Ранее вышел патч для новой версии ядра Linux 6.13 со значительной оптимизацией реализации алгоритма нахождения контрольной суммы CRC32C. Исходный код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт). При выключенной защите retpoline от атак класса Spectre прирост производительности при использовании новой реализации алгоритма CRC32C достигает 11.8% на процессорах AMD Zen 2, 6.4% — Intel Emerald Rapids и 4.8% Intel Haswell. При включении retpoline прирост производительности более заметен и достигает 66.8% на системах с процессорами Intel Emerald Rapids, 35.0% — Intel Haswell и 29.5% — AMD Zen 2.
Источник: habr.com