游戏卡顿白皮书 › 只有部分人遇到的问题
内存/显存不足导致流式加载失败 Memory / VRAM exhaustion
原因 ID pt-vram · 主责 研发团队·客户端开发 · 配合 外部·外部
在含图示和实验的完整版中打开此卡片 →
两个客户端共用显存时,新需要的模型、纹理没有地方加载,有一部分就画不出来。
起因 两个客户端共用显存和内存。OS 有时还会先削减后台窗口的显存配额 → 结果 引擎无法加载新的模型、纹理,或反复卸载再加载 → 画面表现 NPC 出现得晚、模糊或看不到,一卡一卡
- 症状
- 隐身/幽灵实体, 一卡一卡
- 因素
- 停顿
- 谁会遇到
- 双开时只有一个客户端
- 何时出现
- 移动中/切换地图时, 人多的时候
- 负责方
- 主责 研发团队·客户端开发 · 配合 外部·外部
- 研发团队要做的事
- 按内存预算自动调整画质,加载失败时显示替代模型。
- 外部要做的事
- 引导同时开两个客户端的玩家降低画质或使用低配模式,告知推荐的显存、内存配置。
- 监控图上
- 触顶后走平 · 各进程专用 GPU 内存使用量
- 查看位置
- 在玩家电脑的任务管理器“详细信息”选项卡中添加“专用 GPU 内存”列,把两个客户端的用量之和与显卡显存容量对比。在游戏侧记录 DXGI 的 QueryVideoMemoryInfo 返回的预算(Budget)和当前用量(CurrentUsage)
- 确认依据
- 两个客户端用量之和在显存容量附近走平,当前用量超过预算的时刻模型、纹理加载失败集中出现。降低画质或只开一个就消失
- 排除依据
- 显存有余量却仍看不到,看“缓存/资源文件并发访问冲突”或“显示选项不同”
- 确认手段
- 需在玩家侧环境确认
出处
- Residency (Direct3D 12) Microsoft
切换到其他应用时显存预算可能大幅缩小,超过预算时会停顿或创建失败。不在前台时,预留的部分也得不到保证 - GPUs in the task manager Microsoft
在任务管理器的“详细信息”选项卡中添加列,就能看到各进程的专用、共享 GPU 内存用量。专用 GPU 内存就是显卡的显存 - DXGI_QUERY_VIDEO_MEMORY_INFO structure (dxgi1_4.h) Microsoft
Budget(OS 规定的显存预算)和 CurrentUsage(应用当前用量)。用量超过预算时可能出现卡顿
相关原因
同一层:只有部分人遇到的问题
其他层中同样导致“隐身/幽灵实体”的原因
查看含图示和实验的原卡片