5月12日、Phoronixが「Linux Scheduler Work Helping Boost Gaming Performance On Old "Potato" Hardware」と題した記事を公開した。この記事では、Linuxスケジューラーの最適化により古いハードウェアでのゲーミング性能を大幅に向上させる取り組みについて詳しく紹介されている。以下に、その内容を紹介する。
"Potato"ハードウェアでゲーム性能が劇的改善
Intel所属の著名なLinuxカーネルエンジニアであるPeter Zijlstra氏が、Linuxスケジューラーのパフォーマンス向上を目的としたパッチセットに取り組んでいる。同氏が「potato(ポテト)」と表現した古いハードウェア、具体的にはIntel Sandy Bridge世代のデスクトップCPUとAMD Radeon RX 580 Polarisグラフィックスの組み合わせで、ゲーム性能の大幅な改善を実現している。
この最適化が注目される背景には、現代のCPUにおけるコア数の増加がある。多コア環境において、既存のスケジューリングコードには大きな非効率性が存在し、特に古いハードウェアでその影響が顕著に現れていた。
cgroupスケジューリングの根本的問題に切り込む
Zijlstra氏は現在のLinux cgroupスケジューリングについて、「完全に面倒な代物だ。問題は重み分散から始まり、階層的選択で終わる。すべてが酷い」と厳しく評価している。
sched: Flatten the pickと名付けられたパッチシリーズでは、これらの問題に対処するための拡張が実装されている。
実際のベンチマーク結果が示すインパクト
同氏が行った「ちょっとした実験」では、以下の環境でテストが実施された:
- CPU: Intel Core i7-2600K(Sandy Bridge)
- GPU: AMD Radeon RX 580
- ゲーム: Shadows: Awakening(GOG版)
- 負荷条件: 8つの論理CPUに対して各1つずつ
nice spin.shを実行
この高負荷条件下で、通常であればゲームが「ほぼプレイ不可能」な状態になるところ、スケジューラーの調整により「完全にプレイ可能」なレベルまで改善された。
パフォーマンス数値
測定結果では以下の改善が確認されている:
| 項目 | デフォルト設定 | 最適化後 |
|---|---|---|
| FPS最小値 | 3.8 | 20.6 |
| FPS平均値 | 48.0 | 57.2 |
| フレームタイム平均 | 34.5ms | 19.5ms |
| フレームタイム最大 | 107.4ms | 37.2ms |
特に注目すべきは、最小FPSが3.8から20.6へと5倍以上改善された点だ。これにより、ゲーム体験における「カクつき」が大幅に軽減されている。
今後の展望
この最適化作業がLinuxカーネルのメインラインに取り込まれれば、古いハードウェアユーザーにとって大きな恩恵となる可能性が高い。また、ゲーム以外のワークロードでも性能向上が期待されている。
現在の多コアCPU環境において、スケジューラーの効率化は単なる性能向上以上の意味を持つ。特にリソースが限られた古いハードウェアでは、ソフトウェアレベルでの最適化が延命に直結するため、この取り組みは実用的価値が高い。
詳細はLinux Scheduler Work Helping Boost Gaming Performance On Old "Potato" Hardwareを参照していただきたい。