有没有可能确定甚至合理地估计一个程序使用了多少功率?我的想法是从功耗的角度来分析我的代码,而不仅仅是典型的性能。
它是否足以衡量CPU使用率、GPU使用率和内存访问?
发布于 2014-01-04 19:44:02
有许多方面可以影响应用程序的功耗,这些方面将根据所使用的硬件而变化很大。
获得一个想法的最简单的方法是measure it。如果您的程序正在进行繁重的计算,那么测量差异是非常简单的。只需在应用程序运行时读出使用情况,并在未运行时减去使用情况。
如果你的应用程序不是那种繁重的计算类型,那么挑战就会更大,因为简单的1个时间点比较不会起作用。你可以得到一个测量设备,它可以记录一段时间内的使用情况,你需要记录的日志与你机器上记录的进程活动进行比较,并尝试过滤掉所有其他计划的任务(检查更新等)。
如果您想这样做,只需提示一下,APC内置了此功能,PowerChute软件在Access数据库(C:\Program Files\APC\PowerChute Edition\EnergyLog.mdb)中存储功耗日志。我不确定这是否适用于所有型号,但这是我的(Pro 550)附带的一个很好的额外功能。我会将数据放在Xperf trace ( Windows,look here for an overview中的免费内置分析器)旁边,以便将电源变化与您的应用程序活动关联起来,并过滤出计划的作业等……
也就是说,记住你会在不同的硬件上得到不同的结果。ssd将不同于传统的硬盘,使用的grafix适配器也会有所不同,因此您只能通过在“典型”系统上进行测量来获得总体上的粗略估计。台式机系统将比笔记本电脑消耗更多,等等。(另请参阅this blogpost)。
功耗分析工具更常用于移动设备。我不是该领域的专家,但我知道有相当多的tools。
发布于 2021-01-11 19:40:02
有一个项目可以让你在Linux上获得给定PID程序的功耗,而不需要硬件:scaphandre
这样,您就可以创建grafana仪表板来跟踪从一个版本到另一个版本的给定项目的功耗。示例可以在here中看到。
https://stackoverflow.com/questions/20907535
复制相似问题