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

Posted

技术标签:

【中文标题】如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦​​特)?【英文标题】:how to meter power(watt) of PC components(cpu,memory,disk,etc) in real time? 【发布时间】:2015-07-27 13:40:08 【问题描述】:

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

我在使用aida64时,发现在computer/sensor中,有一些关于功耗的数据。我想知道它是如何获取这些数据的?

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

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

    根据不同的操作系统,我们有一些API可以获取cpu的使用率、内存吞吐率和磁盘I/O率。使用这些数据,我们可以构建关于 PC 的功耗模式。如果有这些 API,我在哪里可以找到它们?

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

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

更重要的是,我们的目标是设计一个独立于操作系统的实时电力监控软件。所以,如果这个问题有更好的解决方案,我会很感激你的帮助。

【问题讨论】:

独立于操作系统的电源监视器?如果您能在任何没有专用的专用功率测量硬件的 PC 上做到这一点,我会感到非常惊讶。 software.intel.com/en-us/articles/intel-power-gadget-20 我们只是想建立不同的模型来估计机器的功率。我们会忽略一些不重要的组件。 【参考方案1】:

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

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

您能做的最好的事情就是从较低层中抽象出显示器的顶层。然后顶部变得独立于操作系统/硬件,而较低的层次需要依赖于平台。

查看PAPI APIs。请注意,这些 API 似乎为您提供了世界,但实际上只是一个 API 集。仍然需要有人来实现 API 另一端的功能。

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

【讨论】:

感谢您的回答。我认为较低级别需要依赖于平台是正确的方法。

以上是关于如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦​​特)?的主要内容,如果未能解决你的问题,请参考以下文章

nmon+nmon analyser安装使用教程

用于测量磁盘 i/o 等的 Linux 工具

如何利用snmp查询centos系统cpu,磁盘,内存,等系统信息

一个Window/Linux(Fedora测试平台)的CPU,磁盘,内存,PC,进程相关信息采集功能

性能测试三十:监控之CPU内存磁盘,命令监控

服务器运行特点