在命令行上返回当前瓦特消耗的值

ple*_* me 33 power-management

有没有办法在命令行上返回当前的瓦特消耗?我发现了 powertop 程序,但还没有看到将瓦特消耗作为值返回到命令行的方法。我在想一些我可以的文件catgrep.

Mar*_*rco 25

在我的系统上,我可以从电池中获取电力

cat /sys/class/power_supply/BAT0/power_now
9616000
Run Code Online (Sandbox Code Playgroud)

在 Thinkpad 上,如果tp_smapi模块已加载,则文件为

cat /sys/devices/platform/smapi/BAT0/power_now
Run Code Online (Sandbox Code Playgroud)

不过,该值似乎以 µW 为单位。您可以使用任何您熟悉的工具对其进行转换,例如awk

awk '{print $1*10^-6 " W"}' /sys/class/power_supply/BAT0/power_now
9.616 W
Run Code Online (Sandbox Code Playgroud)

如果您在 sysfs 文件系统中找不到该位置,您可以搜索它:

find /sys -type f -name power_now 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

此外,该包lm-sensors可用于确定某些机器上的系统电源使用情况:

# sensors power_meter-acpi-0
power_meter-acpi-0
Adapter: ACPI interface
power1:      339.00 W  (interval =   1.00 s)
Run Code Online (Sandbox Code Playgroud)

  • 我没有“power_now”文件,但有“current_now”(微安)和“Voltage_now”(微伏),必须将其相乘才能获得功率(linux 5.9.14)。文档:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power (4认同)

小智 9

我的笔记本电脑没有这些(目前也没有电池),但它有一个“powercap”设备。
这个设备似乎能够对用户功率进行限制。

并且它(自然地)可以读取功率消耗以强制执行它们。
功率消耗可以在energy_uj文件中找到,即:

cat /sys/class/powercap/*/energy_uj
Run Code Online (Sandbox Code Playgroud)

它将以微焦耳显示讲座(或讲座,如果您有许多 powercap 设备)。这实际上是消耗能量的计数器,因此您需要将其除以时间增量才能获得功率。

这是我的笔记本电脑汲取的能量,还是它的一部分?我不知道。

  • @Freefri 您读取了该值,等待 1 秒,再次读取该值。1 秒是您的增量。(Energy_now-Energy_one_second_ago) / 1 秒 = 每秒消耗的焦耳(或瓦特,1 瓦 = 1 焦耳 / 1 秒) (2认同)
  • @mabalenk:有一个给出名称的“name”值,除此之外,人们似乎还必须研究 RAPL 才能理解它们的含义。RAPL 似乎将其测量分为 [package、core、uncore 和可选 dram](https://blog.chih.me/read-cpu-power-with-RAPL.html)。据我了解,包应该包括核心和非核心,但尽管有[分层布局](https://www.kernel.org/doc/html/latest/power/powercap/powercap.html),我不确定DRAM。 (2认同)
  • 我创建了一个脚本,使用此处显示的“powercap”功能来总结当前的功耗。您可以在此要点中找到它:https://gist.github.com/guss77/c91e1d6583fad5b5c917eafc345cb81b (2认同)

pet*_*rph 6

在笔记本电脑上通过从 procfs 或 sysfs 读取 ACPI 数据。在我的系统上,文件是:

/proc/acpi/battery/BAT0/state
/sys/bus/acpi/drivers/battery/PNP0C0A:00/power_supply/BAT0/power_now
Run Code Online (Sandbox Code Playgroud)

请注意,sysfs 是大量符号链接的,因此有很多方法可以访问该文件。power_now是您要查找的文件名。


adi*_*141 5

sudo tlp-stat -b
Run Code Online (Sandbox Code Playgroud)

它将以毫瓦为单位显示当前的功耗。

--- TLP 1.1 --------------------------------------------

+++ Battery Status
/sys/class/power_supply/BAT1/manufacturer                   = SANYO
/sys/class/power_supply/BAT1/model_name                     = L12S3F01
/sys/class/power_supply/BAT1/cycle_count                    =     16
/sys/class/power_supply/BAT1/energy_full_design             =  32560 [mWh]
/sys/class/power_supply/BAT1/energy_full                    =  16180 [mWh]
/sys/class/power_supply/BAT1/energy_now                     =  16090 [mWh]
/sys/class/power_supply/BAT1/power_now                      =      0 [mW]
/sys/class/power_supply/BAT1/status                         = Unknown

Charge                                                      =   99.4 [%]
Capacity                                                    =   49.7 [%]
Run Code Online (Sandbox Code Playgroud)