如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦​​特)?

how to meter power(watt) of PC components(cpu,memory,disk,etc) in real time?

如问题所述,我想监控某些组件消耗的功率(瓦​​特)值。尤其是 CPU、内存和磁盘的值。

我在使用aida64的时候,发现在computer/sensor里面有一些关于功耗的数据。我想知道它是怎么得到这些数据的?

我已经有了一些想法,但不确定哪个是解决这个问题的最佳方法:

  1. 主板上有一些传感器,我们可以使用这些传感器的值来计算实时功率。

  2. 根据OS的不同,我们有一些API可以得到cpu的利用率,内存吞吐率和磁盘I/O速度 。使用这些数据,我们可以建立关于 PC.if 的功耗模式 有那些 API,我在哪里可以找到它们

  3. 可能像intel这样的硬件厂商已经实时记录了power的值,他们把这个值放到了硬件的某个特殊寄存器中。我们可以通过映射到特殊的内存位置来获取值。

在我看来,第二种方式可能是大多数监控软件使用的解决方案。但我不知道在哪里可以得到这些 API。

此外,我们的目标是设计一个OS独立的实时电力监控软件。所以,如果这个问题有更好的解决方案,我将不胜感激。

嗯。我不确定我是否应该 post 这作为评论或答案。这是一个答案,但是否定的。

此时,您无法创建 OS 独立的基于软件的非侵入式电源监视器。所谓非侵入式,我的意思是您没有在主板和其他硬件上放置特殊仪器。这是因为现代处理器使用的电源技术在快速变化,每一代都取得了重大进步。此外,随着越来越多的硅空间变得可用,从硬件(通过 PMU 事件等)可供软件使用的功率相关信息量也在不断增加。例如,我相信在大多数当前的处理器中,您可以获得处理器芯片关键部分的直接热信息,以及核心和非核心各个部分的温度、功率和电流读数。

你能做的最好的事情就是从较低的层中抽象出监视器的顶层。然后顶层变得 OS / HW 独立,而较低层需要依赖于平台。

查看 PAPI APIs。请注意,API 似乎为您提供了整个世界,但实际上只是一个 API 集。仍然需要有人实施 API.

另一边的内容

现在,如果您可以做自己的特殊仪器,许多(大多数?)主板和其他硬件都有测量点(有些未记录),可以提供热量、电流(以及功率)信息。此信息对于调试设备和平台很重要。