スーパーコンピューターの性能が向上するにつれて、内蔵コンポーネントの増加により、故障に対する脆弱性も高まります。先週ユタ州ソルトレイクシティで開催されたSC12会議では、数人の研究者がこの問題の解決策を提案しました。

今日の高性能コンピューティング(HPC)システムは10万ノード以上で構成され、各ノードはメモリ、プロセッサ、バス、その他の回路といった複数のコンポーネントで構成されています。統計的に言えば、これらのコンポーネントはすべていずれ故障し、そうなると動作が停止すると、ノースカロライナ州立大学の博士課程学生であるDavid Fiala氏はSC12での講演で述べました。
もちろん、この問題は新しいものではありません。ローレンス・リバモア国立研究所の600ノードASCI(Accelerated Strategic Computing Initiative)ホワイト・スーパーコンピュータが2001年に稼働を開始した当時、平均故障間隔(MTBF)はわずか5時間でした。これはコンポーネントの故障が一因でした。その後のチューニング作業により、ASCIホワイトのMTBFは55時間にまで改善されたとフィアラ氏は述べています。
しかし、スーパーコンピュータのノード数が増加するにつれて、問題も深刻化します。「この問題には何らかの対策が必要です。エクサスケールに移行するにつれて、さらに悪化するでしょう」とフィアラ氏は述べ、今後10年間のスーパーコンピュータは現在のモデルの10倍の計算能力を持つと予想されていることに言及しました。
フィアラ氏は、今日のシステム障害への対処技術は拡張性に乏しい可能性があると述べた。彼はチェックポイント処理を例に挙げた。これは、実行中のプログラムを一時的に停止させ、その状態をディスクに保存するものだ。その後、プログラムがクラッシュした場合でも、システムは最後のチェックポイントからジョブを再開できる。

フィアラ氏によると、チェックポイントの問題は、ノード数が増加するにつれて、チェックポイントに必要なシステムオーバーヘッドも増大し、しかもその増加率は指数関数的であるという。例えば、10万ノードのスーパーコンピュータでは、処理の実行に要するアクティビティは全体の約35%に過ぎない。残りはチェックポイントと、システム障害発生時の復旧処理に充てられるとフィアラ氏は推定している。
エクサスケール・システムは百万個以上の部品から構成されることもあるため、必要な追加ハードウェアの多さから、今日のスーパーコンピュータと同じMTBFを維持するためには、システムの信頼性を100倍向上させる必要があるとフィアラ氏は述べた。
古くて良いアドバイス:データのバックアップ
フィアラ氏は、自身と研究仲間が開発した、信頼性の向上に役立つ可能性のある技術を発表しました。この技術は、システムがディスクにデータを書き込む際に検出されないエラーが発生する、サイレントデータ破損の問題に対処します。
研究者たちのアプローチは、基本的に、プログラムの複数のコピー、つまり「クローン」を同時に実行し、その結果を比較するというものです。RedMPIと呼ばれるこのソフトウェアは、実行中のアプリケーションを複数のサーバーに分割し、プログラムの異なる部分を並列実行するためのライブラリであるMessage Passing Interface(MPI)と連携して実行されます。
RedMPIは、アプリケーションが送信するすべてのMPIメッセージを傍受してコピーし、そのコピーをプログラムのクローン(複数可)に送信します。異なるクローンが異なる結果を計算する場合、その場で数値を再計算できるため、プログラム全体を再実行する必要がなくなり、時間とリソースを節約できます。
「冗長性の実装はそれほど費用がかかりません。必要なコア数は多くなるかもしれませんが、チェックポイントからの再開による書き換えは避けられます」とフィアラ氏は述べた。「もちろん、代替案としては、正しい答えが得られるまでジョブを単に再実行することしかありません。」
フィアラ氏は、三重の冗長性を確保するために、各プログラムのバックアップコピーを2つ作成することを推奨しました。プログラムを複数コピーすると当初は多くのリソースを消費しますが、時間の経過とともに、回答を確認するためにプログラムを再実行する必要がなくなるため、実際にはより効率的になる可能性があります。また、複数のコピーを実行する場合、チェックポイントの設定も不要になる可能性があり、これもシステムリソースの節約につながります。

「冗長化というアイデアは実に素晴らしいと思います。数十万のノードが関わる非常に大規模な計算では、エラーが入り込む可能性は確かにあります」と、プレゼンテーションに出席したカリフォルニア大学サンタクルーズ校のコンピュータサイエンス教授、イーサン・ミラー氏は述べた。しかし、冗長化によって発生する可能性のあるネットワークトラフィックの量を考えると、このアプローチは適切ではないかもしれないとミラー氏は指摘した。ミラー氏は、すべてのアプリケーションを同じノード群で実行することで、ノード間トラフィックを最小限に抑えることを提案した。
別のプレゼンテーションでは、イリノイ大学アーバナ・シャンペーン校の博士課程学生であるアナ・ガイナル氏が、ログファイルを分析してシステム障害の発生時期を予測する手法を紹介しました。
この研究は、信号解析とデータマイニングを組み合わせたものです。信号解析は通常の動作を特徴付けるために使用されるため、障害が発生した場合、容易に特定できます。データマイニングは、個別に報告された障害間の相関関係を探します。ガイナル氏によると、ある技術の障害が他の技術のパフォーマンスに影響を与える可能性があるため、他の研究者は複数の障害が相互に相関している場合があることを示しています。例えば、ネットワークカードに障害が発生すると、ネットワーク通信に依存する他のシステムプロセスにもすぐに支障が生じます。
研究者たちは、相関性のある障害の70%に10秒以上の機会の窓があることを発見しました。言い換えれば、障害の最初の兆候が検出されると、システムはより重大な障害が発生する前に、作業を保存するか、別のノードに作業を移動するために最大10秒の猶予があるということです。「障害予測は他のフォールトトレランス技術と組み合わせることができます」とガイナル氏は述べています。
ジョアブ・ジャクソンは、IDGニュースサービスでエンタープライズソフトウェアとテクノロジー全般の最新ニュースを担当しています。Twitterで@Joab_Jacksonをフォローしてください。ジョアブのメールアドレスは[email protected]です。