古参Slackware系ディストロ、CPUスケジューラを換えて復活
20年近く名前を聞かなかったLinuxディストリビューションが、CPUスケジューラという地味だが根本的な部品に手を入れて再起動した。狙うのは、デスクトップ体験の質そのもの。
20年近く名前を聞かなかったLinuxディストリビューションが、CPUスケジューラという地味だが根本的な部品に手を入れて再起動した。狙うのは、デスクトップ体験の質そのもの。
Zenwalkが選んだ武器
SlackwareベースのディストリビューションZenwalkが、BOREスケジューラを組み込んだ独自カーネルを公開した。掲げるテーマは「真の低レイテンシデスクトップ体験」。
Zenwalkは2005年にMinislackとして生まれ、Slackwareの堅実さを受け継ぎながらデスクトップ向けに最適化する方針で注目を集めた。2008年前後にはUbuntuやSUSEと並んで名前が挙がることもあったが、その後は表舞台から姿を消していた。最後にまとまったニュースが出たのは、ほぼ20年前のこと。
その沈黙を破ったのが、カーネルのCPUスケジューラをまるごと差し替えるという選択だった。
BOREスケジューラとは何か
BORE(Burst-Oriented Response Enhancer=バースト指向レスポンス強化機構)は、Linuxカーネルの標準スケジューラであるEEVDF(最早適格仮想デッドライン優先)に手を入れたアウトオブツリーのCPUスケジューラ。開発者はfirelzrd氏で、GitHubでGPL-2.0ライセンスのもと公開されている。
標準のEEVDFはすべてのタスクに「公平」にCPU時間を配分しようとする。理論としては美しいが、デスクトップの現実はそこまで単純ではない。バックグラウンドでコンパイルが走っているとき、フォアグラウンドの音楽再生やマウス操作がカクつく。公平さと応答性は、しばしば相反する。
BOREはここに「バースト性」という指標を持ち込む。各タスクがCPUを手放してからどれだけ経ったかを追跡し、短いCPU使用で頻繁にスリープやI/O待ちに入る「おとなしい」タスクには高い優先度を、CPUを長時間占有し続ける「欲張りな」タスクには低い優先度を、動的に割り当てる。
BOREの核心はシンプルで、「短く使ってすぐ返す」タスクを優遇し、「長く居座る」タスクを後回しにする。音楽再生やマウスクリックの応答は前者、大規模コンパイルは後者。デスクトップで人が「速い」と感じる体験は、この区別から生まれる。
仕組みとしては、タスクのCPU使用時間のビットカウントを対数変換してスコア化し、0から39の範囲でniceness(優先度調整値)と同様の効果を生む。スコアが1下がるごとにタイムスライスが約1.25倍になる計算だ。
Zenwalkが報告した実体験
Zenwalkのブログでは、標準Slackwareカーネルとの比較テストの結果が語られている。
標準カーネルでは、バックグラウンドで単純なアプリケーションのコンパイルを実行しただけで音声再生が途切れフレーム落ちが発生する。BOREカーネルでは、大規模アプリケーションのコンパイルと大量のマルチスレッドメディアトランスコードがバックグラウンドで同時に走っている状態でも、音声再生に一切の乱れがない。まるで別物だ。
ベンチマーク数値ではなく体感の証言だが、カーネルスケジューラの差が人の耳で聴き分けられるレベルで現れるというのは、この種の変更がいかにデスクトップ体験の根幹に関わるかを示している。
公開されたカーネルビルドは、BOREパッチ以外はSlackwareの標準カーネルとモジュール構成が完全に同一であり、Slackwareとの互換性を保ったままドロップイン置換できる設計になっている。
CachyOSという先行事例
BOREスケジューラが初めて実戦投入されたわけじゃない。Arch Linuxベースのパフォーマンス特化ディストリビューションCachyOSは、以前からBOREをカーネルオプションの一つとして提供してきた。CachyOSのカーネルマネージャではBORE、EEVDF、BMQなど複数のスケジューラを選択でき、ユーザーがワークロードに応じて使い分けられる環境を整えている。
CachyOSのフォーラムでは、BOREについて「初期のEEVDFと比べると明確に応答性が改善される」という声と、「最近のEEVDFの改善で差は縮まった」という声が混在している。特定のワークロード(ゲーミングや音声制作のようにレイテンシに敏感な用途)では、BOREの優位が残る場面がある。
sched-extという別の潮流
一方で、Linux 6.12でメインラインにマージされたsched_ext(拡張スケジューラクラス)は、Linuxのスケジューリング戦略をまったく別の方向に押し広げている。BPFプログラムで書かれたスケジューラをカーネル再起動なしにホットスワップできる仕組みで、LAVD(Valveが開発に参加、SteamOSで採用)やBPFLand(NVIDIAのエンジニアが主導)といった用途特化型スケジューラが登場し始めた。
BOREは「カーネルに焼き込む」古典的なアプローチ。sched_extは「カーネルの外からスケジューラを差し替える」新しいアプローチ。どちらが正解かではなく、Linuxスケジューリングの選択肢が広がっている。BOREの開発者firelzrd氏もリポジトリの謝辞欄でsched_extの主要貢献者であるアンドレア・リーギ(Andrea Righi)氏の名前を挙げており、両陣営の間に対立というより相互刺激がある。
Slackware互換という設計思想
Zenwalkはカーネルのスケジューラだけを差し替え、それ以外を一切変えていない。
SlackwareはLinuxディストリビューションの中で最も古い部類に入る。1993年にパトリック・フォルカーディン(Patrick Volkerding)氏が立ち上げ、systemdを採用せずBSDスタイルのinitスクリプトを維持し、依存関係の自動解決すら最小限に留めるという、徹底的に「Unix的」な思想を貫いてきた。
Zenwalkのカーネルビルドがこの互換性を壊さなかったのは、意図的な選択だろう。Slackwareユーザーがカーネルパッケージを差し替えるだけで、余計な設定なしにBOREの恩恵を受けられる。「最小限の変更で最大の効果」という、Slackware的な美学がそこにある。
20年の沈黙が意味するもの
Linuxディストリビューションの世界では、プロジェクトがいつの間にか消えていくことは珍しくない。Zenwalkが約20年ぶりにLinuxコミュニティの話題に上がったこと自体が、ひとつの事件といえる。
大規模な開発チームも、企業の支援もない。デスクトップ環境はXfce。パッケージマネージャは独自のnetpkg。主流から見れば、ニッチ中のニッチ。
それでも、カーネルのスケジューラというOSの最も深い層に手を入れて、自分たちが信じるデスクトップ体験を追求する。この執念に、オープンソースの原風景がある。Linuxカーネルのスケジューラは今、EEVDF、BORE、sched_extと、かつてないほど選択肢が豊かになっている。
| EEVDF | BORE | sched_ext | |
|---|---|---|---|
| 正式名称 | Earliest Eligible Virtual Deadline First | Burst-Oriented Response Enhancer | 拡張スケジューラクラス |
| 設計方針 | 均等配分 | バーストタスク優先 | 用途別に交換可能 |
| 得意な用途 | 汎用・サーバー | デスクトップ・音声・ゲーミング | 用途ごとに最適化 |
| 適用方法 | カーネル標準 | パッチ適用 | BPFで動的入替 |
| 採用先 | 全ディストロ | CachyOS・Zenwalk | SteamOS(LAVD) |
| ツリー | メインライン | アウトオブツリー | メインライン |
巨大ディストリビューションが追いかける派手な機能とは無縁の場所で、20年前のプロジェクトがカーネルを書き換えている。技術の進歩は、必ずしも大きな船からだけ起きるわけじゃない。
関連記事
- CachyOS、Linux 7.0に7.1の新機能を先取り搭載
- Valve開発者、LinuxのVRAM管理を根本から修正
- Linux 7.2、GPUスケジューラの新方式をリリース直前に撤回
- Linux 7.3、M3 Pro/Max/Ultraのデバイスツリーを初めてマージへ
- Valve開発者の旧GPU改善、Linux 7.3でカーネルに到達
- FreeBSD、GPL完全除去の宣言を訂正。カーネルにまだ残っていた
- Linux 7.2-rc1公開。6年越しの安全対策が完了
- トーバルズが「不快」と一蹴したのは機能ではなく、ファイルの置き方だった
- USB4STREAMがLinux 7.2にマージ。ケーブル1本のPC間転送が正式機能に
- Linuxカーネルからstrncpyが消えた。6年362コミットの結末