Linux怎么查看系统的实时功耗 Linux下intel_gpu_top与powertop详解

阿婷同学_6074

阿婷同学_6074

2026-05-01

816人浏览

原创

linux下无法直接从/proc/cpuinfo获取cpu功耗;需用powertop(需校准)、rapl接口(如/sys/class/powercap/intel-rapl:package-0/energy_uj)或s-tui等工具估算,且仅intel较准确。

linux怎么查看系统的实时功耗 linux下intel_gpu_top与powertop详解

Linux 下没有统一的“系统实时功耗”读数,它不是像 CPU 使用率那样内建暴露的指标;你看到的数值要么来自硬件 RAPL 接口(Intel CPU/GPU)、要么是工具估算值(如 powertop),且多数仅对 Intel 平台可靠。AMD 和 ARM 架构支持有限或需额外内核配置。

intel_gpu_top 能看 GPU 功耗吗?

不能直接看功耗。intel_gpu_top 是 Intel 开源的 GPU 性能监控工具,专注显示 GPU 活动状态、频率、引擎占用率(Render/Blitter/Video),但不读取 RAPL 中的 GPU 域能量数据。

常见误判点:

  • 界面里显示的 “Power” 列其实是 GPU 引擎的 *相对负载强度*(0–100%),不是瓦特(W)
  • 它依赖 i915 驱动暴露的运行时统计,不访问 /sys/class/powercap/intel-rapl:*
  • 若系统用的是 modesetting 或 nouveau 驱动,intel_gpu_top 会直接报错退出

安装与基础用法(Debian/Ubuntu):

sudo apt-get install intel-gpu-tools
sudo intel_gpu_top -l 1  # 每秒刷新一次,输出单行摘要

powertop 显示的 “CPU Power” 是怎么算出来的?

powertop 的 “CPU Power” 数值(单位 W)是估算值,不是传感器直读。它结合了三类输入:

  • 从 /sys/class/powercap/intel-rapl:package-0/energy_uj 读取包级能量变化(需 root 权限、Intel CPU 支持 RAPL)
  • 用 cpupower frequency-info 获取当前频率和电压标称关系(查表估算动态功耗)
  • 根据进程唤醒次数、C-state 进入深度等做加权修正(这部分误差最大)

关键限制:

  • 在虚拟机中基本不可用(RAPL 通常被 hypervisor 屏蔽)
  • 如果系统禁用了 RAPL(如 BIOS 关闭 “Power Limit Control”),powertop 会 fallback 到纯频率估算,结果偏差可能超 ±40%
  • 首次运行必须校准:sudo powertop --calibrate,否则 “Power” 列显示为 0 或乱码

想看真实功耗,该读哪个 /sys 路径?

最接近“真实”的路径是 RAPL 接口,但它只存在于部分 Intel 处理器(Sandy Bridge 及更新),且需确认内核启用:

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
ls /sys/class/powercap/intel-rapl:*

若返回类似 intel-rapl:package-0、intel-rapl:package-0:0(GPU 域)、intel-rapl:package-0:1(DRAM 域),说明可用。

读取并计算实时功耗(以 package-0 为例):

read1=$(cat /sys/class/powercap/intel-rapl:package-0/energy_uj)
sleep 1
read2=$(cat /sys/class/powercap/intel-rapl:package-0/energy_uj)
echo "scale=3; ($read2 - $read1) / 1000000" | bc  # 输出单位:瓦特(W)

注意点:

  • 必须用 root 权限读取 energy_uj,普通用户会 Permission Denied
  • 值是累加的微焦耳(µJ),溢出后会归零(约 2^64 µJ ≈ 1.8×10¹⁰ J),所以差值不能跨太长时间
  • intel-rapl:package-0:0 在部分平台对应 GPU,但命名不统一,建议先 cat /sys/class/powercap/intel-rapl:*/name 确认

为什么 acpi -V 或 powerstat 显示的功耗和 powertop 差很多?

因为它们来源完全不同:

  • acpi -V 读的是电池驱动提供的 *整机供电功率估算*(仅笔记本),实际是电池放电电流 × 电压的粗略乘积,受电池老化、采样延迟影响大
  • powerstat 底层也调用 RAPL,但默认每 5 秒采样一次,且做滑动平均,响应慢、平滑掉瞬时峰值
  • powertop 默认每 1 秒刷新,且尝试补偿空闲功耗(如 USB 设备唤醒漏电),所以数值常比 powerstat 高 0.5–2W

真正要注意的不是“哪个更准”,而是:同一工具在相同条件下的趋势对比才有意义。比如调成 powersave governor 后 powertop 数值下降 30%,这个变化是可信的;但说 “powertop 显示 8.2W,所以我的 CPU 消耗就是 8.2W”,这就越界了。

RAPL 数据本身也有 ±5% 硬件误差,再加上内核驱动读取延迟、用户空间时间戳抖动,最终你拿到的“实时功耗”本质上是一个带误差边界的工程估算值,不是计量级测量。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6239

3

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.29

3025

6

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

3908

10

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.29

2705

10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4050

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3453

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2653

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6450

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6082

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习