Linux Foundationのページ
出典: Linux Foundation

Linus Torvalds氏が、大規模なファイルキャッシュ競合を抑えるLinuxカーネルの修正案を、初めて大規模言語モデル(LLM)の支援を受けて作成し、開発ブランチに投稿しました。専用の合成ベンチマークでは23倍の性能向上が出た一方、Torvalds氏は実際の負荷では同じ結果にならないとしています。

LLMを使った修正案が開発ブランチに

問題となるのは、多数のCPUが同じファイルを読み込む際に起きる、大規模なキャッシュ競合です。共有ライブラリーやデータベース、Webサーバーを使う場面で発生する可能性があります。

Torvalds氏は2024年初めに解決案の草稿を作り、自身のノートPCで使っていました。その後、問題の解決にLLMを使うことを試し、今回、修正案を開発ブランチに投稿しました。

この問題には過去にも複数の開発者が取り組みましたが、あらゆる状況に対応する解決策には至っていませんでした。

合成ベンチマークで23倍の向上

Torvalds氏が示した23倍という数値は、専用の合成ベンチマークで測定されたものです。同氏は、実際の負荷でこの数値が再現されることはないとの見方を示しました。

合成ベンチマークは特定の処理を測るため、実際の利用環境での性能変化をそのまま表すものではありません。

同氏は実環境での影響がベンチマーク結果より大幅に小さくなると述べています。Tom's Hardwareはサーバーの処理が恩恵を受ける可能性を推測していますが、これは実測結果ではありません。

CPU間のキャッシュ競合が起きる仕組み

複数のCPUが同じデータを読むとき、キャッシュ競合の一因になるのがキャッシュラインの共有です。キャッシュコヒーレンシは、各CPUのキャッシュにあるデータの整合性を保つ仕組みで、整合性は個々のバイトではなくキャッシュライン単位で管理されます。

同じキャッシュラインを複数のスレッドが短い間隔で書き換えると、ラインを保持するCPU間でデータの移動が必要になり、処理の遅れにつながります。この現象は「キャッシュラインのバウンシング」と呼ばれます。

頻繁に読み取られるデータと、頻繁に更新されるデータが同じラインにある場合も、更新によって他のCPUのキャッシュが無効化されることがあります。こうした競合はメモリーの局所性やCPU間のデータ転送に関係し、マルチコアやNUMA構成ではカーネルの拡張性に影響し得ます。

カーネル開発でのAI利用をめぐる姿勢

Torvalds氏は、LLMをコンパイラーやエディターと同じような道具として扱う考えを示しています。パッチ投稿者にAIを使ったかどうかの申告を求めない方針への変更も進んでいます。

同氏は、開発者が自分の作業を理解し、最善を尽くすことを重視しています。過去には、カーネルチームが使う自動コードレビューが人手では見逃される基本的なミスを見つけると述べ、AI活用に肯定的な立場を示しました。

一方、AIエージェントがよくあるセキュリティ上の欠陥を見つける能力を高めたことで、Linuxのセキュリティメーリングリストへの報告が増え、運営が難しくなったとされています。