BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース データセンタ中に拡がるJVMとTwitterのJDK

データセンタ中に拡がるJVMとTwitterのJDK

原文(投稿日:2016/11/08)へのリンク

QConSF2016のSponsored Solutionsトラックの呼び物はTwitteによる講演だ。同社のJVMチームは昨日,OpenJDKのフォークをベースとした独自のJDKディストリビューションの開発とリリース,メンテナンスの成果を発表した。現時点ではOSXとLinuxをサポートし,毎月1回のスケジュールで,緊急時にはさらに短い間隔でリリースされている。TwitterのJohn Commes氏は,OpenJDKをフォークした同社のアプローチについて,OpenJDKから分離した機能セットであるOracle-JDKとの類似性を指摘している。OpenJDKの変更をソースとする上流の変更について,Twitterとしてどの程度マージする意思があるのかを尋ねたところ,Coomes氏の回答は,リリースする機能セットにもよるが,OpenJDKマスタとの密結合を維持することは必ずしも同社の戦略の一部ではない,というものだった。

Coomes氏が言及したTwitter-JDKの新機能は,ヒーププロファイリングの拡張,非同期ガベージコレクション(GC)のログ,バイナリログフレームワークのContrailG1の中間世代,APIとコマンドライン引数の追加,パフォーマンス改善とバグフィックスなどだ。実施される改良の可能な部分については,上流にもコントリビュートされる。

Coomes氏はJVMの既存の問題として,特にOpenJDKのGC停止時間の長さや,その他の長時間の停止を要する場合を指摘している。そのためのアプローチのひとつが,I/O集約型で遅延の影響を受けやすいジョブを分離することだ。しかしながら,数千というTwitterのサービスの大部分がScalaとJavaで動作しているため,これは大変な作業になる。セーフポイント中はJVM I/Oをオフにすることが可能だが,これはJVMの監視能力の低下につながる。Coomes氏は,TwitterでのJVMベースのサービスが今後増加する一方であるという予測から,Pythonベースのサービスを非推奨とし,JVMベースの言語に移行するべきだと指摘する。Twitter-JDKはこれらの問題に対して,非同期GCログとjvmstatを実装することで対処している。この結果として,I/Oブロックが起きることはなくなった。Coomes氏は,JITコンパイラとランタイム,スタックトレースをサポートした非同期GCログのユーティリティであるContrailについて,将来的にリリースする可能性があると述べている。Twitter-JVMのチューニングではBayesian最適化を実装している。これは機械学習のテクニックを取り入れたもので,潜在的に問題となるコスト関数(cost function)をJVMが反復的かつ効率的に学習することにより,最適な処理経路を短時間で決定可能にする。

Twitter-JDKのVMでチューニングすべきパラメータを決定するという点について,Coomes氏は,対象となるパラメータは30あまりにも及ぶため,最適化の選択は科学的に行なう必要がある,と指摘している。VMのパフォーマンス測定に使用するコスト関数は,GCが消費した実時間に対する秒あたりの要求数である。Twitterでは,30のパラメータに対する70サイクルの最小反復テストで新VMを実行した結果として,182パーセントのパフォーマンス改善を報告している。今後はストレステストや赤線引き(red-lining),長期間の試験,Mesosによるコンカレント試験を実施するとともに,パフォーマンスの低い実験の早期検出と終了を行なう予定だ。

この記事を評価

関連性
スタイル

この記事に星をつける

おすすめ度
スタイル

BT