Linux 7.2リリース。キャッシュを理解するCPUスケジューラが到着

Linux 7.2が予定通り公開された。目玉はCPUスケジューラがキャッシュ構造を理解するCache Aware Scheduling。リリース直前まで膨らみ続けたパッチの波と、壊れたコードを差し戻す判断の両方が、いまのカーネル開発を映している。

Linux 7.2リリース。キャッシュを理解するCPUスケジューラが到着

Linux 7.2が予定通り公開された。目玉はCPUスケジューラがキャッシュ構造を理解するCache Aware Scheduling。リリース直前まで膨らみ続けたパッチの波と、壊れたコードを差し戻す判断の両方が、いまのカーネル開発を映している。


Cache Aware Schedulingが本線に入った

Linux 7.2の新機能で、最も多くのユーザーに影響するのはCache Aware Scheduling(CAS、キャッシュ認識スケジューリング)だ。

これまでのLinuxのタスクスケジューラは、CPUコア間で負荷を分散する際に、キャッシュの物理的な構造をほとんど考慮していなかった。コアAで動いていたタスクがコアBに移されると、コアAのキャッシュに残っていたデータは使えなくなる。メインメモリから読み直す分だけ遅くなる。これがキャッシュミスであり、マルチコアCPUでは日常的に発生している。

CASは、データを共有するタスク同士を、ラストレベルキャッシュ(ほとんどの場合L3)を共有するコア群にまとめて配置する。キャッシュにあるデータを再利用できる確率が上がり、メインメモリへのアクセスが減る。

Intel主導で1年以上かけて開発され、AMDのEPYC Genoa(ジェノア)ではChaCha20暗号処理のスループットが44%向上したベンチマーク結果が報告されている。IntelのSapphire Rapids(サファイアラピッズ)でも、レイテンシ重視のワークロードで最大30%の高速化が確認されている。サーバーだけの話ではない。複数のアプリケーションを同時に動かすデスクトップ環境でも、体感できる違いが出る可能性がある。

Windowsは2015年(Windows 10)からキャッシュ認識スケジューリングを実装している。Linuxがこの領域で追いついた形だ。

リリース直前の外科手術

Linux 7.2のリリースサイクルを振り返ると、後半は慌ただしかった。

rc6が「ここ数年で最大のrc6」と報告され、rc7も400件超の修正を含む大型リリース候補になった。安定版リリースの直前には、GPUスケジューラの変更も差し戻されている。

DRM(Direct Rendering Manager)のスケジューリング方式をFIFO(先入れ先出し)から「FAIR」(公平)に切り替える変更が入っていたが、Radeon RX 9070 XTでフリーズやフレームレート低下が発生し、リリース直前に全面リバートされた。修正パッチはすでに投稿されており、Linux 7.3での再導入が見込まれている。

トーバルズ氏はリリースメールで、この判断についてこう述べている

見栄えは良くないかもしれないが、「ああ、あのコードは準備不足で問題を起こした」という状況に対処するには正しいやり方だ。彼らはまた後で挑戦するだろう

「遅らせたら永遠にリリースできない」

Linux 7.2のリリース最終週は、またしても予想以上のパッチ量だった。

トーバルズ氏はメーリングリストで率直に書いた。「リリース最終週がもう一度、望んでいたより大きくなった」。そして、この状況を「new normal」(新しい日常)と呼び、「これを理由にリリースを遅らせたら、おそらく永遠にリリースできない」と続けた。

この「new normal」は、AIツールがカーネルコードをレビューし、人が見落としていたバグを次々に掘り起こしている状況を指す。rc7の時点でトーバルズ氏は、修正の多くが「各種AIツールによるレビューに起因している」と名指ししていた。OMG! Ubuntuが報じたLWNの分析では、7.2のコミットの約5%にassisted-byタグが付いている。AIの関与を示すこのタグは、Linux 7.0で導入されたcoding-assistants.rstの規定に基づくものだ。

パッチの波が止まらない中でも、トーバルズ氏はリリースを遅らせなかった。壊れたコードはリバートで対処し、完璧を待たずに出す。時間ベースのリリースサイクルが定着して20年以上。その規律と、no-regressions(既存の動作を壊さない)の原則が、AIの時代にも揺らいでいない。

消えたもの、加わったもの

Linux 7.2では、AppleTalk(Appleが1980年代に開発したネットワークプロトコル)と、ISA・PCMCIAバスのARCnetドライバのサポートが終了した。i486 CPUエミュレーションの1万3000行超のコードも削除されている。1982年発売のHerculesグラフィックカードドライバも姿を消した。使っている人がいたら、Linux 7.1以前を起動すればいい。

新しいハードウェアへの対応も進んでいる。Apple M3チップの初期サポートが入り、M3搭載MacでLinuxを動かす道が開けた。AMDのGPUドライバではHDMI 2.1 FRL(Fixed Rate Link)対応が加わり、IntelのArc B390ではグラフィックス性能が改善された。次世代チップ(AMD Zen 6、Intel、NVIDIA)の準備も含まれている。

Linux 7.2 主要変更
変更内容
新機能
CASキャッシュ認識で配置最適化
Apple M3起動可能に(初期段階)
HDMI 2.1対応AMDのGPUドライバに追加
USB4STREAMUSB4上のリアルタイム転送
Arc B390グラフィックス性能改善
削除
AppleTalk1980年代のネットワーク規格
i4861万3000行超のコードを削除
Hercules1982年発売のGPUドライバ
差し戻し
DRM FAIRGPUスケジューラをFIFOに戻す
※CAS = Cache Aware Scheduling。コミットの約5%にAI関与タグが付くなか予定通りリリース

Intel開発のUSB4STREAMプロトコルも統合された。USB4上でリアルタイムの等時性ストリームを扱うための仕組みで、オーディオ・ビデオ機器のUSB4接続を支える基盤になる。

マージウィンドウ中のコントリビューターは2,100人を超え、カーネルのコードベースは4,300万行を突破した。

7.3が始まる

Linux 7.2のリリースメールの末尾で、トーバルズ氏は翌日に7.3のマージウィンドウが開くことを告げた。プルリクエストはすでに40件待ちだという。

一般ユーザーが7.2のカーネルを手にするのは、もう少し先になる。CanonicalやRed Hatなど各ディストリビューションが自社のリリースサイクルに合わせて配布する。Ubuntu 26.10には7.2が搭載される見込みだ。安定性を重視するディストリビューション(Debian安定版など)では、このバージョンが直接採用されることはなく、セキュリティ修正だけがバックポートされる。

カーネルのリリースサイクルは約9週間。7.3のマージウィンドウには、FAIRスケジューラの修正版、AMD RDNA 5のディスプレイエンジン対応、デスクトップ向けオーバークロック機能など、すでに複数の注目機能が控えている。

関連記事

この記事を共有する