我试图提出一个启发式方法,以估计一个过程或线程在两个时间点之间消耗的能量(例如,在焦耳中)。这是在PC上(Linux/X86),而不是移动性的,因此统计数据将用于比较花费类似壁通路时间的计算的相对能效。

这个想法是收集或采样硬件统计数据,例如自行车计数器,P/C状态或动态频率,总线访问等,并提出合理的测量之间的能源使用公式。我要问的是这是否可能,以及这个公式可能是什么样的。

想到的一些挑战:1)正确考虑上下文切换到其他过程(或线程)。

2)正确考虑了CPU之外使用的能量。如果我们假设I/O可以忽略不计,则意味着主要是RAM。分配金额和/或访问模式如何影响能源使用? (也就是说,假设我有一种方法可以从修改后的分配器开始,例如,例如,以例如,例如,通过修改后的分配器。)

3)使用CPU时间作为估计,仅限于粗粒和经常会计,CPU Energy使用 只要, 并假定固定时钟频率。它包括但不能很好地解释等待RAM的时间。

有帮助吗?

解决方案

您也许可以获得流程功耗的数字,但这只会孤立地正确。例如,如果您并行运行两个过程,那么您不太可能以良好的准确性拟合直线。

这很难在嵌入式平台上完成,并完全分解了每个电压导轨,更不用说在PC上进行了一个数据点,即您的一个数据点是插座的瓦数。您需要衡量和牢记的事情:

  • 基本负载不是那么基础。一个系统闲置数秒钟的睡眠状态比没有一个。您是测量“深”睡眠还是闲置?您怎么知道您正在测量哪个?
  • 负载并不总是线性的。可变电压:某些组件根据负载和频率向上/向下移动电压。温度:这些天的两种方式都可以进行(不仅仅是热失控)。
  • 电源在所有负载方面都不相同。如果您要测量出口瓦数,则需要记住这一点。例如,它的效率可能低于100W低于100W,从100-300W和下降到80%300W+。
  • 其他过程不一定会线性添加。例如,一旦DDR闲置,其基本负载就会增加,但是其他过程不会使情况变得更糟。对于多个内核和可变频率,这甚至更加不可预测。

测量它的基本方法是明显的方法:闲置中的瓦特记录数,使用的瓦特记录数,减去。您可以尝试以50%的占空比,25%,75%等的方式运行,以绘制漂亮的图(线性或其他方式)。这将显示任何非线性。不幸的是,CPU调节器和PSU的转换效率与负载将是主要原因。如果不拥有您正在玩的主板的开发版本(不太可能),或者如果您幸运地拥有具有效率与负载图的PSU,那么您无能为力消除这种情况。

但是,重要的是要意识到这些数据点仅正确 隔离中. 。您可以在模拟系统中如何总结一下建模,但要非常好的工作,但要非常意识到它充其量只是一个好的近似值。认为这相当于查看音频编解码器的某些C代码并估算其运行速度。您可以得到一个很好的总体想法,但是在现实中衡量时会非常不准确。

编辑 - 扩展一点,因为以上并没有真正回答您的方式 可能 去吧。

测量功耗:让自己获得准确的瓦计仪。正如我提到的那样,除非您有办法打破单个电压导轨并测量电流,否则您唯一可以进行的测量是在出口上。另外,如果您可以访问主板上的健康监控状态,并且具有当前(AMPS)报告(稀有),则可以为您提供良好的准确性和快速的响应时间。

因此,测量基础瓦数 - 选择您认为“基础”的任何情况。进行测试,并测量“峰值”。减去,完成。是的,这很明显。如果您的差异很小,以至于在噪音中会丢失,则可以尝试随着时间的推移测量能量使用(例如kwh)。尝试在闲置的情况下,在一个小时内测量一个小时,而您的流程则平坦,并查看总能量差。对于要执行的所有类型的测试,重复类似。

对于重型CPU,DDR和GPU用户,您将获得明显的瓦数差异。你 可能 请注意,如果您谨慎地注意,L1 vs L2 VS L2 VS DDR约束算法之间的区别(DDR使用更多的功率),请注意L1/L2约束算法的运行速度更快 - 您需要考虑使用“任务”不连续的能量力量。你可能 惯于 注意硬盘访问(实际上只是一两瓦,并且在PC中的噪音中丢失了)。值得记录的一个额外数据点是,如果您使用100毫秒左右的任务,使用1%的CPU,“基本”负载增加了多少。这基本上就是非深袖口闲置的样子。 (这是一个黑客,100ms是一个猜测)

请注意,如果您有一个启用频率更改策略的CPU,则1%可能与另一个时间不同。

决赛 大的 注意:当然是 活力 您应该衡量,就像标题为问题一样。犯有一个任务的功耗与另一个任务的功耗并得出一个更昂贵的错误,这是非常容易的……如果您忘记了它们的相对性能。例如,不良技术记者基准测试硬盘与SSD的情况总是发生。

在嵌入式平台上,在许多轨道上进行了当前监视,我每指示都对纳米朱尔进行了测量。由于许多任务共享了很多负载,因此仍然很难考虑到线程/过程的能源使用情况,并且可以增加/减小其时间效果。在PC上,我不确定您是否会像那样获得精细的粒度:)

其他提示

这是正在进行的研究的主题。因此,不要指望任何明确的答案。您可能会发现一些有趣的出版物例如:

  • Chunling Hu,Daniel A.Jiménez和Ulrich Kremer, 有效的程序能力行为表征, ,2007年国际高性能嵌入式建筑与编译器会议论文集(HIPEAC-2007),第183---197页,2007年1月。((PDF)

  • 亚当·刘易斯(Adam Lewis),Soumik Ghosh和N.-F。 Tzeng, 基于服务器系统中工作量的运行时间能源消耗估算, ,USENIX 2008,电源意识计算和系统研讨会(html PDF)

但是您可以轻松地找到更多的使用 谷歌学术Citeseer.

在Linux上,尝试 POWERTOP 效用。但是,它没有计算焦耳中的绝对值,而是专注于各种系统组件之间的相对功率使用。

英特尔的 节能软件指南 有许多有用的信息,包括与他们自己的链接 应用能源工具包。 包括...

2)应用程序能量图形工具

应用程序能量图形工具是一种交互式工具,可以随着时间的推移测量应用程序的电池功率消耗,并记录和绘制所得数据。

应用程序开发人员可以使用应用程序能量图形工具来帮助他们设计可在移动计算机系统上保留电池电量的应用程序。

AMD UPROF - 每个OS过程为每个过程提供绝对能量(MJ)单位。

英特尔平台电源估计工具(IPPET) - 每个过程具有绝对能量(MWH)单元的原型。

Intel SocWatch(Intel System Studio的一部分) - 具有许多低级指标,但每个过程没有绝对能量(MWH/MJ)单位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top