Linuxマシンで分散型コンピューティングにボランティア参加する

 疾病の予防や気候変動の予測などは人類全体の問題として捉えるべき課題だが、ごく一般のユーザであっても手元のコンピュータの余剰リソースをボランティア参加させるという形で、そうした複雑な問題の計算処理に貢献することができる。これはボランティアコンピューティングとして知られるコンセプトであり、世界各国の研究機関や大学がこの方式を利用しているが、その多くはアフリカで蔓延するマラリアの予測と制御を目的とするmalariacontrol.netのように人類に貢献するプロジェクトに取り組んでいる。

 ボランティアコンピューティングに参加するにはクライアントソフトウェアを入手しなければならない。そのダウンロードとインストールを行うと、個々のコンピュータごとに割り当てられたタスクが定期的にダウンロードされて、余剰のCPU処理時間、メモリ、ディスク容量を用いた演算プロセスが行われるようになり、手元のコンピュータでの演算が完了したタスクは当該プロジェクトの統括コンピュータに送信され、プロジェクト全体のソリューションを構成する1つのコンポーネントとして使用される。このようにして個々のプロジェクトは、世界中に分散する多数のコンピュータ群を利用することで自分達だけでは入手不可能な膨大な量の計算能力を確保することになり、目的達成に必要な演算をより短時間で完了させることができるのである。こうした形態のコンピューティングの先駆けとなったのは、SETI@homeおよびFolding@homeプロジェクトであるが、現在ではその他多数のプロジェクトがこの方式を採用しており、その目的も病気の治療法の発見から3Dアニメーションの作成まで多岐にわたるようになっている。本稿で解説するのは、Linuxでボランティアコンピューティングに参加する場合に選択可能なオプションの具体例である。

BOINC

  BOINC (Berkeley Open Infrastructure for Network Computing)とは、分散コンピューティングを運用するプロジェクト側が使用するサーバソフトウェアおよび、ボランティアコンピューティングの参加ユーザ側が使用する高機能クライアントソフトウェアの提供を目的とした汎用型プラットフォームである。これを利用すると、仮に個人であってもLinuxサーバを所持して必要なスキルとマンパワーさえ有していれば、独自のボランティアコンピューティングプロジェクトを設立することも不可能ではない。実際、World Community Gridなどのボランティアコンピューティングプロジェクトの多くはBOINCプラットフォームを利用している。こうしたBOINCプロジェクトないしWorld Community Gridプロジェクト傘下で現在活動している団体は相当な数に上っているので、各自が貢献しがいのあると思えるプロジェクトを探し出すのはそれ程難しくないだろう。

 BOINCクライアントを使用する場合、最低スペックの環境としては500MHzのPentiumプロセッサ、64MBのRAM、50MBのディスク容量が必要である。BOINCクライアントの入手に関しては、Gentoo、Fedora、Debian、UbuntuなどのLinuxディストリビューションのリポジトリにも収録されている。このうちDebianおよびUbuntuの場合はSynaptic経由でboinc-clientとboinc-managerの双方がインストールできるが、あるいはコマンドラインから下記のコマンドを実行しても同じである。

sudo apt-get install boinc-client boinc-manager

 このコマンドでインストールされるBOINCクライアントは、バックグラウンドサービスの1つとして実行される。BOINCクライアントがリポジトリに用意されていない場合はWebサイトからダウンロードすればいいが、具体的なインストール手順はリリースノートにまとめられている説明が参考になるだろう。

 UbuntuにインストールしたBOINCマネージャは、「Applications」→「Accessories」→「BOINC Manager」にて起動できる。ただしWindowsおよびMacバージョンとは異なり、LinuxバージョンのBOINCクライアントにはスクリーンセーバのオプションは用意されていない。同クライアントがバックグラウンドで行う演算は非常に静謐に遂行されるので、スクリーンセーバモードに移行していなくても、その動作はほとんど気づかないくらいだ。

 BOINCマネージャを介して何らかのプロジェクトに参加する場合は、「Advanced View」→「Advanced」→「Attach to Project」を選択し、当該プロジェクトのURLおよび自分の電子メールアドレスとパスワードを指定する。特に問題がなければ、プロジェクトへの参加手続きはこれで完了するはずだ。その後プロジェクトから最初のタスクがいくつかダウンロードされ、BOINCクライアントによる演算が開始される。

 BOINCクライアントによるコンピュータリソースの使用をどの程度許可するかは、BOINCマネージャのPreferencesダイアログにて行える。ここではクライアントの実行時間および、使用可能なプロセッサ時間、ディスク容量、メモリの上限だけでなく、ネットワークトラフィックの生成量も制限できる。

 コンピュータリソースの割り当てに関しては、アカウントマネージャを介することで同時に複数のプロジェクトに貢献することも可能であり、現状で利用可能なアカウントマネージャとしては BOINC Account Manager および GridRepublic という2つが存在している。アカウントマネージャの実体は、BOINCクライアントのユーザ設定および参加するプロジェクトを管理するためのWebサイトであり、ここでは各自のクライアントが過去に演算した成果の統計情報を確認することもできるようになっている。また1つのユーザアカウントを複数のコンピュータで使用させることも可能で、その場合は割り当てるリソース量と実行時間およびユーザ設定は個々のマシン別にセットアップすることができる。

 アカウントマネージャのセットアップが終了したら、次に各コンピュータにあるローカルのBOINCマネージャにて、アカウントマネージャへの接続設定を行う。この設定が完了すると手元のBOINCクライアントは、アカウントマネージャにて指定したユーザ設定を用いて割り当てられた演算を進めるようになる。つまりアカウントマネージャは各コンピュータリソースの利用状況およびプロジェクト全体への貢献度合いを把握する管理センタとして機能してくれるのであり、こうした管理方式が特に有用なのは、仕事場と自宅にある2つのコンピュータにBOINCクライアントをインストールしたような場合であろう。

 私の場合、通常の作業に支障を来さないよう、非使用時間が3分間続いた場合のみBOINCクライアントを実行させるという設定にしておいたが、同クライアントによる演算が始まっても、OpenOffice.org WriterおよびGIMPの使用、Webのブラウジング、音楽ファイルの再生におけるパフォーマンス的な悪化はまったく感じられなかった。そしてプロセッサないしメモリ割り当ての上限に達すると、BOINCクライアントはサスペンド状態に移行して3分間のアイドル時間の検出待ちをするようになる。確かにBOINCクライアントによる演算進行中はシステムモニタ用のパネルがプロセッサ使用量の増加を示すのだが、こうした表示がなければクライアントが動作中であるかをまったく判別できないのではなかろうか。

Folding@home

 Linuxバージョンの Folding@home クライアントはコマンドライン専用のアプリケーションとなっており、WindowsおよびMacバージョンとは違ってユーザインタフェースやスクリーンセーバに関するオプションは何も用意されていない。また同プロジェクトの活動目的は、「タンパク質の折り畳み(フォールディング)構造を解析して、折り畳み構造の誤りや関連した疾病を研究する」ことのみに限定されている。同クライアントのインストールは、バイナリのダウンロード、実行可能パーミッションの設定、本体の起動という手順で進行するが、具体的な操作法はFolding@homeのwikiに用意されている説明が参考になるだろう。

 同クライアントの初回起動時には、メモリ使用量の上限や実行時の優先度などの動作設定に必要な一連の質問が提示される。この処理が終了すると最初のタスクがダウンロードされて演算プロセスが始まる。

 Folding@homeクライアントのユーザ設定はBOINCクライアントほど柔軟ではなく、私のマシンの場合は、コンピュータの利用状況にかかわらず同クライアントによる演算が常に実行され続けるようになった。つまりプロセッサやメモリの使用量の大きいアプリケーションを実行させても、このクライアントはサスペンド状態に移行しないのである。ただし私が日常的に行うワープロでの文章作成、Webのブラウジング、音楽ファイルの再生を行ってもパフォーマンス的な悪化は特に感じられなかった。

distributed.net

  distributed.net のLinux用クライアントも、コマンドライン専用アプリケーションとして使用するタイプとなっている。ただし現在このクライアントで参加できるプロジェクトは、最短ゴロム定規(optimal Golomb ruler)の算定(プロジェクトは説明文を用意しているが難解である)およびRC5-72暗号の解読アルゴリズムという2つしかない。

 このクライアントでもインストール後に最初の起動をすると、必要な動作設定を行うために一連の質問が提示される。ここではプロジェクト参加ユーザを識別するための電子メールアドレスを始め、バッテリ駆動時のコンピュータでもクライアントを実行させるかの指定、クライアントの実行を強制停止させるアプリケーションの登録、クライアントの実行優先度、プロセッサの使用数、ネットワーキング関連のオプションなどをセットアップする。

 私がシステムモニタで見た限り、distributed.netクライアントは2つのCPUコアの処理サイクルをすべて使い切っているようだ。結果、2つのコアは常に全力稼働状況に置かれるようになっており、その他のアプリケーションを起動させてもクライアントがサスペンド状態に移行することはない。とは言うものの、システムモニタ上ではdistributed.netクライアントが95から100%のプロセッサ使用率を占めていると表示されているのに、デスクトップで通常行うアプリケーション作業をする間、マシン全体のパフォーマンスが悪化したという印象はまったく感じられないのである。ただしディスク使用率の解析ツールBaobabによるファイルシステムのスキャンは、通常よりも長時間を要するようになった。

セキュリティに関連する問題

 ボランティアコンピューティングへの参加は、各自のコンピュータリソースに対する外部アプリケーションからのアクセスを増やす関係上、セキュリティ的なリスクをある程度高めることを覚悟しておかなくてはならない。例えばFolding@homeの場合は、各ユーザのコンピュータに出入りするすべてのデータには2,048ビット長のデジタル署名を付けるなど、セキュリティを確保するために可能な限りの措置を施すことをユーザに約束している。これと対照的なのがdistributed.netであって、他のコンピュータ群に対するトロイの木馬の感染に同クライアントが利用されたことを公式に認めているのである。BOINCの場合はセキュリティ問題に対するページを用意した上で、ボランティア参加するユーザが抱えるであろうリスクを説明している。もっともここで触れられている問題について同プロジェクトは今後も対策を進めていくとしており、ウィルス混入については公開鍵による暗号化を用いて対処しているそうだ。その一方でBOINCは、「BOINCプロジェクトへの参加者は各自のシステムのセキュリティを本プロジェクトに委ねることになる点をご理解ください」という事実にも言及している。実際問題としてユーザは、クライアントおよびプロジェクトに対する納得いく調査をしてから自分が参加するか否かを決定する方がいいだろう。

まとめ

 ボランティアコンピューティングに関するより詳しい解説は、GridCafeのサイトが参考になるだろう。ここでは商用利用などのオプションを含めた様々な分散コンピューティングの形態についての説明がされている。

 本稿で解説したクライアントは、いずれもLinuxユーザが参加可能なボランティアコンピューティングに関するものである。例えばFolding@Homeクライアントを使用すれば、タンパク質に関連した疾病の治療研究という崇高な目的に貢献できるはずだ。このクライアントは本稿で言及したクライアント群の中で最も設定範囲が狭いものの、私が手元のコンピュータで試した限りにおいて、デスクトップにて通常行うコンピューティング作業にその演算プロセスが影響を与えることはほとんどなかった。distributed.netクライアントは、数学的な問題の計算に特化している。そのセットアップにおいて双方のプロセッサコアを使用するよう設定したところ、確かに両プロセッサ使用率は最大限に達したものの、私の行う日常的なアプリケーション作業において知覚できるほどの影響は与えなかった。インストールと設定の簡単さにおいて最高峰に位置するのがBOINCクライアントである。ディストリビューションによってはリポジトリから入手可能であり、その場合は最小限の手間で確実に動作するパッケージをインストールすることができる。各種クライアント設定のオプションについては、操作性に優れたユーザインタフェースを介して個々のコンピュータリソースに合わせた細かなユーザ設定を施すことが可能であるし、また同クライアントは各種のプロジェクトで利用されているため、これからボランティアコンピューティングに参加しようとする場合の手頃な窓口として利用できるだろう。

Peter Enseleitはオーストラリア出身のソフトウェア開発者であり、Linuxの使用歴は8年以上に及んでいる。

Linux.com 原文