Concepts de base
CIパイプラインは、個々の実行ではエネルギー消費量が比較的少ないものの、頻繁な実行により、集積すると無視できないエネルギー消費量となり、持続可能なソフトウェア開発のためには、その影響を意識し、対策を講じる必要がある。
書誌情報
Perez, Q., Lefeuvre, R., Degueule, T., Barais, O., & Combemale, B. (2024). Software Frugality in an Accelerating World: the Case of Continuous Integration. arXiv preprint arXiv:2410.15816v1.
研究目的
本研究は、GitHubでホストされているJavaプロジェクトにおけるCIパイプラインのエネルギー消費を大規模に分析し、その環境への影響を明らかにすることを目的とする。
方法論
GitHub APIを用いて、スター数100以上のJavaプロジェクトから、GitHub Actionsワークフローとビルドマネージャー(GradleまたはMaven)を使用する396件のリポジトリを抽出。
抽出したリポジトリから838件のGitHubパイプラインを、測定用のサーバー上でローカルに実行し、電力計SmartWattsを用いてエネルギー消費量を測定。
各パイプラインの実行履歴をGitHub APIから取得し、実行回数とトリガーの種類を分析。
測定されたエネルギー消費量とCO2排出量を、地域別の電力使用によるCO2排出係数を用いて算出。
主な結果
個々のワークフロー実行の平均エネルギー消費量は10.2 Whと比較的低いが、実行回数を考慮すると、プロジェクトあたりの平均エネルギー消費量は22 kWhに達する。
パイプラインのトリガーイベントとして、プルリクエスト、プッシュイベント、スケジュールされたビルドが頻繁に使用されており、エネルギー消費量増加の一因となっている。
地域別のCO2排出係数を考慮すると、CIパイプラインのCO2排出量は地域によって大きく異なり、世界平均ではプロジェクトあたり平均10.5 kgのCO2が排出される。
結論
CIパイプラインのエネルギー消費量は、個々の実行ではわずかだが、頻繁な実行により集積すると無視できないレベルに達する。持続可能なソフトウェア開発のため、開発者はCIパイプラインのエネルギー消費量を意識し、実行回数を減らすなど、その影響を軽減する対策を講じる必要がある。
意義
本研究は、これまで見過ごされてきたCIパイプラインのエネルギー消費とその環境影響を明らかにした点で意義深い。ソフトウェア開発におけるエネルギー消費の可視化と削減に向けた取り組みを促進する上で重要な知見を提供している。
制約と今後の研究
本研究は、GitHubでホストされているJavaプロジェクトに限定して分析を行っており、他のプログラミング言語やプラットフォームにおけるCIパイプラインのエネルギー消費については今後の研究課題である。
データセンターのエネルギー効率は、一般的なサーバー機よりも高いため、実際のCI環境におけるエネルギー消費量は、本研究の結果よりも低い可能性がある。
今後は、CIパイプラインのエネルギー消費量を削減するための具体的な手法やツールの開発、開発者への意識向上に向けた取り組みが必要となる。
Stats
個々のワークフロー実行の平均エネルギー消費量は10.2 Wh。
100 Whを超えるエネルギーを消費するパイプラインは20件あり、最大で703 Whを消費する。
ワークフローあたりの平均実行回数は350回、中央値は113回。
プロジェクトあたりの平均エネルギー消費量は22,275.4 Wh。
フランスのCO2排出係数は68 gCO2/kWh。
ヨーロッパのCO2排出係数は251 gCO2/kWh。
アメリカのCO2排出係数は190 gCO2/kWh。
世界のCO2排出係数は475 gCO2/kWh。
プロジェクトあたりの平均CO2排出量は10.5 kg。