遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置
顯示記憶體(VRAM)不足 VRAM over-commit
原因 ID co-vram · 主要負責 遊戲開發團隊(用戶端開發) · 協同 外部(外部)
在含圖解與實驗的完整版中開啟卡片 →
畫質選項需要的記憶體比顯示卡記憶體還大時,OS 會把貼圖移到電腦的主記憶體再搬回來,因此出現卡頓。
為什麼 高貼圖選項,加上人多的地方各式各樣的裝備與特效,讓顯示卡記憶體全滿 → 於是 OS 把暫時沒用到的貼圖移到電腦的主記憶體,需要時再透過較慢的 PCIe 匯流排搬回來 → 畫面上 每次出現新場景或新角色都會頓一下,貼圖有一段時間是模糊的
- 症狀
- 卡頓, 定格
- 因素
- 停滯
- 誰會遇到
- 只有我
- 何時
- 人潮湧入時, 移動中/切換地圖時
- 負責單位
- 主要負責 遊戲開發團隊(用戶端開發) · 協同 外部(外部)
- 遊戲開發團隊要做的事
- 依顯示卡記憶體大小設定選項預設值、超出記憶體預算時自動調低貼圖品質、人多的地方簡化角色貼圖。
- 外部要做的事
- 引導玩家調低貼圖選項,同時開兩個用戶端時要把選項調得更低。
- 數值參考
- 顯示卡記憶體每秒可讀取數百 GB,但與電腦主記憶體之間往來的 PCIe 匯流排依世代約為每秒 16~64GB,慢了十倍以上。
- 圖表上
- 碰到上限後持平 · 專用 GPU 記憶體、共用 GPU 記憶體
- 查看位置
- 把工作管理員「效能」索引標籤 GPU 項目中的專用 GPU 記憶體、共用 GPU 記憶體圖表(也可以在「詳細資料」索引標籤加上各處理程序的欄位)跟 PresentMon 畫格時間一起查看
- 符合的跡象
- 專用 GPU 記憶體貼著上限持平、共用 GPU 記憶體持續增加的期間經常頓一下,調低貼圖選項後就消失
- 不符合的跡象
- 專用記憶體還有餘裕時,是「儲存裝置太慢,資源串流跟不上」或「主執行緒同步載入、著色器編譯」
- 確認方式
- 在玩家端環境確認
- 深入了解
- Windows 工作管理員的 GPU 項目中,「專用 GPU 記憶體」全滿、「共用 GPU 記憶體」增加,就是這個狀態。在同一台電腦上開兩個用戶端會更快用滿(見「記憶體/VRAM 不足導致串流失敗」項目)。
出處
- Residency Microsoft
處理程序可使用的顯示記憶體有預算,超出時 kernel 會把獨立 GPU 的部分 heap 移到電腦主記憶體(這是最後手段,建議做好預算管理) - GPUs in the task manager Microsoft
工作管理員的專用 GPU 記憶體是顯示卡的 VRAM,共用 GPU 記憶體是 GPU 與 CPU 共用的電腦主記憶體 - CUDA C++ Best Practices Guide NVIDIA
顯示記憶體頻寬(V100 為 898GB/s)遠大於 PCIe x16 第 3 代(16GB/s),因此建議減少與電腦主記憶體之間的傳輸 - PresentMon Capture Application (README-CaptureApplication.md) Intel
以 FrameTime(畫格之間的 CPU 時間)錄下每個畫格的時間
相關原因
同一層:L2 用戶端 OS 與裝置
同一症狀(卡頓)在其他層的原因
查看含圖解與實驗的完整版卡片