AI解説
情報源: arXiv 版(全9頁)の全文を精読して記述。本文に書かれていない事項は書いていない。掲載会議はファイル名から CCGrid 2013 の可能性が高いが、本文自体からは確認できていない。
一言で
BOINC のボランティアマシン上での実行を、アプリケーションそのものではなく仮想マシンの中で行わせる V-BOINC を提案する。仮想化 API によってチェックポイントの問題を解決し、開発者は単一のアーキテクチャ向けにアプリケーションをコンパイルするだけで済み、仮想マシンのサンドボックスによってセキュリティ上の懸念にも対処できる。通常の BOINC と比べた計算性能を評価し、依存関係を持つアプリケーションが V-BOINC の下で容易に動くことを示す。
背景・問題
BOINC は2002年に作られ、90万人のユーザが医学・物理学・生物学などの分野のプロジェクトに参加する、最も普及した volunteer computing ミドルウェアである。しかし BOINC には、アプリケーションがボランティアマシンのユーザ空間で実行されることに起因するいくつかの弱点がある。
- プロジェクト開発者は、対象となる全てのマシンアーキテクチャへアプリケーションを移植する必要がある。
- プロジェクト開発者は、ホストの終了や障害でジョブの進捗が失われないよう、アプリケーションレベルのチェックポイントを自前で実装する必要がある。
- プロジェクト開発者は、依存関係を持たないアプリケーションしか作れない。
- BOINC の利用者は、接続先のプロジェクトサーバが悪意のある、あるいは信頼できないアプリケーションを配布しないことを信頼しなければならない。
仮想化はこれらの多くを解決する。アプリケーションを単一の仮想マシンアーキテクチャへ移植するだけでよくなり、ホストのセキュリティはサンドボックス環境が本質的に担保し、システムレベルのチェックポイントが利用できるようになり、依存関係を持つアプリケーションも仮想マシンへ事前インストールまたは添付する形で容易に実行できる。
提案手法
アーキテクチャ — 軽量な仮想マシンイメージの配布
V-BOINC のアプローチの基盤は、軽量な仮想マシンイメージをボランティアクライアントへ送り、BOINC アプリケーションをホストのユーザ空間ではなく仮想マシンの中で実行させることにある。これは、仮想マシンイメージの中に BOINC クライアントをインストールし、それがユーザ指定のプロジェクト向けのアプリケーションを取得する形で実装される。これに加えて、ユーザのホスト側にも仮想マシンイメージ自体をダウンロードするための BOINC クライアントがインストールされる。
仮想化技術(QEMU/KVM、VirtualBox、VMWare Player を検討)に求める要件として、仮想マシンの内部 BOINC クライアントが直接ジョブを受け取り結果を返せるブリッジネットワーキング、BOINC のユーザに対する透過性のポリシーの遵守、仮想マシン制御用 API、そして仮想マシンのチェックポイント機能が使えることと、Linux と Mac OS X の両方へ移植可能であることを挙げている(Windows 対応は将来課題)。
チェックポイントと復旧
BOINC アプリケーションの継続性を保証するため、修正された BOINC クライアントは、ボランティアユーザが選んだ間隔で周期的な仮想マシンのチェックポイントと復旧を実装する。ボランティアホスト上で何らかのエラーが起きた場合、あるいはホストが単に終了した場合でも、最新のスナップショットを復旧でき、プロジェクト開発者はアプリケーションレベルのチェックポイントを実装する必要なく計算が完了することを確信できる。
VirtualBox の API のスナップショットコンポーネントを呼ぶだけでチェックポイントは簡単に行える。このコマンドを実行すると、適切なスナップショットファイルが仮想マシンイメージのある Snapshots フォルダへ置かれる。VirtualBox 経由のチェックポイントで作られるファイルは次の3種類である。
- 仮想マシン設定のコピー(割り当てメモリや接続ディスクなどのハードウェア構成を含む)。
- 仮想マシンに接続された全 VDI(仮想ディスクイメージ)の現在の状態。VirtualBox はこれを差分イメージ(スナップショット以降の全書き込み操作を記録するイメージ)として保存することで実装する。
- 仮想マシンが動作中にスナップショットを取った場合の、全メモリの現在の状態。このメモリ状態ファイルは、仮想マシンに割り当てられたメモリサイズまで大きくなりうる。
スナップショットを復元するには、対応する差分イメージを有効化し、現在のスナップショット/仮想マシン状態を無効化する。ホスト上のストレージ消費を抑えるため、不要になった古いスナップショットファイルは V-BOINC が削除する。
実験・結果
評価環境は Intel i3-2100(3.10GHz、2コア)2基、3.8GB メモリのホスト1台。CPU・メモリ・I/O・ディスクをそれぞれ強いる Stress ベースのベンチマーク、素数計算(Primes)、5GB ファイル作成(Create5GB)、依存関係を持つ実アプリケーション(並列R向けの SPRINT)で評価した。
- 通常実行のオーバーヘッド:ホスト単体実行と BOINC 経由実行の差はごくわずかだった。V-BOINC は多くのケースで通常の BOINC より遅く(Create5GB を除く)、これは仮想化そのもののオーバーヘッド(仮想マシンに割り当てられるメモリ・CPU がホストの全量より少ないこと)に起因すると分析している。SPRINT のケースでは、読み込みと実行にかかる時間がそれぞれおよそ2倍・3倍に増加した。
- チェックポイントのコスト:CPU・メモリ・I/O・素数計算のベンチマークでは、平均スナップショット時間は約1秒、メモリダンプファイルは100MB未満、DepDisk と仮想マシンのスナップショット VDI サイズはそれぞれ36KBと8KBという最小値にとどまった。ディスク集中的なベンチマークと SPRINT では、より大きなメモリ消費とディスク書き込みのため、スナップショット時間とメモリダンプファイルサイズが大きくなり、SPRINT では最大2.28GBのメモリダンプファイルが記録された。BOINC アプリケーションは典型的に少量のデータ上で CPU 集中的な処理を行う(例えば SETI@Home はホストあたり約10MBを使う)ため、チェックポイントは通常速く、ストレージ消費も小さいはずだとしている。
関連研究との関係(メモ)
- BOINC(cite key
anderson2019boinc):本論文が拡張する対象。BOINC 自身も後に、VirtualBox のスナップショットに基づく同種の仕組みを VBox wrapper として公式に取り込んでおり、V-BOINC はこれに先行する外部の研究プロトタイプにあたる。 - 分野横断的な位置づけは アプリケーションレベルのチェックポイント の §3.8 を参照。
Q&A
(自分がAIに実際に質問したことだけをQ/A形式で残す。まだなし。)
自分のコメント
(ここは自分で都度書く欄。)