現代のPCゲーミングにおいて、GPUのビデオメモリ(VRAM)容量はパフォーマンスを決定づける最も重要な要素の一つである。『Cyberpunk 2077』のような重量級のAAAタイトルを1440p以上の解像度で描写する場合、8GBのVRAMはもはや十分とは言いがたい。

しかし、ValveのエンジニアであるNatalie Vock氏が主導して開発したLinuxカーネルパッチとユーザースペースの連携技術は、OSのメモリ管理手法そのものを再構築し、物理的なVRAM容量の制約をソフトウェアの力で回避するアプローチを提示した。

AD

8GB VRAMの枯渇と背景アプリケーションの競合

Linuxデスクトップ環境でゲームをプレイする際、GPUのVRAMは単一のアプリケーションによって専有されるわけではない。フルスクリーンでゲームを稼働させている状態であっても、背後ではKDE PlasmaやGNOMEといったデスクトップコンポジタ、数十のタブを開いたウェブブラウザ、Discordなどのバックグラウンドプロセスが常にVRAM領域を消費し続けている。

従来のLinuxカーネルにおけるTTM(Translation Table Maps)メモリマネージャは、どのアプリケーションがフォアグラウンドで動作しているか、すなわちユーザーにとってどのプロセスの描画遅延が最も致命的であるかを区別する能力を持たなかった。結果としてVRAMの割り当て上限に達すると、ゲームのテクスチャやレンダリングデータと、最小化されたブラウザのデータが無差別に比較され、システムメモリ上のGTT(Graphics Translation Table)領域へのページアウト(Eviction)が発生する。

このGTTへのデータ退避と再読み込みは、専用のGDDRメモリアクセスと比較して極めて低速であり、結果としてフレームレートの急激な低下、テクスチャのロード遅延、そしてゲーマーが最も嫌う不規則なスタッタリング(カクつき)が引き起こされる。Steamハードウェア調査によれば、依然として約30%のユーザーが8GBのVRAMを搭載したGPUを使用しており、このメモリ競合問題は広範なプレイヤーベースにおける日常的なボトルネックとして存在している。

DMEM cgroupコントローラーによるカーネルレベルの制御

この課題を根本から解決するため、Valveのグラフィックスドライバーチームに所属しRADV Vulkanドライバーの開発を手がけるNatalie Vock氏は、IntelのMaarten LankhorstやRed HatのMaxime Ripardと協同で、Linuxのcgroups(コントロールグループ)機能をGPUデバイスメモリ(DMEM)向けに拡張するアプローチを採用した。

cgroupsは、systemdなどのプロセス管理デーモンがシステムリソースをプロセスグループごとに割り当て、制限するための基盤機能である。新たに開発された「DRMデバイスメモリcgroupコントローラー」は、この仕組みをVRAM空間に適用し、カーネルに対して各アプリケーションが属するcgroupごとのメモリ保護優先度を認識させる。これにより、TTMはメモリ不足時にどのメモリチャンクを先にパージするかという決定において、明確な優先順位アルゴリズムを利用できるようになる。

かつては等価に扱われていたプロセス群の中で、ゲームプロセス自身のメモリ領域が「保護対象」としてマークされるため、VRAMが枯渇し始めた際には、まずバックグラウンドで待機しているブラウザやコンポジタのバッファが優先的に遅いメインメモリへと追いやられる。

AD

空間を制御するユーザースペースの連携機構

カーネル側のパッチのみでは、どのプロセスが「フォアグラウンドにある重要なゲーム」であるかを自動的に判断することはできない。これを解決するために、ユーザースペース側で動作する2つの重要なコンポーネントが開発された。

それが「dmemcg-booster」と「plasma-foreground-booster」である。dmemcg-boosterはsystemdのサービスとして常駐し、各アプリケーションのcgroupに対してDMEMコントローラーを有効化し、必要なメモリ保護閾値を設定する役割を担う。一方のplasma-foreground-boosterは、KDE PlasmaのKWinコンポジタと連携し、現在アクティブなウィンドウ(つまりプレイヤーが操作しているゲーム)を動的に特定し、dmemcg-boosterに対してリアルタイムに優先度昇格のシグナルを送信する。

KDEを使用していない環境であっても、Valveが主導するGamescopeコンポジタの最新バージョンではこのフォアグラウンドプロセスのシグナリング機能が試験的に統合されており、Steam Deckのような独自環境においても同様の恩恵を享受できる設計となっている。

Cyberpunk 2077での実証とフレームタイム評価

この新しいメモリ管理システムの有用性は、『Cyberpunk 2077』を用いたベンチマークで明白に実証された。Steam Play (Proton) を介して実行される同作は、高解像度でのテクスチャ展開やレイトレーシング処理において膨大なVRAMを要求する。

従来の環境では、ブラウザなどをバックグラウンドで実行したまま8GB GPUでプレイした場合、フレーム間の生成時間(フレームタイム)に大きなスパイクが発生し、滑らかなプレイ体験が損なわれていた。しかしパッチ適用後の環境では、バックグラウンドアプリのVRAM占有が排除されたことでゲーム本編が必要とするデータが専用メモリ内に適切に保持され、平均フレームレートの向上以上に、1% Lowおよび0.1% Low(最もフレームレートが落ち込む瞬間の数値)が劇的に改善された。

これは、スペックシート上のベンチマークスコアの見栄えを良くするものではなく、プレイヤーが体感する「マイクロスタッターの消失」という直接的なゲーム体験の質的向上をもたらす。

AD

CachyOSによる先行実装と今後のエコシステム展開

現状、これらのパッチはLinuxカーネルのメインラインにはマージされていないプレアップストリームの段階にある。そのため、UbuntuやFedoraなど一般的なディストリビューションで利用可能になるまでには、サブシステム全体でのレビューとシステムd側でのネイティブサポートの実装を待つ必要がある。

しかし、ゲーミングパフォーマンスに特化したArchベースのディストリビューションである「CachyOS」は迅速に動き、カスタムカーネル(7.0rc7-2以降)にこのDMEM優先パッチを先行統合した。CachyOSのユーザーは、リポジトリから対応するユーザースペースパッケージをインストールするだけで、この高度なVRAM最適化の恩恵を直ちに受けることができる。

Valveがこの技術にリソースを投資する背景には、携帯型PCであるSteam Deckのパフォーマンス向上といった既存のハードウェアの最適化だけでなく、今後市場への再投入が噂される新たな「Steam Machine」の存在があると考えられる。報道によると、次世代Steam Machineのベースモデルは8GBのVRAMを搭載するとされており、このスペックで最新タイトルを問題なく稼働させるためには、OSレベルでの極限のメモリ最適化が不可避である。

Windows環境において、バックグラウンドプロセスやTelemetryがリソースを無自覚に消費し続ける現状と比較すると、Valveのこの動きは、ゲーミングに必要なコンピュートリソースを徹底的にユーザーへ還元するというオープンソースならではの強みを示している。ハードウェアのライフサイクルをソフトウェアの最適化で延長するこの試みは、今後のPCゲーミングプラットフォームの覇権争いにおいて、Linuxエコシステムの強力な武器となるだろう。


Sources