2007年5月 – 東京 – あなたが金融機関のシステムプロジェクトの責任者で「グリッドコンピューティングを導入しよう!」とシステム業者さんを集めたとします。すると、バラ色の話をこれでもかと言うほど営業マンやコンサルタントから聞かされて有頂天になること請け合いです。なぜならば、学術研究のグリッドコンピューティングや、http://setiathome.berkeley.edu/のような不特定多数の参加によるシステムとは違って、セキュリティが優先する民間企業ビジネスにおけるグリッドコンピューティングは閉鎖されたネットワーク内で行われるのであり、大抵は大量のブレードサーバの導入につながるからです。考えても見てください。「今期販売計画XXX台ブレード売って来い!」と言われたメーカの営業マンを。彼らの目の前には数千万円から数十億円の商談がぶら下がっている!一商談で数百台売れてしまうんですよ。社内表彰モノではないですか。
そこでこのコラムでは、IBMとかHPとかガートナーが絶対書けない(社命により書いてはいけないのかもしれない)話題を扱います。すなわち、グリッドコンピューティングを導入するにあたって本当に知っておかねばならない知識です。
システム屋がグリッドコンピューティングを好む理由
グリッドコンピューティングが最新技術?とんでもない。並列処理の話題、分散処理の話題はそれこそコンピュータの創生期からある話題、周期的にブーム化する商談です(前回ブームは記憶にないかもしれませんが10年以上も昔)。それでは今回はなぜ注目されているのか、その理由を理解するためにまず次の図をご覧ください。
この図を見れば2004年付近を最後にしてCPUの処理能力向上が止まっているのがわかると思います。新しいパソコンを買っても何だか以前に買い替えたようなスピードアップ感がなくなったと感じませんか。その原因の多くはCPUの処理能力が頭打ちになったためで、そのまた背景には物理学的理由と経済学的理由の両方があります。重要なことは、今立ちはだかっている技術的壁は巨大で、おそらく今後何年も(10年以上かもしれない)この性能頭打ち状態が続きそうだということです。詳しい理由は別の論文をご覧ください(例えば、W.W.ギブス, “マルチコアチップ”, 日経サイエンス2005年2月号, p.98)。
つまり性能を目玉にしている限り、コンピュータの買い替えを促せないことを意味します。それで米Intel社をはじめとするCPU製造メーカーはチップ内並列処理「マルチコア」に走り、システムメーカーはたくさんサーバーを繋げば速くなると言って「スケールアウト」という新語を発明したのです。このスケールアウトをカッコよくしたのが「グリッドコンピューティング」と思えば間違いありません(なお学術系グリッドの場合はインターコネクト技術の発展をグリッドブームの理由とするかもしれないが金融系とは別世界の話)。
スケールアウトをうまく使えば大変経済的なシステムが生まれます。次の図をご覧ください。
この図が示すのは、サーバ機の価格はある規模以上になると急激に上昇するという事実です。サーバ機の価格に関する限りCPU単体の影響は軽微で、支配要因はCPU数と搭載メモリ量。この原稿を書いている現在ではCPU数にして2CPU(ソケット)を超えたり、メモリ量にして16GBを超えると、突如価格が跳ね上がります。つまり性能対価格比から見れば2CPU(現時点では8コア)16GBメモリ機がお買い得(その理由にはCPU=メモリ間インターフェイス問題とDRAM市場サイクルが関係しますが本題とは関係ありませんので割愛します)。SunやHPの巨大なサーバを買うよりも(=スケールアップ)、この2CPU機をたくさんつないで使う方が(=スケールアウト)、絶対賢いと思いませんか。
ところが話はそんなに単純ではありません。忘れているポイントを2つ指摘しておきましょう。
第1の問題は、そんな並列ハードウェアに対応するソフトウェアを誰が書くのか。
2005年頃に「ソフトウェアにおけるフリーランチ」として専門家の間で話題になりました。
詳細な理由は、“The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software By Herb Sutter” (Herb Sutter氏は斯界ではD.E.Knuth教授並みに著名な方で現在は米Microsoft社のコンサルタント) に説明されています。きちんと動作する並列処理ソフトウェアを書くのはとても難しい。これが任天堂のWiiやマイクロソフトのXbox360に比べて、ソニーのゲーム機PS3(マルチコアCPUを使っている)対応のゲームが出揃わないひとつの理由です。価格ばかりがソニーのゲーム機戦略失敗の理由ではありません。
第2の問題は、グリッドコンピューティングシステムは故障する、ということ。
故障しやすさを表す用語に、平均故障間隔(MTBF)、平均故障時間(MTTF)、というのがあり、メーカーのカタログを見ておりますととてつもない数字が書いてあります。例えばMTTFが100万時間とか。それでは「114年に1回しか故障しないのか!」と思った方にはマシンルームで作業しているエンジニアが真相を語ってくれるでしょう。現実は次の図の通りです。
この図は米Google社によるハードディスクの故障に関する統計です。ハードディスクはコンピュータの中で最も故障しやすいパーツのひとつです。図で使われている用語AFRは、Annualized failure ratesの略で、1年間に故障が起こる確率を意味します。この図が示すのは、1年目の故障率が最も低く1.7%なのですが、2年目に急激に故障が増え、3年目が最も高くなり8.6%となっている事実です。ハードディスクは初期故障型+3年目以降の終期故障型というわけですね。
似た報告はほかにもあります。米カーネギーメロン大学の研究者による論文(Bianca Schroeder, Garth A. Gibson, “Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you?” appeared in the Proceedings 5th USENIX Conference on File and Storage Technologies, Feb, 13-16 2007)は、膨大な量の故障を調べた上で次の事実を発表しています。
- ハードディスクの故障率はメモリーと同じく高い。なお、CPUはハードディスクより250%故障率が低く、マザーボードはハードディスクよりも50%故障率が低い。
つまり故障率に関しては、HDD=RAM >> motherboard >> CPU。 - ハードディスクの年間交換率(ARR: Annual Replacement Rate)は3%で、メーカーの試算よりずっと高い。しかも、安価なSATAに比べて、高価なSCSIやFCの方が良いという事実はない。他方、メーカーのデータシートに記載されているもっとも高い年間故障率(AFR: Annualized Failure Rate)は0.88%である。
- ハードディスクは次々壊れる。エラーが立て続けに生じると,ハードディスク・ドライブが故障する確率も増加する。RAIDシステムは「1台目のハードディスクが故障しても、2台目のハードディスクはすぐに故障しない」ことを前提にしているが、ゆえにこの仮定は危うい。
それがグリッドコンピューティングとどう関係するのか。それはサーバがたくさん繋がっていたら故障確率がどうなるのか計算してみればわかります。コンピュータの中にある故障可能な部品はハードディスク、メモリ、電源、マザーボード、CPU、ネットワーク、ファンなどなど一杯あるのです。次の図をご覧ください。
仮にあなたが1000ノードとかのグリッドコンピューティング環境を導入したとする。メーカーの人たちは喜ぶでしょう(社長賞モノ)。グリッドコンピューティングシステムも無事稼働してシステムインテグレータも大喜び。それでメーカーの人もインテグレータの人も去った後、翌年、翌々年、故障確率が上がってくればどうなるか...
この図が示しているのは毎日故障部品の交換に追われる保守地獄の世界です。実際、東工大の学術系グリッドTSUBAME(2007年初時点で655ノード)も「この規模のスパコンの計算ノードとしては1週間に1台程度のハード故障というのは普通の頻度であると思われる」らしい(安藤壽茂、「国内最速スパコン 東工大TSUBAMEの飛翔」、マイコミジャーナル 2007/01/08)。
「RAIDにすれば信頼性が向上します」と言う営業マンがいれば、「RAIDでデータは救われても(部品点数が増えるので)逆に故障は増えませんか」と切り返す。「グリッドにミドルウェアを使えばフォールトトレラント(耐障害性向上)の効果もあります」とコンサルタントが説明してきたら、「ミドルウェアがフォールトトレラントでもその上のアプリケーションがフォールトトレラントでなければ意味無いでしょ」と突っ込みを入れる。まとめれば、そういった常識を働かせないとグリッドコンピューティングは大変な後悔につながる買い物だということです。