すーぱーこんぴーたーの話をする際に、どうしても耳にするいくつかの言葉がある。
沙耶です。
それらを、どこまで説明できるだろうか。
つまり、クラスタコンピューティングとグリッドコンピューティングとは何が違うのか?
クラウドコンピューティングとは、なにか。
ちょいちょい耳にする言葉ではないかと思う。
ちなみに、すーぱーこんぴーたーがクラスタコンピューティングで、UDや宇宙人探しのようなのがグリッドコンピューティングに当たる。
クラウドコンピューティングとは、広義にはSaaSなんかを含むサービスプロバイダを利用したネットワークサービスのことだ。
OK、多分今の数行で読者の90%を放置した自信がある。
まずは先日れんほーがいじめたすうぱぁでデリシャスでごーじゃすなコンピューティングについて。
コンピューターってのは、頭脳に当たるCPUと記憶領域に当たるメモリ、基本的にはこの二つからできていると言っていい。CPUはものすごい高速で計算ができる暗算の脳味噌だが、数字を覚えておくのは苦手で、せいぜい32個とかしか覚えておけない。
逆にメモリは数字を覚えておくことしかできない。
では、ものすげえたくさんの計算を速く終わらせたい場合、どうするか。
1.CPUをものすげぇ高速にする。
これは従来のコンピューターのアプローチだ。いわば、クロック数競争に代表されるものがこれに当たる。クロック数ってのは単純に言ってしまえば、一秒間に何回計算できるか、を表した数字なのだから。
ところが、高速にするってのも実は限界がある。ものっそい速くしていくと、電気の通り道はどんどん発熱するのだ。しかし、速くするためには電機の通り道をできるだけ短距離にしていかなければならず、なるべく小さな面積に詰め込んでいかなければならない。
そのために、電気の通り道はどんどん細く、細くなっていく。ちなみに現在45μmほどだったかと思う。
電気の通り道が細くなる、というのは電気を通す際に発熱しやすくなる、ということでもある。同じ量の電気をだかっっと流す時、ぶっとい線の方がほっそい線より発熱しない。
このため、CPU内では流れんでいいとこに電流が流れたり(リーク電流)、熱によって溶けたり、とロクなことが起きない。もともと電子機器は熱に弱いのだ。
このため、どうしてもこの単体のCPUを高速化するというアプローチには限界が生まれてくる。
2.並列化
そこで、出てくるのが並列化という考え方だ。一個の計算式を解く場合でも、複数の計算が同時に走ることはよくある。
たとえば、(1+2)*(5+9)=?なんて場合、1+2が終わっても5+9の計算が終わってない場合は掛け算ができないし、答えも出ない。
CPUが一個の場合、CPUは基本一つのことしかできないので、まず1+2を計算し、次に*を計算しようとするが(が来ているので一端1+2の結果と掛け算をしなければならない、ということを横にどかして、5+9を読み込んでそれを計算して、結果を横にどかして、掛け算をしなければならないことを思い出し、1+2と5+9の結果をそれぞれ横から戻して、掛け算をして答えを出す。
計算回数にして3回の計算が直列的に行われ、3回分の計算時間が必要となる。
まあ、横にどかして、とかも本来は実は計算としてカウントするのだが。
文字にするととてもめんどくさいw
だが、もしCPUが二個あったらどうだろうか。まず式を分解してしまい、1+2と5+9をCPU-AとCPU-Bに放り投げ、答えを即座にCPU-Aにもう一回放り込めば、計算時間は二回分で済む。
これが基本的な考え方だ。
ここにあげた式はとても単純なのでこの程度の差しか生まれないが、無限級数の計算とかになってくると、桁数分CPUがあればあっという間に終わる。
無限九州?とか思った人は気にしなくてもいい。
身体は明太子でできている。心はラーメンで血汐はさつま揚げ。阿蘇の丘に一人馬刺し。
つまり、CPUがいっぱいあれば!ってのがこの並列化、だ。
Core i7やCore2Quad、Core2Duoなんかもこの形。CPUが何個入っているかはそれぞれによって異なるが。
3.詰め込め詰め込め
とはいえ、CPUパッケージのサイズに詰め込めるCPUの数って当然限界がある。あたりまえだ。
CPU一個で家よりでかいCPUとかどうすんだ。設置すんのにクレーンが必要ですとか言われても困るだろ。俺は困る。ていうか俺が困る。ほんとやめて。
だから、詰め込む数は必然的に限界がある。じゃあどうすんだよ、ってブチ切れるな。
要は、CPUとCPUがお互いにお互いが”何をやっているのか?””次の仕事は何か?”ってのが横断的にわかればいいのだ。それはどういうことか、というと、要はCPU同士が通信している、ということに他ならない。
さあやっと出てくるのがクラスタリング、クラスタコンピューティングの出番だ。
この通信を”じゃあ実はサーバの中で実装しなくてもネットワークのような通信構造を用いて分散化できるんじゃないのか?”って考えたバカ、ああいや偉い人がいた。
そう、可能だ。極端な話、電気信号でしかないのだから、同じものが届けばいいのだ。それが同じ筐体の中であるかどうかなんてことをCPUは気にしてない。
これが、クラスタコンピューティング。普通のCPUが入ったPCやサーバを、ネットワークを通じて接続し合い、とっても巨大な一大の超並列プロセッサを搭載したサーバであるかのごとく見せかける。
これが、スーパーコンピューターの仕組みの基本のきになる。バックエンドの通信は言っとくがクソおせぇLANとかじゃなくてInfiniBandなどのような超高速超安定超可用性の高い通信システムを用いる。ちなみに一レーン当たり2.5Gbit/sの帯域をもつ。あ? 遅い?
PCI-Express3.0の内部バスの理論値の2.5倍もの”物理伝送ケーブル”が遅いとな?w
ついでにこれ12xのレーンコネクタまであるからね。言っとくとw だから一レーンあたり、ゆーてるだろwww
12xで”実効上”96Gbit/sの最大理論値をもつ通信ケーブルである。ああ、どんくらいかわからんて?
DVDが3枚分くらいのデータが一秒で転送されるくらいの速度。かっこいいだろ? ほしいよな。俺はほしいよ。安くならないかな、Infinibandのスイッチw
ちなみに数字的にはメモリの読み書き速度より速いからな?
今の民生のメモリで速いのがDDR3-SDRAMだろうけど、PC3-1600でも単体で12.800Gbitt/Sec程度な。トリプルチャンネル使って、三倍理論値出せても36~37Gbit/s。InfiniBandの化物っぷりは理解してもらえるかな?
ちなみにエッジ用のInfiniBandスイッチハブで36ポートが200万近くするけどな。インターフェースも余裕でうん十マンとかって世界だけど、それでも現状は相当価格低下を起こしたなぁってレベルでもある。四ケタしなくなったもんなw
余談が過ぎた。まあ、この速度でもCPUの速度に比べるとかなり遅いんだが、まあ仕方ない。
つまり、そうやってものすごい台数並べたのがいまのすーぱーこんぴーたーだ。とはいえ、並べれば並べるほどいいのか?っていうとそうでも無くてな。
その辺は知りたきゃ専門に行け。
この、クラスタコンピューターを構成する一台一台のことを、ノード、と呼ぶ。
またこれらのノードをある程度の数ひとまとまりとして横断的に俯瞰するマスターノードが存在する。さらにこのマスターノード同士をクラスタ化し、上位クラスタと下位のクラスタを作り、上位クラスタをさらに俯瞰する以下略。
4.グリッドコンピューター
クラスタとは、そうやって一台のクソバカでかい巨大なこんぴーたーを生み出すことだった。
しかしある人は言った。
こんぴーたーって別に実体はなくても成り立つんじゃねぇか?
バカだ。バカすぎる。バカすぎて一周して天才というべきかもしれない。
つまり、どういうことかというと、クラスタコンピューターがCPU単位で分離させたのなら、さらに一歩進めてしまって、コンピューターごと分離してしまえって考え方だ。
世界中のコンピューター、特にインターネットにつながっているコンピューターの仕事をしていない時間、いわゆるアイドルタイムにおいて、ヒマしてんならこの計算をしてくれ、って送り込む。
これをものすごい台数分揃えれば、実際の機械自体はないのに、ネットワーク上にものすごい計算能力をもつ架空のコンピューターを一台生み出すことができるのではないか?
このときの各PCに送り込まれる計算単位をユニット、とか言う。CPU単位で分離したような計算式単位で速度性を求められるケースは向かないのだが、膨大な量のデータ解析処理のような、それ単体で完結できる処理に関してはグリッドコンピューターの能力はスーパーコンピューターを圧倒する。
この結果が、UDだとか宇宙人探査プロジェクトなのだが、UDの解析速度は現状最速のスパコンに同じデータを与えても同じ速度を出すことは到底できない。ちなみにUDはもう終わったがなw
もっとも、クラスタ同様たくさんのコンピューターからのリザルト(結果)を受け取るためのマスターサーバは必要だが、それ自体はスパコンのような超高性能サーバではない。
ていうか普通のサーバであるw
PS3にもFolding@のグリッドクライアントが用意されている。
5.クラウドコンピューティング
さて。では、最後にクラウドコンピューターだ。実は、これはスパコン関連の話とまっっっっっっっっっっっっっっっっったくかんけーがない。
実は、クラウドコンピューティングってのは、ユーザー端末は簡素なクライアントPCにし、アプリケーションの実体やデータをぜーんぶネット上で保持してしまおうっつーシンクライアントのインターネット版に近いものだ。
いわゆる、SaaSとか、PaaSとか、HaaSとかってやつだ。
PCにソフトをインストールすることなくアプリケーションを利用する。この形態であればあらゆるものがこれに含まれる。
極端な話、Webアプリと呼ばれるWebソフトウェア、身近なのだとグループウェアとかもSaaSの一種といえる。もっとも、それをローカルのサーバにインストールしてイントラで使う場合はそれはWebアプリって呼ぶんだ。
それをインターネット上に移動し、さらにはそのソフトウェアの実態を置いているサーバは”アプリケーションプロバイダ”という提供者によって提供され、その使用料を支払う形態。それが、SaaSである。Software as a Serviceの略。
ちなみに、有料の電子メールアカウントサービスなんかも言っちゃえばSaaSであるwwww
ちょっと前の言葉ならASPってのが同じ意味。
次に、Plathome as a Service、PaaS。こいつは、一時的な計算機リソースが必要になった場合に”計算機のリソースを借り受ける”サービス。
仮想化PCなどがこの技術を支えている。ちょっとややこしいので説明はパス。
アプリケーションホスティング、などとも呼ばれる。VMやJavaベースのサンドボックスが与えられ、開発したアプリケーションを展開することを許される。
レンタルサーバと何が違うのか、ってーとこれが一つの巨大なシステムの一部から仮想的に割り当てられた計算機リソースにすぎない、という点。
最後がHaaS、もう検討がつくだろうけど、Hardware as a Service。
仮想的なハードウェアを提供する。まっさきにVM Wareとかが浮かぶのがこっちの領域の人だな。vShpereとか。
ユーザーは与えられたハードウェアに自由にアクセスし、OSを入れたりすることも許されるが、そのコンピューターの実際のハードウェアが何であるかを意識する必要は全くない。
これらを全部ひっくるめて、クラウドコンピューティングと称する。
ちなみに、これらクラウドを提供するためのバックエンドとなる実機に関してはクラスタリングに近い技術を使う。
使ってる人は全く気にする必要はない。が、裏側では以下に安いコストでたくさんのリソースを生み出すかに腐心している人がいて、さらにはちょっとお金かけてくれれば大変メンテナンス性が上がるというのに、障害復旧?ナニソレ?みたいな論理のもと削られる予算と日夜戦う戦士がいるであろうことは容易に予想がつくと思うが、彼らの多くは日の目を見ることもなく使い捨てのごとく使い切っては棄てられている。
なにせ、真っ先に削られているのが人件費である。ステキな職場へようこそ!w
こういう話にドキドキわくわくしちゃう人は社会の最底辺にくるべきだと思うよ!!!w