VRAM枯渇、SteamOSは退避のping-pongを抑えて実用域へ
これは何?VRAM overcommitは、GPU専用memoryを超えたallocationの一部をCPU memoryへ退避し、容量不足でもapplicationを動かし続ける仕組みです。
pixelcluster氏は、強いVRAM圧力でcommand submissionが失敗するlock再試行の欠落と、表示用bufferの連続領域確保が数GiBの不要な退避を招く問題を追跡しました。SteamOSでは退避直後の再確保を段階的に抑え、applicationのmemory priorityをLRU内の順序へ反映し、8GiB環境で9GiBを要求するゲームを平均19.6ms/frameで動かしました。基盤patchの一部はLinux 7.3向けですが、記事中の全変更は未upstreamで、公開kernel・Mesa branchは試験用です。
resource不足時の性能は、容量そのものだけでなく再試行、物理連続性、複数process間のfeedback loopで決まります。driverとapplicationがpriority hintを共有すると、random evictionによるtail latencyを減らせます。
- 読むべき人
- Linux graphics、GPU driver、game engine、performance engineeringの担当者
- HN
- 485 points / 243 comments