В последние время Торвальдс редко находит время для самостоятельной работы над новыми функциями, так как занят координацией работы других сопровождающих ядро и участием в обсуждениях на рассылке. Однако, начиная окно слияния для Linux 6.11, он внес в ядро некоторые собственные улучшения.
Первые слияния для Linux 6.11 включали ветки Торвальдса: runtime-constants, word-at-a-time, arm64-uaccess и link_path_walk.
📣 Линус Торвальдс пояснил новый код для runtime constants следующим образом:
Эта ветка возникла после анализа нагрузки файловой системы на моем
128-ядерном
сервере Altra arm64, где основной нагрузкой являются обход путей и копирование данных пользователя, особенно strncpy_from_user() для получения путей из пользовательского пространства.
Это специализированная модель
"альтернативные инструкций",
в которой указатель на хэш dentry и количество хэшей остаются постоянными на протяжении всего времени работы ядра, но выделение памяти происходит на ранних этапах загрузки ядра. Чтобы избежать загрузки указателя и динамического сдвига, мы напрямую заменяем константы в инструкциях.
Мы не можем применять универсальную инфраструктуру альтернативных инструкций, так как различные архитектуры реализуют это по-разному. Поэтому проще использовать специализированные помощники, оставляя в качестве резервного варианта
общую модель,
которая использует переменные для архитектур, не поддерживающих инфраструктуру патчей констант во время выполнения.
Эти патчи обсуждались в списке рассылки ядра в последние несколько недели. Улучшения стали результатом профилирования на рабочей станции Ampere Altra Max с 128 ядрами ARM, где были выявлены недостатки в коде ядра ARM64.
👌 Решение компании Ampere Computing предоставить Торвальдсу систему Ampere Altra Max явно оправдывает себя, способствуя оптимизации ядра Linux для ARM64.