从总体上来说,Windows 10是一个好系统,虽然我们天天戏称它为“Bug 10”,但不可否认的是,从立项以来,开发团队就一直在努力为它加入新的功能,其中有不少是相当实用的,比如说,他们在1709这个大版本中,为任务管理器加入了GPU性能监控单元,用户可以通过任务管理器直观地看到目前的GPU占用率,比以往要开GPU-Z等程序方便了不少。但很多用户在实际使用的时候也发现了,这个针对GPU的性能监控好像不太准,我显卡在全力计算的时候,任务管理器里面的GPU占用率怎么这么低?

比如我开个挖矿程序,显卡的占用其实是满的,但左边GPU窗格中显示的占用率只有3%

为了找出答案,我们找到了当时引入这项新功能时,开发者的讲解Blog,由于是与图形相关的内容,这篇Blog被归入DirectX Developer Blog中。

首先开发者给我们讲述了任务管理器是怎么得知GPU的占用情况的。在Windows 10上面,GPU通过Windows Display Driver Model(WDDM,Windows显示驱动模型)抽象,它的核心——图形内核——负责抽象、管理和在所有进程分配GPU资源。它含有一个GPU事务器(VidSch)和一个视频内存管理器(VidMem),前者负责将GPU的各种引擎分配给想要使用它们的进程,并对访问进行仲裁和优先级排序,后者则是负责管理GPU可调用的内存——包括专用的显存和共享的系统内存。

任务管理器就是通过VidSch和VidMem回报的数据来计算GPU的使用情况的,这样一来,不管程序使用了什么API(DX、OpenGL、OpenCL,甚至CUDA、Mantle这种专有API都可以监控),它都能准确地收集GPU的占用情况,另外由于两者是实际负责分配GPU资源的,位于驱动层面,它们回报数据的精准度也要比很多第三方工具要高,使得任务管理器有很高的精度。

既然有很高的精度,那它为什么还是报不准我的GPU占用率呢?这就牵扯到另一个问题,GPU引擎。

现代GPU上除了有主要用于图形、通用计算的统一计算单元外,还会集成一些其他的电路,比如说,用于视频编解码的专用模块。它们之间的关系一般是并行的,GPU可以同时运行图形计算和视频编码任务,在驱动层面,这些不同的模块就被抽象为不同的Engine,也就是引擎,比如说一个典型的GPU可以有以下这些引擎:

在具体执行任务的时候,不同的任务会在不同的引擎上面执行,比如说我打游戏,就用到3D引擎;我用显卡加速Premiere Pro,就用到CUDA引擎;我用NVENC编码视频,就用到视频编码引擎。

一张RTX 2060显卡被系统抽象出的引擎

由于部分引擎之间有复用的关系,比如说3D引擎和CUDA引擎复用CUDA Cores进行计算,那么如果通过简单加法来计算占用率,那这个占用率就有可能会超过100%。开发团队也考虑过使用平均利用率来表示,但也不靠谱。那3D引擎不是被用的最多吗,就用它怎么样?也不太行,比如在视频引擎满载而3D引擎空载的情况下,它将会显示0%的占用率,也是不准确的。最终,开发团队选择将当前最为繁忙的引擎占用率作为GPU整体占用率的代表。

恩……博文说的很好,那么到今天为止这个功能上线也有一段时间了,其具体表现是怎样的呢?让我们看回顶上的那张图,在GPU的CUDA引擎满载的情况下,其左边的整体占用率仍然很低,显然是没有达到开发团队所说的。

我们又测试了一下别的情况,这里使用NVENC对视频进行编码,此时可以看到左边窗格中的GPU占用率又跑到了满载。

而在跑典型的3D应用程序的时候,它也很正常。

最后,我们尝试了OpenCL负载,这次任务管理器又能反映出CUDA引擎的占用率了。

如此看来,任务管理器GPU占用率的薛定谔情况可能是Windows 10的一个Bug所导致的,在大部分情况下,它都会反映负载最大引擎的占用率,但在某些情况下,它并不能够正确地显示当前最繁忙引擎的占用情况。

超能网公众号

扫码关注我们,浏览热门硬件评测

随时查看最新天梯榜

占用率_有问有答:任务管理器里面的GPU占用率到底是怎么算的?相关推荐

  1. 1709 ltsb 内存占用_有问有答:任务管理器里面的GPU占用率到底是怎么算的?

    从总体上来说,Windows 10是一个好系统,虽然我们天天戏称它为"Bug 10",但不可否认的是,从立项以来,开发团队就一直在努力为它加入新的功能,其中有不少是相当实用的,比如 ...

  2. lpop 原子_我问我答核磁共振都能测什么原子核?

    Hi~这里是橙阳说! 本期内容 「我问我答」 核磁共振都能测试什么原子核? 文末新加了讨论窗口 期待你的留言   01.  核磁能测什么样的原子核?  对核磁不是很了解的童鞋经常会产生一种错觉,就是核 ...

  3. asp.net添加删除表格_你问我答|135编辑器使用之超链接和表格问题

    嘿,胖友们大家好呀,我是三儿. 万众期待的『你问我答』栏目又回来了!之前我们有出过两期内容,解决了胖友们在日常工作中使用135编辑器常见到的一些问题. >>>>>点我查看 ...

  4. 进出仓原理_你问我答 | 球磨机组成和工作原理?

    壹 问 问题1:球磨机组成和工作原理? 壹 答 回答1: 一.球磨机工作原理: 该球磨机的主要工作部分是一个装在两个大型轴承上并水平放置的回转圆筒,筒体用隔仓板分成几个仓室,在各仓内装一定形状和大小的 ...

  5. 什么决定了计算机的寻址能力_有问有答:寻址能力与CPU的位宽有关系吗?

    拼 命 加 载 中 ... 答案是没有关系.这个问题以讹传讹了很多人,传了很久,确实有必要说说.CPU的寻址能力与它的地址总线位宽有关,而我们通常说的CPU位宽指的是数据总线位宽,它和地址总线位宽半毛 ...

  6. amd一键超频怎么用_有问有答:AMD处理器怎么超频?

    拼 命 加 载 中 ... 传统的超频方法是要入BIOS里面手动来改设置的,但是对于大多数用户来说BIOS里的设置太多了,不熟悉的人一进BIOS就眼花缭乱不知道要改啥,不过随着AMD锐龙处理器的推出, ...

  7. 赛扬处理器_有问有答:怎么认识电脑处理器的划分?比如英特尔i5i7这些代表什么意思?...

    首选我们要知道现在电脑处理器的品牌有两个一个是Intel另一个是AMD,他们两家现在的命名规则基本都是相近的,Intel家的酷睿系列是主力产品,而AMD方面则以锐龙系列处理器作为主力,下面先来说说In ...

  8. 广汽丰田第一店_你问我答-auto080407

    [url=http://play3.pcauto.com.cn/auto080407]活动[/url]的需求再简单不过了:网友提问,商家在后台回复或删除网友问题... 这次的"主要" ...

  9. spring揭秘_被问到了! Spring 和 Spring Boot 之间到底有啥区别?

    相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别? 今天就来大揭秘 ↓ 概述 对于 Spring和 SpringBoot到底有什么区别,我听到 ...

最新文章

  1. python3 列表倒叙_python的列表、元组、字典、集合
  2. couldn't connect to server 127.0.0.1:27017 src/mongo/
  3. windows 8   远程桌面(RemoteFX )
  4. oracle package 函数,Oracle 存储过程procedure,函数function用法,以及package用法
  5. 赠书5本包邮:数据思维实践、Cloud Native分布式架构原理与实践
  6. mysql parameters_MySqlCommand Command.Parameters.Add已过时?mysql-问答-阿里云开发者社区-阿里云...
  7. 撰写oracle-sql-hint的注意事项
  8. jdbctemplate调用 mysql存储过程
  9. iOS的5种图片缩略技术以及性能探讨
  10. geohash redis mysql_Redis geohash 地理位置存储
  11. vscode如何使用ajax,Ajax 的初步实现(使用vscode+node.js+express框架)
  12. 一阶滞后环节matlab,一个一阶惯性带有滞后环节的PID仿真程序
  13. springboot学习(下)
  14. 营业收费管理系统,整合多类抄表系统
  15. Unity Application Block 1.2 学习笔记 [转]
  16. css投影的代码,【css】box-shadow匹配ps投影效果/text-shadow(示例代码)
  17. 提升.NET技术水平,我从不内卷!
  18. 威威猫系列故事——打地鼠
  19. 自动化脚本编程框架(代码篇)
  20. 华为手机打开html文件,华为手机必须打开的6个功能,让你手机顺滑流畅,再用3年也不卡!...

热门文章

  1. Windows Linux Mac 路由添加删除
  2. 基于Jenkins 快速搭建持续集成环境
  3. 【Android Studio快捷键】之导入相应包声明(import packages)
  4. 实战:判断mysql中当前用户的连接数-分组筛选
  5. 【转载】ASP.NET MVC中Controller与View之间的数据传递总结
  6. [摘自MSDN] ASP.Net2.0学习 [1] 母版页 7 : 母版页和内容页中的事件
  7. php分类程序,PHP无限分类实现程序_PHP教程
  8. python get sheet_Python模块学习 - openpyxl
  9. ebs oracle pl sql开发_ORACLEERP开发基础之EBS开发基础
  10. 内衬纸缺陷在线检测系统