张芷铭的个人博客

显卡的利用率是如何计算的?

显卡利用率(通常指 GPU 利用率)的计算核心是统计 GPU 核心在单位时间内的忙碌占比,反映显卡的计算资源被实际使用的程度。不同工具(如 NVIDIA-smi、AMD Adrenalin、任务管理器)的计算逻辑一致,具体原理和细节如下:

一、 核心计算逻辑

GPU 利用率的计算公式可简化为: $$ \text{GPU 利用率} = \frac{\text{GPU 核心处于工作状态的时间}}{\text{统计周期总时间}} \times 100% $$

  • 统计周期:工具会以固定时间间隔(如 1 秒)采样 GPU 核心状态,常见采样周期为 100ms~1s。
  • 工作状态判定:GPU 核心在执行计算任务(如 CUDA 核心运算、张量核心运算)或图形渲染任务(如 3D 建模、游戏画面输出)时,判定为“忙碌”;无任务执行时判定为“空闲”。

二、 不同场景下的利用率计算细节

GPU 利用率会根据任务类型分为 图形利用率(Graphics Utilization)计算利用率(Compute Utilization),部分工具会合并显示为总利用率。

  1. 图形任务场景(游戏、视频渲染)
    • 统计对象:GPU 的图形引擎(负责顶点着色、像素渲染、光栅化等)的忙碌时间占比。
    • 影响因素:游戏分辨率、帧率、特效复杂度越高,图形利用率越高。
  2. 计算任务场景(AI 训练/推理、科学计算)
    • 统计对象:GPU 的计算引擎(如 NVIDIA CUDA 核心、AMD Stream 核心)的忙碌时间占比。
    • 关键特点:AI 模型训练时,若批次大小(batch size)足够大,GPU 利用率会趋近 100%;批次过小或存在 CPU 数据传输瓶颈时,利用率会波动下降。
    • 特殊情况:多进程/多节点任务中(如你涉及的 FLUX 模型分布式部署),若任务负载均衡,各 GPU 利用率会趋于一致;若存在数据倾斜,部分 GPU 利用率会偏低。

三、 工具的计算差异与注意事项

  1. NVIDIA 显卡(NVIDIA-smi 工具)
    • 输出指标:gpu_util 为总利用率,gpu_util_graphicsgpu_util_compute 分别为图形/计算利用率。
    • 计算逻辑:通过 NVIDIA 驱动层采集 GPU 硬件寄存器状态,统计周期默认 1 秒,精度较高。
    • 命令示例:
      1
      
      nvidia-smi -l 1  # 每秒刷新一次 GPU 状态
      
  2. AMD 显卡(ROCm-smi/Adrenalin 软件)
    • 计算逻辑:与 NVIDIA 类似,通过驱动采集 GPU 核心活动时间,统计周期可自定义。
  3. Windows 任务管理器
    • 特点:采样周期较长(约 2 秒),数据精度略低,适合快速查看整体状态,不适合精准调试。

四、 利用率解读的常见误区

  1. 利用率 100% ≠ 显卡满载损坏:正常负载下,100% 利用率是高效利用的表现,只要温度和功耗在安全范围内,不会损伤硬件。
  2. 利用率低 ≠ 显卡性能差:可能是 CPU 瓶颈(数据传输慢,GPU 等待数据)、内存瓶颈(显存不足导致任务中断)或任务负载过低(如小批次 AI 推理)。
  3. 显存占用与利用率无关:显存占用反映 GPU 内存的使用量,利用率反映 GPU 核心的忙碌程度,二者无直接关联(例如:显存占满但核心空闲,利用率仍低)。

💬 评论