粗略估计计算机的能耗。

粗略估计计算机的能耗。

我正在开发一款需要了解计算机能耗的应用程序(在 Windows 上)。我意识到操作系统没有直接支持此功能的功能,所以我的解决方法是收集有关所有硬件设备的信息并汇总它们消耗的能量,我找到了类似这样的数据库eXtreme 电源计算器但他们没有我可以使用的任何 API。您对如何实现这一点有什么建议吗?有开源软件吗?

因为我的应用程序主要在笔记本电脑上运行,所以我想根据笔记本电脑型号进行粗略估计,但我找不到保存此类信息的数据库,有什么想法吗?谢谢

答案1

这是一项不可能完成的任务,功耗会因系统负载和省电设置而有很大差异。例如,在我的工作站上,根据我的 APC SmartUPS,空闲时功耗约为 300 瓦,满载时功耗约为 900 瓦。虽然笔记本电脑在比较绝对数字时不会那么极端,但相对而言,空闲和满载之间的功耗仍然很大。

为了证明这是多么无用,我尝试将我的系统输入到您链接的 eXtreme 电源计算器的“专家”模式中。它低估了负载约 100 瓦。令人惊讶的是,它认为我的峰值负载将根据我每天使用电脑的时间长短而变化。

空闲时功耗 空闲时功耗

负载下的功耗(忘记加载硬盘) 在此处输入图片描述

答案2

看看Win32_PowerMeter位于root\CIMV2\power命名空间中的 WMI 类。此命名空间包含许多与电源管理和配置文件相关的其他类和事件。

有关使用此类的示例,请参阅开源电源排水小工具小工具(使用 ActiveX 对象)。有关 VBScript 示例,请参阅. 有关 C# 示例,请参阅

答案3

笔记本电脑通常提供 ACPI 接口来连接电池,您可以使用它。您将特别关注第 10.2.2.6 章中描述的“电池状态”对象ACPI 规范

_BST returns a package in the format below

Package { 
 Battery State                    // Integer (DWORD)
 Battery Present Rate             // Integer (DWORD)
 Battery Remaining Capacity       // Integer (DWORD)
 Battery Present Voltage          // Integer (DWORD)
}

Battery Present Rate通常是以 mW 为单位的功率值或以 mA 为单位的电流值(您必须将其乘以Battery Present Voltage才能获得功率值)。当然,还有更多 ACPI 值可供探索(包括电源的电流和电压测量),但这些值可能并非在所有系统上都实现。安装系统信息查看器并查看Machine->Battery以了解它。或者,如果您恰好是 Linux 用户,请查看/sys/class/power_supply目录。

您将需要学习如何使用您所使用的任何编程语言和框架在 Windows 上进行 ACPI 调用。这篇 MSDN 文章可能是一个好的开始。

相关内容