Создатель Linux Линус Торвальдс поручил ИИ-ассистенту Claude Code решить проблему, над которой разработчики ядра бились два года. В тесте чтение ускорилось в 23 раза, но проверка нашла в коде ошибку.Автор Hi-Tech Mail

Линус Торвальдс написал с помощью ИИ-ассистента Claude Code от Anthropic набор исправлений для ядра Linux. Он рассказал об этом 13 октября в рассылке разработчиков ядра. В синтетическом тесте исправления ускорили чтение файлов из кеша почти в 23 раза. Однако другие программисты при проверке нашли в коде ошибку, и доработкой занялся другой разработчик.
Проблема касалась страничного кеша, то есть области памяти, где ядро хранит недавно прочитанные данные файлов. Когда много потоков одновременно читают один файл, каждый из них увеличивает и уменьшает общий счетчик ссылок на один и тот же блок памяти. Ядра процессора постоянно перебрасывают этот счетчик друг другу и тратят на это почти все время. На ноутбуке Торвальдса с Intel Core i7-8565U работа со счетчиком давала 99,92% таких перебросок. Разработчик ядра Мэтью Уилкокс обратил внимание на проблему еще в 2024 году. С тех пор предлагали несколько решений, но у каждого были недостатки. Торвальдс признался, что около полутора лет сам пользовался экспериментальным вариантом, который в итоге оказался ошибочным.
«Я решил, что попробую действительно решить эту проблему с помощью языковой модели», — написал Торвальдс. По его словам, Claude Code под его руководством подготовил код патчей, тестовые программы, разбор проблем и черновик документации. Производительность Торвальдс замерял сам. Описания изменений, которые составил ИИ, вышли «немного многословнее», чем он написал бы сам, но, как он считает, «может, так даже лучше». Решение убирает работу со счетчиком из основного пути чтения. Память освобождается с задержкой — только после того, как все читающие потоки закончат работу.
На 64-поточном AMD Ryzen Threadripper скорость выросла с 13,3 млн до 304 млн операций чтения в секунду. Число тактов процессора на одну операцию сократилось примерно с 20 тыс. до 735. На ноутбуке прирост оказался скромнее: с 10 млн до 33 млн операций. Торвальдс сразу предупредил, что это «ненастоящая цифра в том смысле, что ни одна реальная нагрузка ее никогда не увидит». В тесте потоки по кругу читают один и тот же небольшой фрагмент данных.
При проверке Уилкокс поставил под сомнение то, как решение управляет памятью. Кирилл Шутемов нашел так называемое состояние гонки — ошибку, которая возникает при неудачном совпадении параллельных операций. Если один поток читал данные, а другой в этот момент заменял блок памяти и увеличивал размер файла, первый поток мог получить устаревшее содержимое, в том числе данные, которые никогда не записывались в этот участок файла. Торвальдс предложил исправление и попросил Шутемова взять работу над патчами на себя.
19 октября Шутемов опубликовал переработанную серию из 18 патчей. На файловой системе ext4 при 64 потоках скорость выросла примерно с 15 млн до 70 млн операций чтения в секунду. На tmpfs, файловой системе в оперативной памяти, она выросла с 1,6 млн до 71 млн. Изменения пока остаются предложением для обсуждения и в основную ветку ядра не вошли.
Ранее мы рассказывали, что в Claude Code появился виджет, который пересчитывает токены в гречку и пельмени.
Получайте свежие новости в сфере искусственного интеллекта в нашем телеграм-канале >>