前回Googleを支える大規模な分散システムについて、3回にわたってまとめた。今回はそれらのシステムのコストについて見ていく。コスト削減の工夫についても、主にハードウェアと電力の点から解説する。
はじめに —何にいくら必要なのか
少なからぬハードウェア費用
Googleが2004年に新規上場したときの資料によると、Googleがそれまでにハードウェアに投じた費用は総額2億5000万ドル。当時のGoogleのマシン数は5万台前後といわれている。ここではGoogle上場時のデータを基準として、システムのコストを次の4つに分けて考える。
- ハードウェア
- 電力
- 保守運用
- ソフトウェア
安価なハードウェアによるコスト削減
ハードウェアのコストは説明するまでもなく、コンピュータやネットワーク機器のための費用である。総額275億円を上場までの5年で割ると、1年あたりにして55億円である。
電気代はハードウェアほどには高くない
電力のコストは、定期的な電気代と、電力を確保するための設備費用とに分けられる。コンピュータ1台あたりの電力を仮に100Wとして、5万台を24時間フル稼働させるとしたら、年間の電気代は5億円前後である(10〜15円/kWhと想定)。
間接的に上乗せされる電力の設備コスト
電力の設備費用は、電力1Wあたり1000〜2000円程度といわれており、そこから算出すると総額50〜100億円だといえる(年間5〜10億円程度)。
増加傾向にある電力コスト
保守運用のコストは主に人件費であるが、2004年時点で運用に携わる社員は350人。1人あたりの年俸を500万円とすると、年間の人件費は17.5億円である。
ソフトウェアのコストも主に人件費である(内製しているため)。上場時の研究開発部門596人のうちの1/10〜1/2として、仮に年俸1000万円とすると、システム開発費は年間6〜30億円である。
以上のように、Googleの運用コストの約46%は、ハードウェアによるものである。そして性能の向上を続けるCPUのため、消費電力は年々増加している。以下に、CPUの電力についてまとめる。
1 ハードウェア —CPUは何に電気を使うのか
電力と性能の関係とは
電力とは、基本的に「電力(W)=電圧(V)×電流(A)」という式によって表される。
CMOS回路の消費電力
今日の一般的なCPUは、CMOS(Complementary Metal Oxide Semiconductor)と呼ばれる技術によって作られている。「動作電力=α×C×V2×f」と表され、CPUの消費電力はおおむねスイッチの頻度(α)に合わせて大きくなり、個々の回路の静電容量(C)に応じて大きくなり、電圧の二乗(V2)とクロック周波数(f)に比例して大きくなる、ということである。
消費電力を抑えるためにできること
この式から、消費電力を抑えるためには以下の対策が挙げられる。
- スイッチの頻度を低くする
- 静電容量を小さくする
- 電圧とクロックを下げる
クロック単位の処理効率を上げる
そもそもCPUの性能とは、大まかに「CPU性能=f×IPC」という式で表される。fはクロック周波数で、IPC(Instruction Per Cycle)とは1回のクロックサイクルで実行できる命令の数である。
著書ではパイプライン(1つの命令をいくつかの段階(ステージ)に分けて、複数の命令を同時並行で実行するもの)、IPCとクロック周波数の関係、スーパースカラー(パイプラインを複数並べること)の説明がされ、最大性能から電力性能比が重視される時代になっていることが挙げられている。
マルチコアによる性能向上
現在では、マルチコアといった1つのCPUパッケージの中に複数のCPUコアを入れることで、性能向上を図っている。
2 電力 —PCとデータセンター
PCの消費電力を削減する
高クロックのCPUでは電力効率が悪い
検索クラスタの中で、最もCPUを酷使するのはインデックスサーバである。そのため、インデックスサーバには低クロック高IPCのCPUを選んだ方がよい。
マルチスレッドを生かして電力効率を上げる
CPUの処理効率を上げるもう1つの方法は、ソフトウェア側での「マルチプロセス」あるいは「マルチスレッド」による処理の並列化である。
電源の効率を向上させる
電源によるロスも消費電力の割合として全体の25%と、かなり多い。ここでいう電源とは、デスクトップPCに付いている「PSU」(Power Supply Unit)というパーツのことである。PSUの役割は、外部電源(交流100Vなど)から供給された電力を、マザーボードが必要とする電力(直流12Vなど)に変換することである。この変換のときに一部エネルギーが熱として逃げてしまい、そのために電力が失われる(一般的に60〜70%)。
PSUから無駄を省いて、12Vの電圧だけを残すようにすると、電源効率は85〜90%程度に向上する。Googleでは独自に効率的な電源を開発しており、すでに90%以上の電力変換効率を実現している。
データセンターの電力配備
ピーク電力はコストに直結する
ピーク電力は、データセンターのコストに直結する。第一に契約上の問題として、消費電力をなるべく標準化することでピーク電力を抑えられれば、コストが削減される。また、設備面においてもデータセンターには停電に備えての蓄電・発電設備や、冷却のための空調設備などが必要であるため、同じくピーク電力が抑えられればコスト削減できる。
決まった電力で多くのマシンを動かしたい
これは設備の稼働率の問題である。データセンターの利用効率を上げながらも、電力に余裕を持たせることを両立していかなければなりません。
電力配分を階層的に設計する
データセンター内部では、二系統の電力線を用いて障害に備えている。運ばれた電力はSTS(Static Transfer Switch)と呼ばれる装置で途切れないように切り替えられ、PDU(Power Distribution Unit)を通してラックに分配されている。各PDUには、20〜60程度のラックが接続されており、ブレーカーによる物理的な電力制限が設けられる。これによって部分ごとの最大電力が保証されるので、データセンター全体としての電力配分を設計することが可能となる。
電力枠を使い切るのは難しい
電力設備の利用効率を上げるには、なるべく上限ギリギリのところで電力を使い続けることが理想である。しかし、実際には下記のような様々な理由から利用効率が低下する。
- 段階的な機器導入
- 未使用の電力枠
- データシートとの違い
- 消費電力の変動
- 統計的な変動
マシンが増えれば電力も標準化される
電力消費の傾向、パワーキャッピング(システムの消費電力があらかじめ設定された量を超えそうなとき、システムの負荷を下げるようにフィードバックすること)、平均消費電力といったことから、多様なマシンを組み合わせることが電力の利用を効率化する可能性を示唆している。
省電力技術によりコスト効率が高まる
現在のPCは、ただ電源を入れているだけでもピーク時の50%近くの電力を消費しており、多くの電力を無駄にしている。CPU負荷が小さいときに消費電力を下げるといった省電力技術によって、ピーク電力で30%、消費電力全体では50%以上の削減になる。
工夫次第で設備効率は二倍にもなる
Googleでの実測値に基づく推定によると、利用頻度の異なる様々なマシンを同じPDUの下に接続するといった方法によって、単純にデータシートに従って安全に設計する場合と比べて、配備できるマシンの数は二倍にも達するようである。
3 ハードディスクはいつ壊れるか
10万台のハードディスクを調査する
ハードディスクドライブ(Hard Disk Drive、以下ディスクドライブ)はよく故障するが、Googleではそうした故障ではデータが失われることの内容システムを構築している。ここでは2007年の論文「Failure Trends in a Large Disk Drive Population」を参考に、ディスクドライブがどのように故障するかについてみていく。
故障の前兆となる要因は何か
調査の対象となったのは、シリアルもしくはパラレルATAの一般的なディスクドライブ。回転数は5400〜7200rpmで、容量は80〜400GBである。計測された内容は、以下の3点である。
- 読み書きの頻度
- ディスクドライブの温度
- その他、SMARTの各種パラメーター
長く使うと壊れやすくなるわけではない
まず「年間平均故障率」(Annualized Failure Rate、以下AFR)である。新しいドライブは故障しやすいともいわれるが、実際AFRはそれがいつどこで作られたかによって決まる部分が大きいようである。
よく使うと壊れやすくなるとも限らない
一般的に、ディスクドライブに頻繁にアクセスするほど故障率も高まると信じられている。しかし、利用頻度と故障率との間には、これまでいわれてきたほどの明らかな相関は見られない。
温度が高いほど壊れやすいということもない
30〜40度近辺が最も壊れにくくなるようである。
いくつかのSMART値は故障率に大きく影響する
「ディスクドライブの自己診断機能」(SMART)によって得られる値が、故障率にどのように影響するのか見ていく。以下の「スキャンエラー」「リアロケーション数」「オフラインリアロケーション」「リアロケーション前のセクタ数」の4つは、故障率に大きくかかわる値である。
スキャンエラー(Scan Error)は、ディスク表面の障害などによって読み込みができなくなったときに発生する。これはおおむね、ディスクドライブ全体の2%くらいの割合で発生する。
リアロケーション数(Reallocation Count)は、何らかの理由でディスクの読み書きに失敗したときに、その障害を回避するために別の場所を用いるように変更した回数を表す。これはおおむね、9%に発生する。
オフラインリアロケーション(Offline Reallocation)は、ディスクの読み書き中にではなく、ディスクドライブが手の空いているときに自主的に行うリアロケーションである。これはおおむね、4%に発生する。
リアロケーション前のセクタ数(Probational Count)は、障害があるけれども、まだリアロケーションには至っていない数を表す。これはおおむね、2%に発生する。
故障率に影響しないSMART値も多い
前述のSMART値ほどはっきりした影響は見られないけれども、参考になる値を4つ挙げる。
- シークエラー(Seek Error)
- CRCエラー(Cyclic Redundancy Check Error、巡回冗長検査エラー)
- パワーサイクル(Power Cycle)
- 振動
SMART値だけではいつ故障するかわからない
SMART値によって故障が予測できるのは、全体の64%である。明確な予兆がないときの故障については予測が困難であるため、ハードディスクと正しく向き合い、いつ壊れても平気なようにシステムを設計する必要がある。
全米に広がる巨大データセンター
Googleは2006年以降、米国を中心に次々と自社のデータセンターを建設している。以下に5つの例を挙げる。
- オレゴン州ダレス(2006年完成)
- ノースカロライナ州レノア(2008年完成)
- サウスカロライナ州バークレー郡(2008年運用開始)
- オクラホマ州プライア(2008年完成)
- アイオワ州カウンシルブラフス(2009年運用開始)
データセンターに処理を集約させる—Bigdaddy
Bigdaddyは、2005年の終わりから2006年の初頭に掛けて、Googleのすべてのデータセンターに導入された新しい検索エンジンの基盤システムである。Bigdaddyでは「クロールキャッシングプロキシ」(Crawl Caching Proxy)と呼ばれる、クローラの処理を1ヵ所にまとめられた新しいクローリングのしくみが導入されている。また、「URLの正規化」(URL Canonicalization)によって、同一と判断されるWebページには同じキーを割り当てることで、共通の情報を格納した。
Googleは、小規模(数千台程度)なデータセンターと大規模(数十万程度)のデータセンターを、高速なネットワークで結ぶことで、1つの巨大なコンピュータサービスを行っている。
最後に
本稿では、大規模システムのコストを削減するためにGoogleがどのようなことに取り組んできたのか、主にハードウェアと電力の面から見てきた。
「The World Needs Only Five Computers」(世界にコンピュータは5つあれば足りる)といわれるほど、いま世界では大規模なコンピュータシステムが作られつつある。日本でもAmazonのEC2といったクラウドサービスが広まりつつあるため、もはやデータはそういった巨大システムに預かってもらう方がいい時代なのかもしれない。
次回はGoogleの開発体制についてまとめる。
|
Googleを支える技術 ~巨大システムの内側の世界 (WEB DB PRESSプラスシリーズ) |