以下は下記原文 2004/09/17(JST)時点 の検証無し翻訳です。
原文は University of California より GFDL で配付されており、
この翻訳も GFDL に従います。
原文:
Proxy servers
最終更新時刻 2006/03/01 01時11分 JST
代理サーバ
|
Last modified 12:17 AM UTC, September 14 2004
|
SETI@home Classic[初代のSETI@home]は、SETIQueueのような
「代理サーバ」の恩恵をうけていました訳注1。
これらの代理サーバは、ワークユニットと計算結果とを溜め、それらを
参加者の計算機とSETI@homeの主サーバとの間で転送することができます。
代理サーバは、たとえ主サーバがダウンしていても、とどこおることなく
[クライアントへ] 仕事を供給しますし、インターネットに直接接続していない計算機でも
SETI@home Classic を実行できるようにしてくれます。
これらの[代理サーバ]プログラムは、BOINCでは動作しません(下記をご覧ください)。
しかし、便利だった機能のいくつかには別のやり方があります。
-
代理サーバのもつ複数ワークユニットを溜め込む機能は、
BOINC クライアント自身で提供されています。
クライアントがプロジェクトのサーバへ接続するたびに、
どれだけの量のワークユニットを[まとめて]取ってくるかを、
指定できるようになっています。
-
インターネットに直接つながってはいないが、LANを通じて
つながっている計算機については、
Unix上のSquid や、
Windows上[で動く]
FreeProxyなどの、 HTTP 1.0 プロキシを使うことによって、
BOINCに参加させることができます。
なぜ SETIQueue は BOINCでは動作しないのか?
SETI@home Classic では、
「ワークユニットの大きさはどんなマシンについても一種類のみ」でしたが、
BOINCでは、極端な条件(メモリ、ディスク、CPUに関して)
を要求するワークユニットでも扱えるようになっており、
[それぞれのワークユニットは]、
それを計算できる能力のあるところだけに送られるように確実に制御されます。
BOINCでは、クライアントはサーバと直接通信します。
クライアントは、サーバにそのハードウェア(メモリ搭載量、
CPU速度など)について教え、サーバはその情報にしたがって
[渡すべき] 仕事を選ぶのです。
さらに、BOINCはスケジューリング・サーバとデータ・サーバ群を
別だてで持ちます。 (SETI@home Classic では一台のサーバが
両方の役をしています。 )
BOINC 代理システムの可能性
コア・クライアントを修正するという仮定のもとで、
代理システムをどう作れるか、素描してみます。
通信と記憶だけをする「代理計算機」1台と、計算役のたくさんの「ワーカー計算機」
があると想像します。 このときコア・クライアントには、 下記の
-proxy および -worker オプションを受けとれるように変更しなければなりません。
- -proxy オプションを指定した場合、
コア・クライアントは、ネットワークを通じた通信(スケジューラ RPC、
ファイルのアップロード・ダウンロード)
は行いますが、計算や CPU ベンチマーキング、
その他メモリやディスク量などのハードウェア測定は行いません。
(しかし、ネットワークの帯域幅の測定をして憶えておくことはします。 )
このコア・クライアントはネットワークでの通信が終われば終了します。
- -worker オプションを指定した場合、
コア・クライアントは、-proxy を指定したときとは裏返しの動作をします。
つまり、計算や CPU ベンチマーキングをしますが、
ネットワークを通じた通信の類はしません。
このコア・クライアントが終了するタイミングは、
計算が終わったときです(あるいは、もしかすると、
CPU でする仕事がなくなったときか、
参加しているあるプロジェクトの仕事がなくなったときです)。
代理計算機は、ワーカー計算機ごとに別々の
BOINC ディレクトリの面倒を見ることになるのでしょう。
代理計算機の動作概要は、ワーカー計算機ごとに以下の論理になります。
- ワーカー計算機上で、コア・クライアントを
-worker オプションつきで走らせる。
- それが終了したら、ワーカー計算機のディレクトリ内容を、
代理計算機上の対応するディレクトリへ反映させる。
- 代理サーバ上で、コア・クライアントを
-proxy オプションつきで走らせる。
- それが終了したら、ワーカー計算機のディレクトリへ、
代理計算機上の対応するディレクトリの内容を反映させる。
- 以上を繰り返す。
ご注意: 上記の素描に書いた内容はまったく実装されていません。
プログラマーとして実装を援助したいと思う方がいらっしゃれば、
ご連絡ください。
さらにご注意: 上記を読んでいただくとわかるように、
この例のシステムは非同期のタイミングでは動作しません。
(計算と通信はオーバラップしません。 )
ですから、この代理システムはバッファリング機能はもっていません。
これらの特徴は上記の素描に付加することができるかもしれません。
- (訳注1): 恩恵をうけていました:
- 翻訳時点2004年9月時点では、初代SETI@homeはまだ稼働中で、代理サーバも稼働中です。
したがって、執筆時点でここは過去形ではなく、代理サーバの恩恵をうけつづけている状態です。