Линус Торвальдс разработал серию патчей для системы управления памятью в ядре Linux, которые оптимизируют процесс чтения небольших блоков данных из страничного кэша, исключая атомарное изменение счётчика ссылок (refcount) в структуре folio. В сопроводительном коммите указано, что эти изменения, связанные с ними тесты и предварительный текст примечания были созданы AI-ассистентом Claude Code под руководством Торвальдса. Модификация включена в отдельную ветку ядра noref-filemap-read-with-llm, и пока неясно, будет ли она интегрирована в основную ветку или останется внутренним экспериментом.
Тестирование показало значительное улучшение производительности при чтении мелких файлов. В конфигурации с 8 потоками пропускная способность возросла с 9.9-10.4 до 30-33 миллионов операций в секунду, что в три раза превышает исходный показатель. При 4 потоках прирост составил с 8.9-11.6 до 25-26 миллионов операций в секунду (увеличение в два раза). В однопоточном режиме производительность увеличилась с 7.9-8.1 до 8.8-8.9 миллионов операций в секунду. Такой рост эффективности обусловлен тем, что при параллельном обращении к страничному кэшу потоки конкурируют за доступ к кэшу, и большая часть времени (99.92%) тратится не на чтение данных, а на ожидание освобождения счётчика ссылок.
Для обеспечения целостности данных в патче используется альтернативный подход: вместо блокировки или изменения счётчиков ссылок применяется отложенное освобождение памяти с синхронизацией через механизм RCU (Read-Copy-Update). Этот метод гарантирует, что страница памяти не будет освобождена до тех пор, пока читающий поток не завершит копирование данных.















