Ядро Linux 7.4 научится открывать файлы для чтения почти на 40% быстрее
В грядущее ядро Linux 7.4 готовится войти патч, который при всей своей простоте способен ощутимо ускорить открытие файлов для чтения. Работу над ним вёл разработчик открытого ПО Матеуш Гузик (Mateusz Guzik), и заняла она более двух лет — за это время патч прошёл пять редакций.
Что именно исправили
Оптимизация касается функции do_open() в подсистеме виртуальной файловой системы (VFS), которая участвует в открытии файлов при разборе пути. Как объяснил сам Гузик, в текущем коде запись каталога — «dentry», отвечающая за сопоставление компонента пути с inode на диске, — обрабатывается избыточно. При открытии файла ссылка на конечную dentry берётся сначала в __legitimize_path(), затем ещё раз в do_dentry_open(), а исходная ссылка сбрасывается в terminate_walk().
Получаются два лишних изменения, без которых можно обойтись: do_dentry_open() вполне способна использовать уже удерживаемую ссылку, а не запрашивать новую. Именно это дублирование и устранил патч.
Насколько это ускоряет работу
Эффект от такой, казалось бы, мелочи оказался заметным. По результатам тестирования на виртуальной машине с 20 ядрами с помощью бенчмарка will-it-scale, открывавшего один и тот же файл в режиме только для чтения, число операций в секунду выросло на 39%. Весь патч при этом умещается примерно в три десятка строк кода.
Автор новости Phoronix Майкл Ларабель отмечает, что даже немного удивительно, как столь очевидная возможность для улучшения так долго оставалась незамеченной в ядре.
Патч уже помещён в ветку vfs-7.4.lookup репозитория VFS.git и помечен как материал для версии 7.4. С учётом того, что он попал в официальную ветку подсистемы VFS, оптимизацию, вероятно, отправят в окно слияния грядущего ядра Linux 7.4. Ожидается, что улучшение попадёт в стабильное ядро до конца 2026 года.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.