Linus Torvalds は、Claude コードを使用して Linux カーネルを最適化します。マルチスレッドのファイル読み取りパフォーマンスが大幅に向上することが期待されます。

📅 2026-10-12

要約:

Linux カーネルの創設者である Linus Torvalds は、人工知能プログラミング ツール Claude Code を利用して Linux カーネルのパフォーマンス最適化ソリューションを開発しています。

この作業は、Linux カーネルのメモリ管理メカニズムにおけるパフォーマンスのボトルネックをターゲットにしています。目的は、複数のスレッドが同じファイルを同時に読み取るときにメモリ ページの参照カウントによって引き起こされる競合を減らし、それによってファイルの読み取り効率を向上させることです。

Torvalds 氏は、コードの作成を支援するために AI を使用しただけでなく、このツールを使用してテスト プログラムを作成し、コード レビューを実施し、関連するパッチ ノートの草案を作成しました。

image.webp

Linux 7.3-rc7 のリリースを待っている間、Torvalds は最近 Linux カーネル Git コード リポジトリを更新し、異常な新しいブランチがリポジトリに出現していることを発見しました。メイン ブランチを保守するという彼の通常のやり方とは異なり、「noref-filemap-read-with-llm」という名前のこのブランチは、一連のカーネル改善パッチの開発に専念しています。ブランチ名の LLM からわかるように、この作業は大規模言語モデル支援プログラミングに関連しています。

トーバルズ氏は後に、関連するパッチノートで、この作業が彼の指導とクロード・コードの支援の下で完了したことを明らかにしました。 AI はコードの実装に参加しただけでなく、テスト プログラムの作成、コード レビューの実施、パッチ シリーズ ドキュメントの初期バージョンの草案作成も支援しました。関連するパフォーマンス測定は、Torvalds 自身のコンピューターで行われました。

この最適化は主に、Linux カーネル ファイル読み取りパスの特定の問題を対象としています。複数のスレッドが同じファイルから小さなデータ チャンクを同時に読み取ると、ファイル ページ キャッシュ内のメモリ ページの参照カウントをめぐって競合する可能性があり、関連するデータ構造に関してスレッドが互いに競合するため、読み取りパフォーマンスが制限されます。

この問題を理解するには、まず Linux カーネルがファイルの読み取りをどのように処理するかを理解する必要があります。

Linux は、ページ キャッシュ (Page Cache) を使用して、ストレージ デバイスから読み取られたファイル データを保存します。プログラムがメモリにキャッシュされたファイルの内容に再度アクセスすると、カーネルは多くの場合、そのたびにディスクや他のストレージ デバイスにアクセスすることなく、メモリから直接データを提供できます。したがって、ページ キャッシュは、Linux にとってファイル アクセスの効率を向上させる重要なメカニズムです。

image-1.webp

これらのキャッシュされたデータを管理するために、カーネルは関連するメモリ オブジェクトのライフ サイクルを追跡する必要があります。従来の実装における参照カウント メカニズムは、カーネルがメモリ オブジェクトがまだ使用されているかどうか、また関連リソースをいつ安全に解放できるかを判断するのに役立ちます。

ただし、多数のスレッドが同じファイルに頻繁にアクセスする場合、読み取ったデータがすでにメモリ内にある場合でも、関連する参照カウント操作により追加の同期オーバーヘッドが発生する可能性があります。マルチコア プロセッサ システムでは、複数のスレッドが同じ共有カウント値を継続的に更新すると、キャッシュ コヒーレンス トラフィックの増加やプロセッサ コアの相互待機などの問題が発生する可能性があります。

シングルスレッドまたは同時実行性の低いシナリオでは、このオーバーヘッドは目立たない可能性があります。しかし、同時実行性の高いサーバー、データベース、ビルド システム、および多数のファイル読み取りリクエストを同時に処理する必要があるその他のワークロードでは、繰り返し行われる同期操作が徐々にパフォーマンスのボトルネックになる可能性があります。

Torvalds が開発している一連のパッチは、不必要な参照カウント操作を削減するように設計されています。中心的なアイデアは、ファイル読み取りパスを調整して、関連するアクセスごとに従来の Folio 参照管理操作を実行することなく、特定の条件下でカーネルがページ キャッシュからデータを直接読み取ることができるようにすることです。

ここでのフォリオは、連続したメモリ ページまたは関連するメモリ ページのセットを管理するために Linux カーネルによって使用される基本的な抽象概念の 1 つです。近年、Linux カーネルは、メモリ管理タスクをより効率的に処理するために、古い単一ページ管理方法の一部を置き換えるフォリオ メカニズムを徐々に使用してきました。したがって、フォリオ参照カウントによって生じるオーバーヘッドをどのように削減するかが、カーネルのパフォーマンスの最適化において重要な課題となっています。

技術的な観点から見ると、このタイプの最適化は単に参照カウントを削除するだけではありません。カーネルは、メモリ オブジェクトがアクセス中に早期に解放されないようにする必要があり、同期操作を減らすことによってデータ破損やメモリの安全性の問題が発生しないようにする必要があります。したがって、パッチは正確性、同時アクセスの安全性、パフォーマンスのバランスを取る必要があります。

この最適化により、ターゲット ワークロード下でパフォーマンスが大幅に変化しました。このテストは主に、複数のスレッドが同じファイルから小さなデータを同時に読み取るシナリオを目的としています。これは、パッチが解決しようとしている競合問題に相当します。

ただし、これらの結果は特定のテスト条件下でのパフォーマンスとして理解されるべきであり、Linux 上のすべてのファイル操作が同じ改善を受けるということではありません。実際の利点は、アプリケーションのアクセス パターン、スレッド数、ファイル サイズ、ストレージ デバイス、メモリ構成、およびその他のシステム要因によって異なります。同じ競合の問題が関与しないワークロードでは、最適化の効果が限定される場合があります。

現在、これらのパッチは依然として Torvalds の個人的な Git ブランチに保存されており、Linux メインライン カーネルに正式に組み込まれたと結論付けることはできません。将来的に統合されるのか、最終的にはどのような実装方法が採用されるのか、さらなる注目が必要だ。

現在の開発ペースによると、このパッチ シリーズは次の Linux 7.4 マージ期間中にさらなる議論またはレビュー段階に入る可能性がありますが、最終的にマージできるかどうかは依然としてコード レビュー、テスト結果、およびメンテナの判断に依存します。

トーバルズ氏がクロード コードを使用したのは、人工知能を使用して Linux 関連の開発作業を処理する最初の試みではないことは注目に値します。

以前、彼は AI 支援カーネル デバッグの使用について話し、Linux カーネルの外で Google Antigravity などの AI プログラミング ツールを試しました。 Torvalds 氏にとって、AI は独立した意思決定者として開発者に代わるものではなく、明確な目標と人間の監督のもとで使用できる開発ツールです。

今年以来、人工知能プログラミング ツールが徐々にオープンソース ソフトウェア開発プロセスに参入しています。コードの分析、バグの特定、テストの作成、初期パッチの生成に大規模な言語モデルを活用する開発者が増えています。 Linux カーネル コミュニティでも、AI 支援コードやバグ レポートの数が増加しています。

この傾向はチャンスと課題の両方をもたらします。一方で、AI は、経験豊富な開発者が複雑なコード パスをより迅速に探索し、最適化のアイデアを思いつき、反復的なコードの作成に必要な時間を短縮するのに役立ちます。一方で、自動生成されるパッチやバグレポートの数も多く、メンテナーのレビュー負担も増大し、提出されたものによっては品質が低い、重複して提出される、実際の価値が欠如しているなどの問題が発生する可能性があります。

トーバルズ氏は以前、AI は有用なツールであると信じていると公に述べていますが、カーネル コミュニティは、AI によって生成されたコンテンツの急速な増加によって引き起こされる仕事のプレッシャーに対処する必要があります。彼は、AI を使用しているという理由だけでコードを拒否することを主張していませんが、最終的なコードの品質、正確さ、実際の効果により多くの注意を払っています。

今回、Claude Code が参加したカーネル最適化プロジェクトは、AI 支援開発のより具体的な適用方法を反映しています。カーネルの内部メカニズムに精通した開発者が問題を特定し、最適化の方向性を提案し、実装を監督し、テストとコード レビューを通じて結果を検証します。

AI のみに依存してソフトウェア プロジェクト全体を自動的に生成するのとは異なり、Linux カーネルの開発には、複雑な同時実行メカニズム、メモリの安全性要件、ハードウェアの動作が含まれます。一見単純な変更は、多数のアプリケーションやさまざまなハードウェア プラットフォームに影響を与える可能性があります。したがって、たとえ AI がコード生成に役立つとしても、開発者は AI がどのように機能するかを理解し、最終的な実装に責任を負う必要があります。

このパッチのセットが最終的に審査を通過し、Linux メインラインに導入されると、基盤となるシステム ソフトウェアの最適化に AI 支援開発が参加する新たな事例となるでしょう。その価値は、特定のシナリオで得られるパフォーマンスの向上だけでなく、経験豊富なエンジニアが複雑なシステムを分析および改善する際に大規模な言語モデルがどのように役立つかを実証することにもあります。

AI プログラミング ツールが開発を続けるにつれて、将来的には、Linux カーネルや他の大規模なオープンソース プロジェクトでも同様の作業がさらに登場する可能性があります。ただし、これらの成果が実際に実装できるかどうかを決定するのは、依然として厳密な技術検証、コミュニティのレビュー、およびシステムの安定性に対する長期的な要件です。

関連タグ

関連記事

コメント

0/500
Captcha (click to refresh)
コメントなし