HN 日本語サマリー

← 一覧へ戻る
プログラミング

Linux 7.2 リリース

Linux 7.2 Released (igalia.com)

274 pointsby mariuz118 コメント

要約

Linuxカーネル7.2がリリースされ、CPUおよびGPUスケジューリングにおける大幅な進歩をもたらしました。これは過去数サイクルで最も忙しいリリースサイクルの一つであり、キャッシュアウェアスケジューリング、MGLRUの改善、sched_extのサブスケジューラー、透過的な巨大ページなどの新機能が含まれています。Igaliaは、DRMスケジューラーのフェアポリシー(回帰のためオプトイン)、Raspberry Pi GPUのランタイム電源管理、futexの修正、および一般的なバグ修正に貢献しました。

全文翻訳

第二位の忙しさとなったサイクル、カーネル7.2はCPUとGPUのスケジューリングで大きな進歩をもたらしました 8月19日、2026年 Linux 7.2 リリース Linux 7.2 が今週、通常のスケジュールでタグ付けされリリースされました。このサイクルは史上2番目に忙しいもので、6.7にのみ僅かに及ばない程度でした。これは「新しい通常」と考えられており、過去3〜4サイクルは特に修正に関して非常に忙しいものでした。キャッシュアウェアスケジューリング、MGLRUの改善、sched_extのサブスケジューラー(LWNによるトピックの良い紹介)、透過的な巨大ページの自動作成(これもLWNによる良い紹介)など、興味深い成果がいくつかあります。詳細はLWNの記事(パート1とパート2)を参照してください。Igaliaはいつものように多くの貢献をしており、主にDRMスケジューラーのフェアポリシーがありましたが、11時間目に回帰が報告されたため(下記参照)、オプトインとして提供されています。それ以外では、Raspberry Pi 4および5のGPU向けの非常に便利なランタイム電源管理、sched_ext、futexの改善、および一般的なバグ修正を導入しました。ハイライトを見てみましょう! Igalia Changelog DRMスケジューラーのフェアポリシー このリリースサイクルでは、DRMスケジューラーのフェアポリシーを導入し有効化することを計画していました。これは、複数のクライアントがGPUを共有するシナリオや、軽量なインタラクティブクライアントが要求の厳しいクライアントとGPUを競合する場合に、大幅な改善をもたらします。残念ながら、7.2-rc7週の直前の回帰報告により、デフォルトポリシーは古い先入れ先出し(FIFO)スケジューラーのままとなります。フェアポリシーの回帰に対する修正はすでに判明しており、初期テストも有望であるため、次のカーネルリリースで再有効化されることを期待しています。 sched_ext デバッグを容易にするために、sched_extの可観測性を改善しました。カスタムsched-extスケジューラーがランタイムエラー(例えば、30秒以上タスクをスケジューリングできないなど)に遭遇すると、カーネルはそれを終了し、デフォルトスケジューラーに戻します。これらの失敗を診断するために、カーネルは各CPUの状態をダンプします。しかし、特にコア数の多いシステムでは、カーネル空間とユーザー空間のバッファサイズ制限により、これらのダンプが切り捨てられることがあります。エラーを引き起こしたCPUを優先的にダンプし、そのCPU IDを直接BPFスケジューラーやユーザー空間ツールに公開することで、これを軽減しました。 Raspberry Pi GPUなどの電源管理 このリリースでは、Raspberry Pi 4および5のGPUに対するランタイム電源管理のサポートを導入しました。これまで、V3Dドライバーは非常にシンプルな電源モデルを持っていました。GPUクロックはプローブ中に有効化され、ドライバーのライフタイム全体で有効なままでした。このアプローチはシンプルで機能的でしたが、アイドル状態のGPUでも、アクティブにジョブを実行していない場合でも電力を消費していました。ランタイムPMにより、GPUは実際に作業を処理しているときのみ電源が供給され、GPUがアイドル状態のときはクロックが無効化されます。これにより、Raspberry PiがGPUを使用していないときの消費電力が削減されます。この機能については、詳細といくつかの電力測定を含むブログ記事を作成しました。また、Raspberry Pi 3 GPUドライバーで長年続いていた2つのバグを修正しました。これらのバグは長年RetroPieユーザーに影響を与えており、ランダムなGPUハングやシステムクラッシュを引き起こしていました。問題は、GPUがフレーム処理中にスペースを使い果たしたときにカーネルがタイルメモリをどのように処理していたかに起因していました。私たちの修正により、各グラフィックスジョブは自身のメモリ領域にのみ書き込み、再利用されたメモリは再度使用される前に適切にクリアされるようになり、古いまたは破損したデータがGPUに到達するのを防ぎます。これらの修正により、RetroPieユーザーはメニュー操作中に発生する可能性のあるクラッシュを経験しなくなるはずです。最後に、Raspberry Pi 4および5のGPUリセットに関するいくつかの修正を導入し、リセットプロセスをより信頼性が高く一貫性のあるものにしました。 Futexテストとドキュメンテーション 同期メカニズムを作成するためにあらゆる種類のワークロードで使用される重要なシステムコールであるfutex()の改善と保守を続けています。このサイクルでは、エッジケースでデータ破損を引き起こす可能性のある14年前のバグに対するソリューションの設計と導入を支援しました。 一般的なバグ修正 ueagle-atmドライバーで、デバイスプローブと切断中にkernfsの作成と削除操作の間でレースコンディションが発生する可能性のある長年の問題を修正しました。これはrequest_firmware APIを通じて発生し、長年syzbotでいくつかのバグレポートを生成していました。x86ブート中に使用されるmemcmp()のインラインアセンブリ実装の正確性を向上させるのを支援し、コンパイラの最適化や命令の並べ替えによる微妙な潜在的バグを防ぎました。 完全なHDMI 2.1サポートに向けて このバージョンでリリースされたHDMI 2.1 Fixed Rate Link(FRL)サポートの一部は、AMDでのRodrigo Siqueira氏(Igalia)の作業にまで遡ります。この作業は、amdgpuドライバーがHDMI 2.1モニター(主にFRL実装)と通信できるようにする初期サポートを実装しています。この実装は数年間メインコードの外にありましたが、ソースコードに取り込まれ、一部は元のまま維持され、他の部分はプロセス全体で改 rework されました。Igaliaは様々なDRM/KMSドライバーの経験があり、HDMI 2.1機能に関するこの実践的な経験は、ベンダーが独自のドライバーで最先端の機能を有効にするために必要な知識を補完します。 執筆者 (82) André Almeida Documentation: futex: Add a note about robust list race condition selftests: futex: Add tests for robust release operations Changwoo Min sched_ext: Extract scx_dump_cpu() from scx_dump_state() sched_ext: Dump the exit CPU first sched_ext: Expose exit_cpu to BPF and userspace Helen Koike fs/ntfs3: call _ntfs_bad_inode() when failing to rename tipc: fix infinite loop in __tipc_nl_compat_dumpit John Harrison drm/connector/hdmi: Fix out of bounds memory read Jose Maria Casanova Crespo drm/vc4: Supply the overflow slot size in BPOS, not the whole bin BO size Mauricio Faria de Oliveira usb: atm: ueagle-atm: use dev_dbg() for ‘device found’ message usb: atm: ueagle-atm: remove function entry/exit debug messages usb: atm: ueagle-atm: wait for pre-firmware load in .disconnect() x86/boot: Add volatile, clobbers and zero-length test in memcmp() Maíra Canal drm/vc4: Use devm_request_irq() for automatic cleanup drm/vc4: Clean-up UAPI header inclusion drm/v3d: Use devm_reset_control_get_optional_exclusive() drm/v3d: Allocate all resources before enabling the clock drm/v3d: Introduce Runtime Power Management drm/connector: Make drm_connector_attach_hdr_output_metadata_property() return void drm/v3d: Flush MMU TLB and cache during runtime resume drm/v3d: Clean caches before runtime suspend drm/v3d: Reject invalid indirect BO handle in indirect CSD setup drm/v3d: Reach the GMP through the hub registers on V3D 7.x drm/v3d: Idle AXI transactions before disabling the clock on suspend drm/vc4: Zero the tile state data array before each BIN job drm/v3d: Serialize the scheduler timeout handlers Thadeu Lima de Souza Cascardo drm/amdgpu: initialize irq.lock spinlock earlier Tvrtko Ursulin dma-fence: Fix potential tracepoint null pointer dereferences drm/sched: Disallow initializing entities with no schedulers drm/sched: Consolidate entity run queue management drm/sched: Move run queue related code into a separate file drm/sched: Add some scheduling quality unit tests drm/sched: Add some more scheduling quality unit tests drm/sched: Implement RR via FIFO drm/sched: Free all finished jobs at once drm/sched: Account entity GPU time drm/sched: Remove idle entity from tree drm/sched: Add fair scheduling policy drm/sched: Favour interactive clients slightly drm/sched: Switch default policy to fair drm/sched: Remove FIFO and RR and simplify to a single run queue drm/sched: Embed run queue singleton into the scheduler accel/amdxdna: Remove drm_sched_init_args->num_rqs usage accel/rocket: Remove drm_sched_init_args->num_rqs usage accel/ethosu: Remov