【操作系统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 MemoryShared GPU MemoryTotal 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内存中已分配的总量,包括专用、本地、非本地和共享内存。

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑同学的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值