いちばんいいのを頼む - GC Advent Calendar

Garbage Collection Advent Calendarの14日目の記事です。
yaottiさんの記事が楽しかったのでもう少し頑張ります!

ひとりで…やるつもりは…ないんですが…(´;ω;`)ウッ…
みなさんの参加をおまちしております。

さて、HotspotVMみたく、GCをたくさーん実装しているような場合は、もうどのGCを選んでいいかわからないですよね。
もしもアプリケーションに適したよさげなGCを勝手に選んでくれたら…(ぽわ〜ん)。
そこで機械学習の出番ですよ!

Intelligent selection of application-specific garbage collectors
(タイトルでググると公開PDFもでてきます)

テケトーに読んでみたので概要をまとめてみます(注意:筆者の英語力は壮絶にオワタなので勘違いしている恐れが大きい)。

従来の研究では対象のプログラムをprofileして、よさげなGCを選ぶものだったけどこれはちょっと遅い。
そこで、機械学習を使ってよさげなGCを選ぶことにしたよー、と。

まずモデルとして、いくつかのベンチマークプログラムとそれをキチンと『評価』して、それぞれモデルにおいて複数GCの中でどのGCが優れていたか、などを記録しておく。
(この論文ではGC全体の実行時間が短いものが『優れている』とみなしているっぽい。そのため選択するGCは全部stop-the-worldなアルゴリズム
そして、対象のプログラムは見ることはなく、その代わりにモデルとして使ったプログラムの中で対象のプログラムに『もっとも似ているもの』を探しだす。
この『似ている』という判定に機械学習が使われる。それぞれのモデルを分析して、featuresという指標で学習用のデータを記録し、それを基に対象プログラムがどのモデルに似ているかを決めるっぽい。
似ているモデルがわかれば、それには評価済みの適切なGCが記録されているので、それを使うようにする。

論文ではJikesRVMで実装がおこなわれており、デフォルトの選択よりも平均して17%のスピードアップが見られたのだとか。
アプリケーションに適切なGCを選択するために機械学習を使った初めての論文だそうです。
2007年の論文なのでRJGCには載ってない!!