От ИИ-черновика к рабочему патчу
На прошлой неделе Линус Торвальдс продемонстрировал, как использование ИИ-инструмента Claude Code позволяет создавать серьезные улучшения для ядра Linux. Новый патч, предложенный инженером Meta Кириллом Шутсеманом (Kiryl Shutsemau), берет за основу этот ИИ-код и решает конкретную проблему производительности: «шум» от управления ссылками (refcount) на объекты folio при чтении из кэша страниц.
Суть проблемы заключается в том, что при одновременном чтении одного файла множеством CPU-потоков, каждый поток берет и тут же сбрасывает ссылку на один и тот же folio. Это вызывает постоянные колебания счетчика ссылок (refcount bounces) между ядрами, что создает узкое место в производительности. Новый подход позволяет функциям filemap_read() и shmem копировать данные из кэша страниц без взятия ссылки, освобождая folio только после завершения периода RCU (Read-Copy-Update).
Результаты тестирования: AMD Threadripper и 64 потока
Кирилл протестировал свои изменения на процессоре AMD Ryzen Threadripper с использованием 64 потоков. Тестирование проводилось на файловых системах EXT4, TMPFS, XFS, а также на сыром блочном устройстве. Особое внимание уделялось работе как с включенными, так и с отключенными митигациями безопасности CPU.
| Параметр | Значение / Описание |
|---|---|
| Платформа тестирования | AMD Ryzen Threadripper |
| Количество потоков | 64 |
| Файловые системы | EXT4, TMPFS, XFS, Raw Block Device |
| Ключевое изменение | Чтение из page cache без взятия refcount на folio |
| Статус патча | Request for Comments (RFC), ожидание мейнлайна |
Почему это важно для Linux-сообщества
Результаты тестов описываются как «фантастические» (fabulous improvement). Оптимизация критически важна для рабочих нагрузок, характеризующихся множеством мелких чтений одного файла из разных потоков — типичный сценарий для высоконагруженных серверных приложений и баз данных. Устранение накладных расходов на синхронизацию счетчиков ссылок между 64 ядрами позволяет значительно снизить задержки и повысить пропускную способность.
Дальнейшие шаги
На данный момент патчи находятся в стадии Request for Comments (RFC) на списке рассылки Linux Kernel Mailing List. Некоторые архитектурные вопросы еще требуют обсуждения, но сообщество настроено оптимистично. Ожидается, что после доработки дизайн будет согласован, и оптимизация попадет в основное дерево ядра Linux в ближайшем будущем.
Источник: Phoronix ↗
