概要
Linuxカーネルの創始者Linus Torvalds氏が、AIコーディングエージェント「Claude Code」と共同でページキャッシュの読み取り処理を改修したブランチ「noref-filemap-read-with-llm」を自身のリポジトリに公開した。計8本のパッチから成るこの一連の変更は、複数スレッドが同一ファイルへ小規模な読み取りを行う際のキャッシュライン競合を解消するもので、Core i7-8565U搭載ノートPC(4コア8スレッド、CPU脆弱性対策は無効化)での検証では、8スレッド・単一ファイルへの読み取りスループットが毎秒990万〜1040万回から毎秒3000万〜3300万回へと、約3倍に向上したという。この課題は2024年にMatthew Wilcox氏が顧客ワークロードから発見していたもので、長年の懸案だった。
技術的な詳細
従来の実装では、読み取り1回ごとにfolio(ページキャッシュの管理単位)へのアトミックな参照カウントを取得・解放しており、これが複数のプロセッサコア間でキャッシュラインをバウンスさせ、競合のボトルネックとなっていた。新しいアプローチは、読み取り処理における参照カウントの取得自体を不要にし、代わりにRCU(Read-Copy-Update)の猶予期間を用いてページの解放を遅延させることで、バウンスバッファを介さずページからユーザーバッファへ直接コピーできるようにした。あるCPUが解放待ちのページを1,024枚超えてキューイングした場合には、ワーカーが強制的に猶予期間を早めるという安全弁も組み込まれている。
ベンチマーク結果では、1読み取りあたりのカーネルサイクル数が約2,950から約725へ減少し、コア間の競合を示すload HITMs(ロード命令のヒットメトリクス)は30,538件から101件へと大幅に低下した。シングルスレッドでも452〜454サイクルから408〜409サイクルへ約1割改善している。一方で、メモリ解放の遅延によるオーバーヘッドも存在し、マップされていないユーザーページへのシングルスレッド16バイト読み取りでは約4,150サイクルから6,550サイクルへと悪化する回帰も確認された。また6本のパッチまでの段階ではVMストレステストで4コアおよび8コア構成時にOOM Killerが作動する問題があったが、全パッチ適用後には解消したという。
Claude Codeが担った役割
Torvalds氏によれば、パッチのコード自体、テストプログラム、未解決の問題点リストにつながるレビュー、そしてカバーレターの初稿は、いずれもTorvalds氏の指示の下でClaude Codeが作成したものだという。ベンチマークの実施と最終的な調整はTorvalds氏自身が担当した。同氏は本シリーズの中でも「最も解決しきれていない部分」があると認めており、設計上の判断には依然として不確実性が残るとしている。この件はPhoronixのMichael Larabel氏がLinux 7.3-rc7のリリース作業中に発見し、報じたことで広く知られるようになった。これまでもAIはカーネルのデバッグ支援などで用いられてきたが、Torvalds氏自身のツリーにあるメモリ管理関連のパッチシリーズでAIエージェントの貢献が明示的にクレジットされるのは踏み込んだ事例といえる。
今後の見通し
このパッチ群はまだLinuxカーネル本体にはマージされておらず、メモリ管理担当のメンテナナーによるレビューと承認を経る必要がある。検証は1台のノートPCに限られており、より多くのコアを持つマシンやマルチソケット構成のサーバーでは、さらに大きな性能向上が得られる可能性があるとTorvalds氏は見ているが、現時点ではそうした環境でのテストは行われていない。今後のレビュー過程で、回帰が見られた経路の扱いや安全弁の閾値設計などが議論の焦点となりそうだ。