平均すると、Googleのサーバの3台に1台ほどで、1年当たり1回の訂正可能なメモリエラーが発生し、100台に1台で1回の訂正不可能なエラーが発生する。訂正不可能なエラーは通常、クラッシュを引き起こす。多いようですが、それぐらいは発生する気がします。昔聞いた話で、突発的かつ継続的では無いメモリのビットエラーの発生要因は故障ではなく、宇宙線によるものだという話を聞いたことがありますが、本来のメモリのビットエラーの確率と宇宙線による影響の確率を足すと、かなり高い確率になるかも・・・。
(中略)
以前の研究では、例えば300台規模のコンピュータクラスタからのデータで、メモリモジュールでの訂正可能なエラーの発生率が、稼働時間10億時間当たり 200回から5000回であることが示されていた。しかしGoogleは、10億時間当たりのエラーが2万5000回から7万5000回と、発生率がはるかに高いことを発見した。
高い信頼性や可用性が求められる場合、可動部のあるHDDやFANなどと同様にメモリやその他半導体製品も壊れることを前提にかんがえなければいけないんでしょうね。そうなると冗長化する・・・という事になるのですが、冗長化も諸刃の剣な面があって、冗長機能をつかっている故に発生するバグとか、冗長機能そのもののバグとかに当たる確立があるので、安易に信頼はできないんですよ。結局システムの可用性をあげるためには(バクに遭遇しにくくするためには)、1ヶ所で沢山の機能を動かすことは止めて、機能ごとに複数箇所に分散することなのかなと。その上で各々で故障に対処する冗長化を図ることで、冗長機能の故障時の機能低下を最低限に抑えることができるのかな。とか、少し考えてみた。
コメント