NVIDIA显卡可用nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits直接读取硬件直采功耗(单位W),或用nvidia-smi -l 1实时刷新查看Pwr列;Intel核显的intel_gpu_top中“Power”仅为负载百分比,非真实功耗;AMD GPU目前仅部分型号通过rocm-smi提供估算功耗,偏差可达±25%。

Linux 下没有通用的“显卡实时功耗”接口,能否读到真实功耗取决于显卡品牌、驱动和硬件支持程度。NVIDIA GPU 在启用驱动后可直接读取 power.draw(单位 W),这是最可靠的方式;Intel 核显不提供功耗寄存器,intel_gpu_top 显示的 “Power” 是负载百分比而非瓦特;AMD GPU 目前仅部分 ROCm 设备通过 rocm-smi 暴露估算功耗,且需内核 ≥6.2 + amd_pmc 支持。
怎么用 nvidia-smi 查 NVIDIA 显卡实时功耗
NVIDIA 官方驱动暴露了 RAPL 兼容的功耗传感器,nvidia-smi 可直接读取硬件直采值,无需校准、不依赖估算模型。
-
nvidia-smi --query-gpu=power.draw --format=csv,noheader,nounits输出当前瞬时功耗(W),例如62.45 - 要持续监控:运行
nvidia-smi -l 1,表格中Pwr:Usage/Cap列即为实时功耗/上限(如62W / 250W) - 注意:该值来自 GPU package 的 power rail,包含核心、显存、PCIe 供电路径,不是纯计算单元功耗
- 若显示
N/A或0.00,说明驱动未加载、GPU 处于低功耗挂起状态(如sudo nvidia-smi -r后未唤醒),或设备不支持(如老旧 Maxwell 架构部分型号)
为什么 intel_gpu_top 的 Power 不是功耗
intel_gpu_top 界面里标为 “Power” 的列,本质是 i915 驱动统计的 GPU 引擎相对活跃度(0–100%),它不访问 /sys/class/powercap/intel-rapl:*,也不读取任何能量寄存器。
- 它只在使用
i915驱动时工作;用mesa/gallium或fbdev会直接退出并报错 - 数值变化反映的是 Render/Blitter/Video 引擎是否忙,和实际瓦特无换算关系
- 想确认核显是否真在耗电,应结合
powertop的 “pkg” 行(CPU 封装总功耗)与空载基线对比,而非看intel_gpu_top的 Power 列
AMD GPU 能不能读真实功耗
目前没有稳定、通用的方案。ROCm 生态下部分 Zen 3+/Radeon RX 7000 系列可通过 rocm-smi --showpower 获取估算值,但它基于电压 × 电流查表反推,非硬件能量计数器直读。
- 需要内核 ≥6.2 且启用
amd_pmc模块:ls /sys/class/powercap/ | grep amd_pmc存在才可能支持 -
rocm-smi输出的 “Power Usage” 单位是 W,但文档明确标注为 “estimated”,实测偏差常达 ±25% - 开源 amdgpu 驱动不暴露能量接口,
lspci -vv -s $(lspci | grep VGA | awk '{print $1}') | grep -i power只能看到电源管理能力(如 D3hot),无功耗数值 - 别信
acpi -V或powerstat的整机功耗——它们无法区分 CPU/GPU/主板供电路径,对 GPU 功耗无参考价值
真正可靠的 GPU 功耗数据只来自厂商驱动暴露的硬件寄存器(NVIDIA)或 RAPL/PMC 接口(Intel/AMD),其他工具全是估算。如果你看到某个命令输出“功耗”却没说明数据来源,大概率是拿频率、温度、负载拼凑出来的经验公式——它能帮你判断进程是否吃电,但不能当计量依据。


















