한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L2 客户端操作系统与设备

显存(VRAM)不足 VRAM over-commit

原因 ID co-vram · 主责 研发团队·客户端开发 · 配合 外部·外部

在含图示和实验的完整版中打开此卡片 →

画质选项要求的内存超过显卡显存时,操作系统要把纹理换到系统内存再取回,画面就会一卡一卡。

起因 高纹理选项,加上人多处的各种装备、特效,把显存占满 → 结果 操作系统把暂时不用的纹理移到系统内存,需要时再经由较慢的 PCIe 总线取回 → 画面表现 每当出现新场景或新角色就顿一下,纹理一段时间内是模糊的

症状
一卡一卡, 卡住
因素
停顿
谁会遇到
只有我
何时出现
人多的时候, 移动中/切换地图时
负责方
主责 研发团队·客户端开发 · 配合 外部·外部
研发团队要做的事
按显存大小设定选项默认值,超出显存预算时自动降低纹理质量,人多的地方简化角色纹理。
外部要做的事
引导玩家降低纹理选项;双开时把选项再调低一些。
数值参考
显存每秒能读几百 GB,而与系统内存往来的 PCIe 总线视代际不同每秒约 16~64 GB,慢十倍以上。
监控图上
触顶后走平 · 专用 GPU 内存、共享 GPU 内存
查看位置
把任务管理器“性能”选项卡 GPU 项的专用 GPU 内存、共享 GPU 内存曲线(“详细信息”选项卡中也可添加按进程的列)与 PresentMon 帧耗时一起看
确认依据
专用 GPU 内存贴着上限走平、共享 GPU 内存上升期间,频繁顿一下,降低纹理选项后消失
排除依据
专用 GPU 内存有余量,看“存储设备过慢导致资源流式加载滞后”或“主线程同步加载/Shader 编译”
确认手段
需在玩家侧环境确认
深入了解
在 Windows 任务管理器的 GPU 项中,“专用 GPU 内存”占满、“共享 GPU 内存”上升,就是这种状态。同一台电脑双开时会更快占满(看“内存/显存不足导致流式加载失败”)。

出处

  1. Residency Microsoft
    进程可用的显存有预算,超出时内核会把独立显卡的一部分堆移到系统内存(这是最后手段,建议做好预算管理)
  2. GPUs in the task manager Microsoft
    任务管理器中的专用 GPU 内存是显卡的 VRAM,共享 GPU 内存是 GPU 和 CPU 共用的系统内存
  3. CUDA C++ Best Practices Guide NVIDIA
    显存带宽(V100 为 898 GB/s)远大于 PCIe x16 第 3 代(16 GB/s),所以建议减少与系统内存之间的传输
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    用 FrameTime(帧与帧之间的 CPU 时间)录制每帧耗时

相关原因

同一层:L2 客户端操作系统与设备

其他层中同样导致“一卡一卡”的原因

查看含图示和实验的原卡片