【问题标题】:Is it possible to measure software energy consumption with RAPL?是否可以使用 RAPL 测量软件能耗?
【发布时间】:2020-02-05 22:42:05
【问题描述】:

我已在各种不同的网站上阅读了有关 RAPL(运行平均功率限制)的信息,但我仍在寻找答案。我读到RAPL可以测量CPU能耗,或者整个系统的功耗。

但是,我的问题是:如果我有一段用某种语言编写的代码,例如用 C 编写的 MergeSort,我可以使用 RAPL 来衡量它的能耗吗?像 jRAPL 这样的东西可以做,但不仅仅是 Java。如果是,我该怎么做?

【问题讨论】:

    标签: performance energy consumption


    【解决方案1】:

    这里是post,介绍如何获取不同系统的能量测量值。 这里的一些工具比其他工具更细粒度。就个人而言,我更喜欢使用Perf 从正在运行的应用程序收集能量测量值。 Perf 也使用 RAPL 接口,它对命令行用户很方便,但仅限于 Linux 发行版。使用 Perf,您可以通过以下方式测量任何类型的可执行文件:

    sudo perf stat -r 5 -e power/energy-cores/,power/energy-ram. ./executable
    

    上面将为您提供可执行文件的能耗输出(可以是任何用 Java、C、Python 等编写的程序)。 -r 5 表示它将运行测试 5 次以提供统计结果。但是,这将为您提供平均值而不是中值结果。除了energy-coresenergy-ram,您还可以从其他组件(例如处理器上的GPU)获得测量结果。 请注意,sudo 是必需的,因为 perf 正在从英特尔处理器中的机器特定寄存器收集测量值。如果您想避免每次都使用sudo,请事先运行以下命令:

    sudo sh -c 'echo -1 >/proc/sys/kernel/perf_event_paranoid'
    sudo sysctl -w kernel.perf_event_paranoid=-1
    

    虽然您可以使用 Perf 从许多 Linux 发行版中获取能量测量结果,但 Raspbian (Raspberry Pi) 尚不支持它。

    【讨论】:

      【解决方案2】:

      最近有一个项目允许这样做:https://github.com/hubblo-org/scaphandre

      他们还提供了一个示例仪表板,其中流程和服务消费被隔离:https://metrics.hubblo.org

      【讨论】:

        猜你喜欢
        • 2022-09-28
        • 2010-10-06
        • 1970-01-01
        • 2021-08-27
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        相关资源
        最近更新 更多