BT

FacebookはいかにしてHHVM JITコンパイラのパフォーマンスを改善したか

作者: Sergio De Simone , 翻訳者 小林 健一 投稿日 2016年10月27日 |

原文(投稿日:2016/10/06)へのリンク

2013年の夏,Facebookの技術者達は,HHVMJITコンパイラの再設計を開始した。 目標は,FacebookのWebサーバ上でのCPU使用率を15%低下させることである。 Facebookの技術者であるGuilherme Ottoni氏は,Profile-guided optimizations(PGO)をJITコンパイラに適用することにより,目標を達成したと記している

Profile-guided optimizationとは,実行時プロファイルを使用する技術である。 特定のコード片が他のコードより頻繁に実行されている,といった情報を利用しコード生成を改善する。 PGOは特に,動的な統合や,コンパイラと実行環境が統合されているJITコンパイラに適している。

Facebookの技術者達は,2つのゴールに注力した。 コンパイル時に行われる判断を最適化するためにプロファイル情報を利用すること。 そしてコンパイラが,型特有のコンパイル領域をより大きく認識できるように支援することである。 例えば,生成されたコードは,与えられた型によって最適化される。 これにより,型チェックのコストが減少する。 これを可能にするためには,HHVM JITコンパイラが(単なるトレースレット(tracelets)ではなく)任意のコード領域をどのように変換するかを学習する必要があった。 トレースレットは,型特有のブロックとしては基本的であり,各々独立してマシンコードに変換される。 トレースレットは自由に拡張することはできない。 定義により,トレースレットはブロックに対する入力型が決定できなくなるか, JITコンパイラが分岐の方向を決定できなくなったところが終端である。

トレースレットを一般化するためにFacebook技術者が最初にとった行動は, プロファイル情報に基づいて,いくつかのトレースレットをまとめてアセンブルすることだった。 これを行うことにより,別々のトレースレットの入退出のオーバーヘッドを減少させることができた。加えて,さらに発展的なトレースレット横断型の最適化を行った。 例えば,ループ不変状態をループの外に移動することなどである。

基本的なトレースレットより広い領域を構築することは, 既存のJITコンパイラや基盤の限界を突破すること以上の成果を挙げた。 しかし,第2フェーズにおいて,Facebook技術者はこれらのコンポーネントの再設計を開始した。 任意の制御フローをもつ領域を扱うためである。 この結果,2015年春にはJITコンパイル性能は飛躍的に向上し, CPU使用率を15%低下させることができた。 これは第1フェーズにて得られた成果を上回る。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

広告ブロッカーを使用されています。

何かの理由で広告ブロッカーを使用されていることと存じますが、InfoQを今後も無料でお使いいただけるようにするために、広告の表示にご協力いただけますと幸いです。InfoQはあなたの許諾なしに第三者にあなたの情報を提供することはありません。広告は読者の皆さんに関連するもののみを表示いたします。広告表示可能なサイトとしてご登録いただけますと幸いです。