研究概要 |
我々はこれまで、計算機1台上で動作するシミュレータを並列化・分散化することで複数台で動作するようにし、シミュレート可能規模を大きくすることを試みてきた。このアプローチは一定の成功を収め、数台で数倍規模のシミュレーションを達成した。しかし一方で、致命的な問題がいくつか明らかになった。シミュレーション速度は通信オーバヘッドによって大幅に、1桁~数桁、低下した。そして何よりも、今後の大規模化ではシミュレータが耐故障性を備えることが必須となっていくにもかかわらず、機能の開発・メンテナンスには極めて大きな時間と労力がかかることが判ってきた。 そこで我々は、既存の大規模データ処理システム、具体的にはMapReduce処理系や分散グラフ処理系を用いた分散システムシミュレーションの検討を始めた。つまり、シミュレーション対象をデータ処理の方式・システムで扱うのである。例えばMapReduce処理系Apache Hadoopには4,000台での動作実績があり、この規模でシミュレーションを行うことができれば、100万×4,000 = 40億ノード程度のシミュレーションが可能かもしれない。一方で、このアプローチには別の課題がある。こうしたデータ処理システムは、データ処理と計算機間通信を交互に繰り返すBulk Synchronous Parallel (BSP) モデルで動作する。これを素直に分散システムシミュレーションに適用すると、ノード間通信は一斉にしか行えないこととなり、これでは通信タイミングについて近似的なシミュレーションしか行えない。 Bulk Synchronous Parallel (BSP) モデルで分散処理を進めつつも、シミュレーション対象のノード群が通信を行う時刻、順序、依存関係を正しくシミュレートできる手法を開発した。それをMapReduce処理系の上に実装し、ある種の分散アルゴリズムをシミュレートできることを確認した。
|