【操作系统10】GPU 相关的计数器看gpu利用率和显存占用率
原创作者:郑同学的笔记
原文链接:https://zhengjunxue.blog.csdn.net/article/details/145518993
一. GPU Adapter Memory(GPU适配器内存)
- Dedicated Usage(专用使用量):指GPU专为当前任务或进程分配的内存,这部分内存不会被其他进程占用。
有独立显卡Dedicated Usage才会有值,
- Shared Usage(共享使用量):指GPU内存中可以被多个进程共享使用的部分,通常用于多任务处理。
集成显卡只有Shared Usage
- Total Committed(总提交量):指GPU内存中已被分配或承诺给所有进程使用的总量,包括专用和共享内存。

打开任务管理器:
有英伟达显卡则有Dedicated GPU memory 和shared GPU memory。(如下图所示)
没有英伟达显卡,只有shared GPU memory。(如下图所示)


1. 显存分类与定义
(1) Dedicated GPU Memory(专用显存)
- 定义:GPU板载的独立显存(VRAM),物理上直接集成在显卡上,仅能被GPU访问。
例如:NVIDIA显卡的GDDR6显存、AMD显卡的HBM显存。
有独立显卡才会有Dedicated GPU Memory,
-
特性:
访问速度极快(带宽可达数百GB/s)。
容量固定(如RTX 4090的24GB)。 -
用途:存储核心计算数据(如深度学习模型的权重、渲染纹理、帧缓冲区)。
-
监控指标:
已使用专用显存:当前GPU专用显存的实际使用量。
专用显存占用率:已使用专用显存 / 总专用显存 × 100%。
(2) Shared GPU Memory(共享显存)
- 定义:从系统内存(RAM)中动态划分出一部分供GPU使用的虚拟显存。
例如:Windows默认分配系统内存的50%作为共享显存上限(可在BIOS中调整)。
集成显卡只有Shared GPU Memor
-
特性:
访问速度较慢(依赖PCIe总线带宽,通常为16-32GB/s)。
容量动态变化(根据系统内存空闲情况分配)。 -
用途:当专用显存不足时,临时存储非关键数据(如低优先级纹理、中间计算结果)。
-
监控指标:
已使用共享显存:当前从系统内存中借用的显存量。
共享显存占用率:已使用共享显存 / 共享显存上限 × 100%。
(3) Total Committed(总提交内存)
- 定义:操作系统为GPU分配的所有内存总量,
- 包括:
专用显存(Dedicated GPU Memory)
共享显存(Shared GPU Memory)
其他预留内存(如驱动管理的内存池)。
公式:
Total Committed=Dedicated Used+Shared Used+Reserved
- 监控意义:反映GPU当前总的内存负载(包括物理显存和虚拟显存)。
2. 显存占用率的定义
显存占用率通常指的是 专用显存的利用率(即Dedicated GPU Memory的使用比例),但在某些场景下可能包含共享显存。需根据上下文明确:
(1) 狭义显存占用率(默认定义)
公式:
显存占用率 = ( 已使用专用显存 总专用显存 ) × 100 % 显存占用率 = \left( \frac{\text{已使用专用显存}}{\text{总专用显存}} \right) \times 100\% 显存占用率=(总专用显存已使用专用显存)×100%
示例:若专用显存总量为8GB,已使用4GB,则占用率为50%。
(2) 广义显存占用率(含共享显存)
公式:
显存占用率
=
(
Total Committed
总专用显存 + 共享显存上限
)
×
100
%
显存占用率 = \left( \frac{\text{Total Committed}}{\text{总专用显存 + 共享显存上限}} \right) \times 100\%
显存占用率=(总专用显存 + 共享显存上限Total Committed)×100%
示例:专用显存8GB(已用8GB)+ 共享显存上限8GB(已用2GB),则占用率为 (8+2)/(8+8) × 100% = 62.5%。
3. 各指标对比与典型场景
| 项目 | Value |
|---|
| 指标 | Dedicated GPU Memory | Shared GPU Memory | Total Committed |
|---|---|---|---|
| 物理位置 | GPU板载显存 | 系统内存(RAM) | 专用显存 + 共享显存 + 预留内存 |
| 速度 | 极快(数百GB/s) | 较慢(依赖PCIe带宽) | 混合速度 |
| 容量上限 | 固定(如8GB) | 动态(通常≤系统内存的50%) | 专用显存 + 共享显存上限 |
| 典型高占用场景 | 深度学习训练、3A游戏渲染 | 显存溢出时的临时数据缓存 | 复杂多任务或显存泄漏 |
| 优化优先级 | 首要优化目标 | 次要优化目标(尽量避免使用) | 综合监控指标 |
二. GPU Engine(GPU引擎)
-
Running Time(运行时间):指GPU引擎执行任务的总时间,通常以毫秒或秒为单位。
-
Utilization Percentage(利用率百分比):指GPU引擎在当前时间段内的使用率,通常以百分比表示。高利用率表示GPU正在高效工作。
cppUtilization Percentage这个值用于评估 GPU 是否被充分利用。可以理解为 GPU 的使用率,反映了 GPU 执行计算任务的程度。

把计数器中的所有的3D的值加起来,就是任务管理器中的3D的值

1、Utilization Percentage
以下是一部分的,Utilization Percentage
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_0_engtype_3D
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_10_engtype_GDI Render
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_11_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_12_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_1_engtype_VideoDecode
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_2_engtype_Copy
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_3_engtype_VideoProcessing
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_4_engtype_VideoDecode
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_5_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_6_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_7_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_8_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_9_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_0_engtype_3D
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_10_engtype_GDI Render
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_11_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_12_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_1_engtype_VideoDecode
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_2_engtype_Copy
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_3_engtype_VideoProcessing
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_4_engtype_VideoDecode
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_5_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_6_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_7_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_8_engtype_
GPU 利用率2: 0
GPU 引擎2: pid_12388_luid_0x00000000_0x00013EAF_phys_0_eng_9_engtype_
GPU 利用率2: 0
2、如何解析上面的数据
为了准确获取每个GPU模块(如3D渲染、视频解码等)的GPU利用率,你可以通过以下步骤分析和提取GPU的详细信息:
-
检查输出格式:
你提供的输出中,GPU 引擎 代表不同的GPU模块(如3D渲染、视频解码等)。
每个模块后面都跟着对应的 GPU 利用率,值为 0 表示没有使用,其他值则表示当前模块的活动程度。
如何解析这些信息: -
比如,GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_0_engtype_3D 后面紧跟的 GPU 利用率2: 0 就是指该3D渲染模块的利用率。
类似地,GPU 引擎2: pid_10588_luid_0x00000000_0x00013EAF_phys_0_eng_1_engtype_VideoDecode 后面跟的 GPU 利用率2: 0 则表示视频解码模块的利用率。 -
具体模块的GPU利用率提取:
3D渲染: 查找engtype_3D的行,后面的 GPU 利用率 即为3D渲染的利用率。
视频解码: 查找engtype_VideoDecode的行,后面的 GPU 利用率 即为视频解码的利用率。
视频处理: 查找engtype_VideoProcessing的行,后面的 GPU 利用率 即为视频处理的利用率。
复制模块: 查找engtype_Copy的行,后面的 GPU 利用率 即为复制任务的利用率。
细粒度的模块信息(如 3D 渲染和视频解码的 GPU 利用率)通常无法直接通过 WMI(或者计数器pdh) 获取。有需要可以自己统计。
三. GPU Local Adapter Memory(GPU本地适配器内存)
- Local Usage(本地使用量):指GPU本地内存的使用情况,这部分内存通常用于存储当前正在处理的数据,访问速度较快。
作用:
该指标反映了 GPU 本地显存的使用情况,通常用于存储纹理、帧缓冲区、着色器数据等与图形渲染或计算任务相关的数据。
意义:
如果 Local Usage 接近 GPU 本地显存的总容量,可能会导致性能下降,因为 GPU 可能需要频繁地从系统内存(非本地内存)中交换数据。
对于游戏、3D 渲染或深度学习等显存密集型任务,监控 Local Usage 可以帮助判断是否需要升级显存更大的 GPU。

四. GPU Non-Local Adapter Memory(GPU非本地适配器内存)
- Non Local Usage(非本地使用量):指GPU使用的非本地内存,通常是系统内存或其他设备的内存,访问速度相对较慢。
作用:
该指标反映了 GPU 在本地显存不足时,依赖系统内存的程度。
意义:
如果 Non-Local Usage 较高,说明 GPU 本地显存可能不足,导致性能瓶颈,因为系统内存的带宽和延迟远不如 GPU 本地显存。
对于需要大量显存的任务(如高分辨率游戏或大规模深度学习模型),高 Non-Local Usage 可能意味着需要优化显存使用或升级 GPU。

五. GPU Process Memory(GPU进程内存)
-
Dedicated Usage(专用使用量):指当前进程独占的GPU内存量。
-
Local Usage(本地使用量):指当前进程使用的GPU本地内存量。
-
Non Local Usage(非本地使用量):指当前进程使用的GPU非本地内存量。
-
Shared Usage(共享使用量):指当前进程与其他进程共享的GPU内存量。
-
Total Committed(总提交量):指当前进程在GPU内存中已分配的总量,包括专用、本地、非本地和共享内存。

6544

被折叠的 条评论
为什么被折叠?



