BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Microsoft、JVM GCログを活用するGCToolkitをオープンソースとして公開

Microsoft、JVM GCログを活用するGCToolkitをオープンソースとして公開

原文(投稿日:2021/09/01)へのリンク

MicrosoftのJavaエコシステムへの足跡が、その範囲を広げている。Java on AzureとMinecraftのサポートに始まり、Java仮想マシン(JVM)をよりアクセスしやすくし、Java開発者の開発エクスペリエンスを向上するために、さまざまなツールの開発が続けられてきた。このコレクションに加わった最新のものが、2021年8月に始められたGToolkitのオープンソース化だ。その名が示すように、Javaガベージコレクション(GC)ログファイルを調査し、個々のイベントを解析するためのライブラリセットで、ツールキットとデータ集約とのインタラクションを改善するAPIを公開する。これによりユーザは、JVMの管理対象メモリの状態を対象とした、任意の複素解析を行うことが可能になる。

APIの他に、パーザモジュールとVert.xモジュールという、2つのモジュールがある。パーザモジュールは、長年にわたって記述され続けてきた、入手可能な中で最も堅牢なGCログパーザと考えられている、正規表現のコレクションとコードをその基盤としている。Vert.xベースのメッセージバックエンドは2つのメッセージバスを使用する。ひとつはデータソースからのストリームデータで、現在の実装ではGCログファイルからのログ行をストリームする。このバスのコンシューマであるパーザは、データソースからのデータを、GCサイクルないしセーフポイントを表現するイベントに変換する。変換されたイベントは、第2のメッセージバスであるイベントバスに向けて発行される。イベントバスの購読者(subscriber)はこの通知を受け取って、自身に関係するイベントを処理することができる。

パーザは個別のJVMイベント(GCサイクルイベントあるいはセーフポイントイベント)を出力するので、それらのイベントからデータをキャプチャし、解析するコードの記述が可能である。GCログファイルデータのキャプチャと分析の便宜を図るため、GCToolkitでは、簡単なデータ集約フレームワークを提供している。キャプチャしたデータの種類、あるいは実行したい解析の種類は、ユーザの裁量に委ねられる。例えば、ヒープの占有率を分析する目的でpauseイベントをキャプチャするためには、アグリゲータ(aggregator)がイベントをキャプチャし、関連するデータを抽出して、それを集計処理に渡すようにする。これによってデータが、例えばガベージコレクション後のヒープ占有率のように、意味を持った分析結果として整理されるのである。結果データをグラフ化したり、テーブルなど可読性の高いフォーマットに変換することも可能だ。

さらに重要な点として、ガベージコレクションの設定が適切でない場合、アプリケーションが多くのCPUやメモリを必要とするようになり、結果的にエンドユーザのエクスペリエンスを損なうことが以前から知られていた。言い換えれば、チューニングの不備は多くの場合において、より高価なランタイムと同じであり、より多くの不幸なユーザと同じである、ということだ。ここで問題となるのが、GCを最適化するためには複数の関連事項のデリケートなバランスを取らねばならなず、それをツールの支援なしに行うのは容易ではない、という点である。GCToolkitはこれを簡単にするためのツールなのだ。

その中心にあるパーザモジュールは、長年にわたって書き続けられて、堅牢なGCログパーザを構成するに至った、正規表現とコードのコレクションである。

MicrosoftがJavaの世界に関心を広げるとともに、オープンソースもまた、Javaコミュニティに対するメリットへの注目を高めている。macOS M1への移植とArm版Windowへの移植に大きな貢献をしたMicrosoftは、その後、独自のOpenJDKビルドの発表に続いて、Eclipse Adoptium Working Group(旧名AdoptOpenJDLK)に参加するなど、OpenJDKに対する自身のコミットメントを改めて強調している。

GCToolkitをオープンソースにすることによって、Microsoftは、GCやメモリアロケーションに関するJVMの内部処理を詳細に可視化する、より優れた手段を提供しようとしている。可視性が向上することによって詳細な調整が可能になれば、アプリケーションのエンドユーザだけでなく、その作業を担当する技術者にとってもメリットがある。シンプルなAPIとヒューマンフレンドリな出力メカニズムは、データの分析、抽出、可視化を行うさまざまなメカニズムを提供することによって、GCログを読むという面倒な作業の改善を約束してくれる。

この記事に星をつける

おすすめ度
スタイル

BT