是否可以/轻松确定程序使用多少功率?

时间:2014-01-03 15:51:10

标签: profiler energy

是否可以确定甚至合理估算程序使用的功率?我们的想法是根据功耗而不仅仅是典型的性能来分析我的代码。

是否足以衡量CPU使用率,GPU使用率和内存访问量?

2 个答案:

答案 0 :(得分:3)

有许多方面会影响应用程序的功耗,这些方面会因使用的硬件而有很大差异。

获得想法的最简单方法是measure it。如果你的程序正在进行繁重的计算,那么测量差异就非常简单了。只需在应用程序运行时读出使用情况,然后减去使用情况。

如果您的应用程序不是那么重的计算类型,那么挑战就会更大,因为简单的1点时间比较将无法解决问题。您可以获得一个可以记录一段时间使用情况的测量设备,您需要将该日志与计算机的已记录流程活动进行比较,并尝试过滤所有其他计划任务(检查更新等)。

如果您想这样做,只需提示,APC的UPS内置此功能,PowerChute软件在Access数据库中存储功耗日志(C:\ Program Files \ APC \ PowerChute个人版\ EnergyLog.mdb)。我不确定这是否适用于所有型号,但这是我的一个很好的额外功能(Pro 550)。我会将数据与Xperf trace(Windows中的免费内置分析器,look here for an overview)放在一起,以便将功率变化与您的应用程序活动相关联,并过滤掉预定的作业等......

那就是说,记住你会在不同的硬件上得到不同的结果。 ssd与传统硬盘不同,使用的grafix适配器也可以产生差异,因此您只能通过测量“典型”系统来获得整体粗略估计。桌面系统将消耗比笔记本电脑更多的东西......(另见this blogpost)。

功耗分析工具对移动设备来说更常见。我不是那个领域的专家,但我知道那里有很多tools

答案 1 :(得分:1)

有一个项目可以让你在Linux上获取PID给定程序的功耗,不需要硬件:scaphandre

有了它,您可以创建 grafana 仪表板来跟踪给定项目从一个版本到另一个版本的功耗。示例可见here