ITシステムに求められる「Green」
ITシステムは業界を問わず多くの企業に導入され日々の業務で活用されています。サステナビリティ(持続可能性)という言葉が一般的になったことで、企業もそれに対する取り組みや成果を株主や顧客に公表するようになりました。ITや金融など企業活動の中で直接炭素排出をすることの少ない分野を中心にITシステムの炭素排出量を減らすことも議論され始めています。NTT DATAがステアリングメンバとして加入しているGreen Software Foundationでは、ITシステムの炭素排出量の評価基準(Software Carbon Intensity:SCI)を公開しており、その中で重視しているものの一つがIT機器の消費電力です。各機器の消費電力はそれに命令するソフトウェアの振る舞いによって変化するため、省電力な機器でソフトウェアを動かせるなら炭素排出量削減の大きな一歩となります。そこで私たちが着目したのがArmアーキテクチャです。
適用領域を広げるArmプロセッサ
Armアーキテクチャは、スマートフォンや組み込み機器など省電力が強く求められる分野で以前から多くの採用実績がありました。最近では理化学研究所のスーパーコンピュータ「富岳」をはじめとするHPC(High Performance Computing)やパブリッククラウドの仮想マシンインスタンスなど、その適用範囲を広げています。開発元のArm社はそういったサーバ向けプロセッサについても電力性能比の高さを強調しており、その根拠となる情報の中にはJavaアプリケーションのベンチマーク情報も含まれています。NTT DATAではJavaで開発したシステムを多くのお客さまにお使いいただいていますが、システムをGreenに動かすことができればお客さまのサステナビリティ実現にも貢献できます。そこで、Java製エンタープライズアプリケーションを対象にArmプロセッサの省電力効果を検証することにしました。
JavaアプリケーションにおけるArmプロセッサの省電力効果
題材としたアプリケーションはNTTグループのJava開発用フレームワークMacchinettaのサンプルアプリケーションATRSです。ATRSは航空券予約Webシステムを模したアプリケーションであり、その中の空席照会REST APIに負荷をかけた際の消費電力を測定しました。ArmサーバとIA(Intel Architecture)サーバでアプリケーションを実行しましたが、両サーバはCPUの整数演算スループットを示すSPECrate2017_int_baseスコアでほぼ同等の性能を持っています。OSはRocky Linux 8.7、JavaはOpenJDK 19.0.2を使用しました。測定結果は次の図のようになりました。
サーバでは主として対象アプリケーションのみが動いている状態にしたため、この消費電力の差は純粋にJavaアプリケーションを各サーバで動作させたときの差とみなせます。試験は15分間実施し、最初の5分間は負荷量を上げるためのランプアップ期間です。グラフ後半の定常状態の消費電力を比較すると、IAサーバが380W、Armサーバが240Wであり、ArmサーバはIAサーバに比べ37%(140W)の消費電力を削減できました。Javaはプログラムをプラットフォームに依存しない中間言語へコンパイルし、それをJVM(Java Virtual Machine:Java仮想マシン)で実行するアーキテクチャです。そのため、IAサーバとArmサーバで動かしたアプリケーションは、ソースコードが同じであるだけでなくバイナリレベルでもまったく同じものです。これはサーバのアーキテクチャを変えるだけでこれだけの消費電力を削減できることを示しています。
JVMには数多くの実行時オプションが用意されており、Javaの開発・運用を経験した方であればガベージコレクション(不要メモリの回収機能)などのチューニングでオプションを設定したことがある方も多いでしょう。上記の試験結果はそれらのオプションをまったく付与せず実行した場合のものです。本検証ではガベージコレクションに関するものなど様々なオプションの組み合わせも試しましたが、いずれの場合でもこの検証結果との有意な差は見られませんでした。この理由としてJVMがアプリケーションに対し最適化を十分に実施できていることが考えられます。近年OpenJDKの開発コミュニティではArmへの対応や改善が行われており、新たな命令セットへの追従にも積極的です。NTT DATAでもArm向けのパッチをOpenJDKへ提出し受け入れられていますが、今後もOpenJDKの開発においてArmは大きなテーマとして取り組まれるでしょう。
今後の展望
グリーンなアプリケーションという言葉からはアルゴリズムなどソフトウェア面での処理効率向上による省電力化がまず思い浮かびますが、プログラムはハードウェアで実行されるものであるため、ITシステムのグリーン化を考える際はハードウェアの電力効率も考えなければなりません。ArmサーバがJavaアプリケーションで省電力化が見込めることは本検証で明らかになりましたが、他のソフトウェアやツール(ランタイムやコンパイラを含む)の場合、Armに対する実装成熟度が大きな課題となります。アーキテクチャが異なれば最適化の考え方や手法も異なるからです。対象アプリケーションをArm上で実行しても性能に問題がないのか、Armに最適化されているのかは省電力効果とは別に評価する必要があるでしょう。
一方、オープンソースソフトウェアではArmに対応したものが時間とともにより多くなっており、デプロイ方式として近年活用が進んでいるコンテナ形式においてもそのイメージをIA用とArm用の2種類を配布するものが増えています。今後もオンプレミス・クラウド関係なくArmが主要なアーキテクチャの1つとなるでしょう。
最後に、本検証はヒューレット・パッカード エンタープライズ(HPE)社のArmサーバRL300にて実施しました。本検証の詳細に加え事例としてCPU単体の検証結果なども掲載されていますので、ぜひそちらもご覧ください。
https://www.hpe.com/jp/ja/customer-case-studies/servers-proliant-nttdata.html
NTTデータの環境負荷低減に関する取り組みはこちら
https://www.nttdata.com/global/ja/sustainability/environment/