Esteban Ginez
技術スタッフ主要メンバー
GraalVMは汎用の仮想マシンであり、あらゆるプログラミング言語向けに高いパフォーマンスと完全な相互運用性を発揮するように作られています。
Oracle Cloud Infrastructureの多くのチームが、自チームのサービスをGraalVMイメージ上で運用することでパフォーマンスが向上したことを確認しています。Oracle Cloud InfrastructureのMonitoringサービスは先日GraalVMへの移行を完了し、現在は本番環境で運用されています。
MonitoringはOracle Cloud Infrastructure内部の基本サービスです。内部の全チームが、担当するサービスの健全性を監視するためにこのサービスを利用しています。Monitoringはメモリを大量に消費するアプリケーションで、Java Native Interface(JNI)呼び出しを非常によく利用します。Monitoringサービスはアプリケーションに対して、ホストやアプリケーションのメトリックの収集と操作、アラーム生成、通知のためのREST APIを提供しています。このサービスは、Oracle Cloud Infrastructureのすべてのサービスを起点とする数千万のデータ・ポイントを常時処理しています。また、Oracle Cloud Infrastructureのどこからでも利用でき、数十億件のメトリックを取り込んで数百万件のリクエストを処理しています。
GraalVM Enterprise Edition version 19.1コンパイラの最適化によってオブジェクトの割当て件数が減少し、全体的な実行スピードが改善しました。その結果、ガベージ・コレクションによる一時停止回数が減り、より少ない処理能力でワークロードを実行できるようになりました。Monitoringサービスが消費するCPUは全体で5 %減少し、さらにスループットが向上し、ガベージ・コレクションやその他のシステム・アクティビティにかかる時間も大幅に短縮されました。それぞれについて、以降のセクションで説明します。
Java 8 update 212と比較して、Monitoringサービスのガベージ・コレクションの処理時間は25 %少なく、アプリケーションの一時停止時間も17 %少なくなりました。アプリケーションの一時停止時間の減少について、以下のグラフに示します。
Monitoringサービスに対するGraalVMの最適化によって、以下のグラフのとおり、Java 8 update 212と比較して1秒あたりトランザクション件数が10 %増加しました。
MonitoringサービスのGraalVMへの移行プロセスはシンプルで透過的に行われました。サービスのコードとJVM構成を変更することなく、切り替えを実行できました。
結論として、幅広いケースやさまざまな負荷状況下で、GraalVMはJava 8 update 212よりも高いパフォーマンスを発揮します。Monitoringサービスはそのメリットを得られた格好の例と言えます。
Oracle Cloud InfrastructureはGraalVM Enterprise Editionを無償で提供しています。ぜひ実際にお試しいただき、Javaワークロードのパフォーマンス向上を体験してください。
※本記事は、Esteban Ginez (PRINCIPAL MEMBER OF TECHNICAL STAFF) による”GraalVM Powers Oracle Cloud Infrastructure“を翻訳したものです。