Claude Code、Linuxカーネルの長年のメモリ性能ボトルネック解消を支援 Linux生みの親が活用

Linus Torvalds氏は、AnthropicのClaude Codeを使い、Linuxカーネルで長年残っていたページキャッシュのスケーラビリティ上のボトルネックを取り除く実験的なパッチを作成しました。

このパッチシリーズはまだマージされていません。レビュアーからは、すでに競合状態(レースコンディション)が見つかっているほか、メモリ回収に関する懸念も示されています。

Torvalds氏は、自身のリポジトリに「noref-filemap-read-with-llm」というブランチを公開しました。Phoronixは、カーネルがLinux 7.3-rc7タグの公開を待つ中でこのブランチを発見しました。

Claude Code、Linuxカーネルのメモリボトルネック修正を支援

Linuxカーネルum Gitリポジトリで公開されたコミットによると、この8本のパッチシリーズはLinux 7.3-rc6を基盤としています。コミットのタイトルは「mm: read from the page cache without folio references」です。linuxiac

Torvalds氏は、コードやテストプログラム、レビュー、文章の初稿を、自身の指示のもとでLLMコーディングアシスタントが担当したと説明しています。計測は自身のマシンで実施したとも付け加えました。

多数のスレッドが同じキャッシュ済みファイルに対して小さな読み取りを繰り返すと、各読み取りは対象のfolioへの参照を取得し、処理後に解放します。このアトミックな書き込みは単一のキャッシュラインに集中するため、そのラインがCPUコア間を行き来することになります。

Torvalds氏のノートPC(Core i7-8565U)で行った8スレッドのテストでは、コア間のロードHITMのうち99.92%をfolio参照カウントの競合が占めていました。

このパッチはRead-Copy-Update(RCU)を利用します。ページキャッシュから外れたfolioは、RCUのグレースピリオドを経てから初めてアロケータに戻ります。そのため、RCUの読み取り側クリティカルセクション内にいるリーダーは、参照を取得せずにデータをユーザーバッファへ直接コピーできます。zdnet

代償として、解放されたメモリは再利用されるまでしばらく遊休状態になります。2本のパッチは安全弁として、CPUごとにキューイングされたページが1,024を超えた時点で、加速型のグレースピリオドを強制する仕組みを追加しています。Torvalds氏は、この遅延解放を「このシリーズで最も解決が進んでいない部分」と評しました。

Torvalds氏は、実環境での効果は合成ベンチマークが示す数値よりはるかに小さくなると警告しています。マップされていないユーザーページへの読み取りでは追加のフォールトも発生し、16バイトのシングルスレッド読み取りが約4,150サイクルから6,550サイクルに増加しました。thenewstack

その後に公開された10本構成のシリーズ「rcu-free-v3」では、PG_rcu_freeフラグとRCUによる遅延回収が導入されました。これに対しレビュアーは、filemap_read_rcu_batch()に競合状態があると指摘しています。folioの置換に続いてi_sizeが拡張されると、一度も書き込まれていないデータが露出する可能性があります。thenewstack

Torvalds氏は、ファイルサイズをより早い段階で読み取り、folioのチェックを一本化するよう提案しました。同じボトルネックに取り組んできたKiryl Shutsemau氏がこれらの変更を改訂版パッチに取り込み、現在は作業を引き継いでいます。thenewstack

CVEは割り当てられておらず、悪用された脆弱性に言及する情報源もありません。それでも防御側にとって重要なのは、今回の変更がメモリの生存期間と回収に関わる点です。

この領域のバグは、use-after-freeや古いデータの露出など、歴史的にセキュリティ上の影響を伴ってきました。AIが書いたカーネルコードであっても、他のパッチと同様に人間による厳格なレビューが欠かせません。

CyberSecurity Tools

Phoronixは、この取り組みがLinuxカーネル7.4のマージウィンドウを目指す可能性があると伝えていますが、統合の可否はまだ決まっていません。

翻訳元: https://gbhackers.com/claude-code-helps-linux-creator-address-longstanding-kernel-memory-performance-bottleneck/

本記事は gbhackers.com の記事を翻訳・要約したものです。