10月22日、Phoronixが「Linux 7.4 Improves Scheduling Latency For Short-Slice Tasks, NVIDIA Vera SMT Preference」と題した記事を公開した。開発中のLinux 7.4カーネルに、スケジューラ関連の複数の改善が取り込まれたことが明らかになった。
AIワークロードやクラウドネイティブ環境の普及により、OSカーネルのスケジューリングレイテンシへの要求は年々厳しくなっている。GUIのもたつき、音声の途切れ、リアルタイム通信の遅延——これらはいずれも、カーネルがタスクをどれだけ素早く切り替えられるかに直結する問題だ。今回の改善で特に注目されるのは、インタラクティブなアプリケーションへの影響が大きいショートスライスタスクの遅延が最大55%削減されたという数字である。
ショートスライスタスクのレイテンシが最大55%改善
今回の目玉は、EEVDFスケジューラ(Earliest Eligible Virtual Deadline First)におけるショートスライスタスクのスケジューリングレイテンシ改善だ。
EEVDFはLinux 6.6で導入されたスケジューリングアルゴリズムで、長年Linuxを支えてきたCFS(Completely Fair Scheduler)の後継として開発が続いている。CFSが「公平性」を重視するのに対し、EEVDFは「期限(deadline)」の概念を取り入れることで、低レイテンシが求められるタスクをより適切なタイミングで実行できる点が特徴だ。
「ショートスライスタスク」とは、CPUタイムを短い単位で断続的に消費するタスクのことで、GUIアプリケーションや音声処理、リアルタイム通信など、インタラクティブなワークロード全般がこれに相当する。この種のタスクで遅延が発生すると、ユーザーが体感できるレベルのもたつきや音飛びとして現れる。
この改善を手がけたのはLinaro所属のエンジニアVincent Guittotだ。ベンチマーク結果では最大55%のレイテンシ低減が確認されている。GuittotはLinux 7.3でも同様のショートスライスタスク改善を行っており、今回はその継続的な取り組みの延長線上にある。
NVIDIA Vera向けSMT最適化:3〜6%の性能向上
もう一つ注目されているのが、NVIDIA Vera CPU向けのSMT(Simultaneous Multi-Threading)最適化だ。
NVIDIAといえばGPUメーカーとして知られているが、近年はAIインフラ向けに独自のCPUアーキテクチャ「Vera」を展開している。Veraは「Grace-Vera」プラットフォームの中核を担うArm系CPUで、GPU「Blackwell」と組み合わせてAIサーバー向けに展開されている。今回変更の対象となったのはVeraのCPUコア実装(開発コード名:Olympus)で、スケジューラがSMTシブリング(同一物理コア上の論理コア)を優先的に選択するよう動作が変更された。
詳細なベンチマーク結果によれば、実測で3〜6%の性能向上が報告されている。NVIDIAが独自CPUを展開するにあたり、Linuxカーネルレベルでのスケジューラ最適化が並行して進んでいることは、AIサーバー市場においてLinuxが引き続き中心的な役割を担っていることを示している。
その他のスケジューラ変更点
Steal Governorの追加
仮想マシン環境向けに、スティール時間(steal time)に基づく動的なvCPU管理機構「steal governor」が新たに導入された。スティール時間とは、仮想マシンが実行を待っているにもかかわらず、ハイパーバイザー側の都合でCPUを割り当てられなかった時間のことだ(詳細)。この仕組みを使ってvCPUのプリエンプションコストを削減することで、クラウド・仮想化環境での実行効率向上が期待される。
アイドルCPUのランダム選択
同等の深さ(equally-shallow)を持つアイドルCPUコアの中からランダムに選択する仕組みが追加された。特定コアへの偏りを防ぐことで、高コア数のサーバー・ワークステーション環境での性能向上を狙った変更だ。
LLCキャッシュ利用データの修正
キャッシュアウェアスケジューリングにおいて、LLC(Last Level Cache)の部分的な利用状況データが誤った値として報告されるバグが修正された。スケジューラが不正確なキャッシュ情報をもとにタスクを配置するケースが解消され、スケジューリング判断の精度が向上する。
スケジューラ全体のpull requestの詳細はlkmlのスレッドで確認できる。
詳細はLinux 7.4 Improves Scheduling Latency For Short-Slice Tasks, NVIDIA Vera SMT Preferenceを参照していただきたい。