●グリッドコンピューティングの動向とそれを支える技術

第4回 セルフコンピューティングの技術について 

(株)NTTデータ 技術開発本部 
主任研究員岩倉伸行

 NTTデータでは、PCグリッドコンピューティングのビジネス化を目指してセルコンピューティング(cellcomputing)プロジェクトを進めている。昨年の2002年12月20日から2003年4月30日までの約4ヶ月にわたり、インターネット上でPCグリッドコンピューティングの実証実験であるセルコンピューティングの大規模実証実験を日本IBM様をはじめ、パートナー様の協力のもと、無事終了することができた。今回の記事では、セルコンピューティングが提供している技術を説明することにより、PCグリッドコンピューティングが必要とされている技術の特徴をまとめたいと思う。


■セルコンピューティングとは

 細胞(セル)が集まって人間を構成するように、オフィスや家庭にあるPCをネットワークで接続することによってスーパーコンピュータ並の性能を実現させたい、という意味を込めて名付けたNTTデータのPCグリッドコンピューティングに関するサービス名およびシステム名が、『セルコンピューティング』である。
 セルコンピューティングは、通常利用されているPCと、そのPCがネットワークで接続されているという通信環境と、そして通信環境を経由してPCに計算を依頼しとりまとめするサーバの3つの要素から構成されている。PCのユーザーが、セルコンピューティングに参加するには、メンバソフト(以下、ソフトと略する)をインストールする。このソフトは、ネットワークを経由してサーバと接続し、バイオインフォマティクスなどのアプリケーションプログラムと、そのアプリケーションプログラムで計算対象となるデータを取得する。アプリケーションプログラムは、データが計算され終えると、ソフトは再びサーバにアクセスして、計算結果を返却し、次の計算対象となるデータを取得する。これを繰り返すことにより、PC上でデータの処理が実行される。

 セルコンピューティングが、このようにして分散処理して計算する仕組みを図1に示す。またセルコンピューティングの構成を図2に示す。



大規模実証実験とは


 昨年の2002年12月20日から今年の4月30日までの約4ヶ月間にわたり、セルコンピューティングのインターネット上での実証実験を実施した。これまで、既に海外を中心にして、SETI@home[1]や、distributed.net[2]、Cancer ResearchProject[3]などのように、インターネット上でのPCグリッドコンピューティングの実験は行われてきた。
 しかし、日本国内においてはインターネットというオープンな環境では実施されていなかった。そこで、日本国内においても、このようなグリッドコンピューティング技術がもっと注目されていくことにより、新しい市場や技術が創造されていくに違いないと信じて、ハードウェアベンダー、ソフトウェアベンダー、通信業者などの先進企業に協力を求めることにより大規模実証実験を行った。
 またアプリケーションの選定と開発においても、研究機関が協力をしてくれた。これらの研究テーマとパートナー様を表1にまとめる。
 今回の実験では、既存のPCグリッドコンピューティング実験では行われなかった点を中心に特徴をまとめると、次のようになる。

(1)複数のアプリケーション

 プロジェクト期間中に、同時に2つのアプリケーションをサーバから提供し、PCユーザーにはどちらもランダムに提供するようにした。このためPCユーザーにとっては、次回、バイオインフォマティクスと物理シミュレーションという2 つのアプリケーションの何れが提供されるのかを楽しみの1つとして参加することができた。

(2)キャラクターの導入

 アプリケーションである科学計算とは関係のないキャラクター(ストーリー性を持たせる)を導入して、スクリーンセイバー画面上に表示するという試みを行った。科学技術計算に興味のあるPCユーザー以外からもセルコンピューティングに関心を持ってもらうことができた。

(3)日本語の画面

 ソフト画面では、日本語化を実現した。さらにPC間でコミュニティを形成できるような日本語のサイト(掲示板)を構築した。ここでは、NTTデータからの情報を提供する他に、セルコンピューティングについてPC間で意見を述べる場を提供することができた。
 このような技術的な面とビジネス的な面の両方から、PCグリッドコンピューティングを実用化していく上での課題を見いだすための第一歩となったのが、今回の実証実験であると考えている。



ソフトの特徴

 コンピュータはプログラムさえ正しく作成すれば、ひたすら従順に計算を繰り返して実行する。繰り返し計算は、人間とは違い、決して出し惜しみすることはない。しかし、コンピュータが100%の能力を出し切って仕事をするというのは、実は、最近のPCにおいては数少ない機会しかないようである。
 最初にPCに電源が入れられて環境準備をしている時と、アプリケーションソフトが起動されて画面を描画している時など、実にわずかな時間のみで、その他の時はキーボードから文字が入力されるのを待っていたり、プリンターにデータを送信していたりして、平均すれば20%程度しか能力を使っていないと言われている。
 セルコンピューティングでは、この余剰CPU能力を使うことを考えた。通常20%しかCPU能力をアプリケーションが必要としていないのであれば、残りの80%の能力をセルコンピューティングが使わせてもらうのである。もちろん、アプリケーションが動作途中からCPU能力をさらに必要とするならば優先して利用してもらい、セルコンピューティング側ではあくまでも残りの能力だけを使うようにする。この結果、セルコンピューティングのソフトを入れたPC では、CPU 使用率は100%になった。
 実際CPUの能力が有効利用されていない代表的な場面がある。それはスクリーンセイバーが動作しているときである。この時こそセルコンピューティングのソフトの活躍できるタイミングである。特にセルコンピューティングではソフトをインストールしてくれる人が、次のような設定をできるようにしている。
  この場合、PCの利用者が使用せずにスクリーンセイバーの状態になっているときの方が、CPUは一生懸命動作(使用率100%)していることになり、常識的なPC利用状況とは逆になる。「いやー、最近、私はあまりPCを使った仕事をしていないので、CPUが100%フル稼働だよ」といった冗談がかわされる可能性もある。

アプリケーションの特徴

 セルコンピューティングのソフトを使って、PCが持っている力を最大限に生かすためには、PC上のOSで動作するプログラムであること、入出力がファイルで実行でき、サーバとの通信が行えることが必要となる。またセルコンピューティングでは、配布するアプリケーションプログラムのサイズや処理するデータのサイズを適切な範囲におさめることによって、他のアプリケーションプログラムに影響を与えないようにしている。もちろん処理するデータは、システム全体が対象としている範囲から分割することによって、複数のPCで処理することのメリット(並列処理の実現)を生かすことができる。

         図3 アプリケーションとCPU の利用率


 プログラムサイズとデータのサイズは計算処理を完了する時間、すなわちソフトがサーバにアクセスを実行する時間間隔に影響を与えることになる。この時間間隔は通信トラフィック量に影響を与えるため、システム全体の性能へ影響を及ぼす可能性がある。たとえば、インターネット上で不特定多数のPCが参加可能なシステムである場合は、アクセス時間間隔が、サーバとのデータ通信時間に比べて充分長いように設定する必要がある。
 ソフトにも通信トラフィックを増大させないための工夫が必要である。これは、もしサーバにアクセスしようとしたときに、サーバとの通信が不可能であった場合、しばらく時間をおいてから再度アクセス(リトライ)するという仕組みで実現できる。さらに再度アクセスしようとしたにもかかわらず、再びアクセスできない場合は、前のリトライを開始するまでに要した時間間隔よりも大きく時間間隔をとって、再度アクセスするようにしている。これにより、サーバ側にアクセスが集中してシステムが不安定になるといった事象を回避することができる。

アプリケーションセキュリティ

 ソフトには、あらかじめサーバを認証するための公開鍵を設定しており、これを用いて、ソフトとサーバとの通信は暗号化されているため、第3者から容易に解読することはできない。
 さらにソフトがサーバから取得したアプリケーションプログラムと処理するデータは、セルコンピューティングのサーバで署名がされている。従って、サーバ以外からのデータをソフトでは実行しないようになっている。
 ソフトでは、計算の途中経過をハードディスク上に保存することにより、PCが途中で電源をOFFされても計算の最初からでなく、OFF前の状態から再開できる機能を有している。この際には、ソフトが自分の作成したデータであることを確認するために、データ間のハッシュ値や署名を確認することにより不正チェックを実施する。
 このように、ソフト内、ソフトとサーバ間においては、現在WEB通信などインターネット上で一般に用いられている暗号/認証の技術を採用して、セキュリティ確保につとめている。 

        図4 サーバへのアクセス待ち時間


             図5 暗号と認証

システムの考察と今後の研究

 インターネットを利用したセルコンピューティング大規模実証実験は、粒度の大きな疎結合型分散アプリケーションを、1万台以上のPC上で、それぞれ異なるデータをバッチ処理させることにより、テラFlopsレベルの性能を実現した。イントラネット環境においても、数100台のPCを利用することができれば、これまでは時間がかかりすぎたアプリケーションを実用的な時間内で実現できることもわかってきた。
 すなわち、セルコンピューティングシステムの性能とは、稼働しているPCの台数分だけ並列性が高くなり、結果としてシステム全体の性能が高くなるという仕組みになっている。したがってシステム全体の性能は、ソフトをインストールしたPCの性能の総和が最大値であり、実際はどれだけソフトが動作できる時間があったのか、サーバとの通信処理時間を効率的に行うことができたかがポイントになり、システム全体の性能が決定する。
 逆に言えば、システム性能を向上させるためには、PCの台数を増やすこと、あるいは、それぞれのPCの性能を向上させることが必要である。
 さらにシステム全体としてボトルネックをつくらないように、PCとサーバとの通信を効率的に行うことが必要である。このことからオフィスや家庭のPCが新しいものに入れ替えられると、自然にセルコンピューティングの性能も向上していくことになり、これまでのシステム設計とは異なった見方が必要になる。すなわち、セルコンピューティングの特徴である遊休資産の効率的利用という側面を越えて、PCの技術進化にともなってシステムの全体性能が向上していくことを考慮した設計が必要になってくる。
 このような進化していくシステムの性能評価手法や、システムに適合したアプリケーションプログラムの開発などの研究を通じて、セルコンピューティングが社会に貢献できるようなシステムやサービスとして認知され、少しでもグリッドコンピューティング技術が、新たな市場や技術の創造につながるように今後とも努力していきたいと考えている。

[参考]

[1] http://setiathome.ssl.berkeley.edu/
[2] http://www.distributed.net/
[3] http://www.grid.org/projects/cancer/


 

 


Copyright:(C) 2003 BUSINESS COMMUNICATION All Rights Reserved