← 最新论文
💻 计算机科学

From Code-Level Change to CI/CD Feedback: Empirical Validation of an Energy-Aware Software Framework

本研究通过证明代码级干预、CI/CD 能量测量以及回归检测能够作为一个凝聚的反馈循环,共同识别并定位真实世界 Spring Boot 应用程序中的能量低效问题,从而实证验证了一个集成的能源感知软件框架。

原作者: Muhammad Asif Khan, Mbanyick Joof, Shola Oyedeji, Jari Porras

发布于 2026-11-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Muhammad Asif Khan, Mbanyick Joof, Shola Oyedeji, Jari Porras

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 ✨ 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在现代世界中,软件运行在从我们口袋里的手机到驱动互联网的海量数据中心等各种设备上。虽然我们通常认为能源消耗是硬件方面的问题——即服务器或电池消耗了多少电量——但软件本身也发挥着巨大的作用。正如两条通往同一目的地的不同路线可能会耗费不同的时间和燃料一样,两段执行相同任务的不同代码所消耗的电量也可能大相径庭。当这些软件每天运行数百万次时,这些微小的差异就会累积成显著的成本和碳排放。长期以来,开发人员面临的挑战在于这种能源成本是不可见的。当程序员编写代码时,他们能立即收到关于代码是否运行正确或运行速度有多快的反馈,但他们无法收到任何信号来告知其改动是让软件变得更节能还是更耗能。这种差距意味着低效的代码往往会在不被察觉的情况下进入生产环境,从而持续浪费能源。

芬兰拉普恩塔-拉赫蒂理工大学的一支研究小组致力于在开发人员日常使用的工具中,将这种不可见的能源消耗变得可见。他们测试了一个旨在建立反馈循环的系统,该系统连接了三个截然不同的步骤:对代码进行更改、自动测量该更改产生的能量,以及将任何能量使用量的增加标记为失败(就像检查程序漏洞的测试一样)。为了验证这在现实世界中是否可行,他们将该系统应用于两个开源软件应用程序和一个标准的自动化测试流水线。他们不仅提出了一个新想法,还构建了它、运行了它并测量了结果。他们的工作证明,在开发人员提交更改的瞬间,捕捉到能源浪费是可能的,并且能够区分代码中的真实问题与在共享基础设施上运行时发生的正常且无害的波动。

研究人员首先测试了特定的代码更改是否可以被测量以显示出能源使用的差异。他们选择了两个知名的软件应用程序,并分别引入了针对性的改动。在第一个应用程序中,他们删除了一个冗余步骤,即软件重复两次向数据库查询相同信息的操作。在第二个应用程序中,他们重新组织了软件检索文章的方式,将重复的步骤合并为一个单一、更简洁的过程。随后,他们在专用机器上为每个版本的软件各运行了二十次测试套件——原版代码运行十次,新版代码运行十次——以确保比较的公平性。结果非常明确。第一个应用程序的总能耗降低了约 8%,而第二个应用程序的能耗降低了超过 21%。至关重要的是,研究人员发现这些节省主要源于软件更快地完成了任务,而不是因为在任何特定时刻消耗的功率更低。这种区别至关重要:代码仅仅是更高效地快速完成了工作,从而自然而然地降低了总能耗。

在证明了代码改动是可以被测量的之后,团队转向了下一个挑战:将这种测量集成到实时的自动化工作流中。他们构建了一个在开发人员提交新代码时运行的流水线,这个过程被称为持续集成。该系统在两个层面测量能量:首先,它观察整个测试套件的整体情况;其次,它测量单个请求(例如单次搜索或单次数据检索)的能量,以精确了解能量是在哪里被消耗的。他们发现,在用于这些测试的共享计算机上,能量读数表现得非常稳定。运行之间的自然波动足够小,使得系统可以可靠地分辨出正常的噪声与真实的问题。这种稳定性使得系统能够建立一个基准(即正常性能的标准),并将每一段新代码与之进行对比。

最后的测试是观察该系统是否能捕捉到错误。研究人员故意在代码中注入了两类浪费能源的错误,以观察流水线是否会对其进行标记。在一种场景中,他们修改了代码,使其不再一次性获取所有信息,而是逐一向数据库请求信息——这是一种会导致巨大低效的常见错误。在另一种场景中,他们在软件的特定部分添加了沉重的计算任务。系统的表现完全符合预期。当错误影响整个系统时,流水线会将整个构建过程标记为失败。当错误仅局限于软件的几个特定功能时,系统准确地识别出了这些特定功能存在问题,同时让软件的其他部分通过测试。这种精准定位浪费位置的能力使得该方法对开发人员而言具有实际意义,因为它能明确告诉他们需要修复哪里。

该研究还强调了使用此类系统的实际情况。由于运行这些测试的计算机是会随时间变化的共享资源,系统需要一种调整标准的方法。研究人员发现,如果底层硬件发生变化,能量读数会发生剧烈偏移,从而可能导致误报。为了解决这个问题,他们的系统包含了一个机制,每当代码成功合并时,会自动重新校准其基准,从而确保标准始终反映当前的运行环境。这防止了系统仅仅因为运行代码的计算机发生了变化而拦截掉优秀的程序。研究人员指出,虽然系统在受控测试中表现良好,但他们发现的具体数值(如 8% 或 21% 的降幅)取决于具体的应用程序和代码改动的类型。他们并非声称每一次代码改动都能节省这么多能量,而是强调这种测量和标记这些改动的方法是可行的。

最终,这项研究提供了一个概念验证,证明能源效率可以像检查漏洞或性能速度一样,成为一种常规的质量检查手段。通过在开发工作流中使能源消耗变得可见且可操作,该系统使开发人员能够在代码发布前做出明智的决策。研究证实,这三个技术组件——测量代码、将数据集成到流水线中以及检测性能退化——可以作为一个单一的循环协同工作。尽管研究人员承认,能否被广泛采用仍需进一步评估开发人员对这些信号的反应,但其核心结论是坚实的:建立一个能够实时捕捉能源浪费的系统是完全可能的,这能将一个隐形的难题转化为软件创建过程中一个可控的部分。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →