2016-12-26 1 views
1

私はChordのようないくつかの分散システムについていくつかの研究をしていますが、分散システムのシミュレーションを私のデスクトップだけで実行できるようにしたいと思います。SimPyを使ってChord分散システムをシミュレートする

シミュレーションでは、各ノードを独立して実行し、手動でラグ、パケット損失、ランダムクラッシュなどの要素を誘導しながら、相互に通信できるようにする必要があります。次にデータを収集して、システム。

検索した後、私はSimPyが私の目的に適した候補であると感じます。

SimPyはこのタスクに適したライブラリですか? はいの場合、そのようなシステムを実装するためのいくつかの提案/警告はありますか?

答えて

1

私ははいと言います。

私は博士論文の一部として任意の通信ネットワークをシミュレートするためにSimPy(バージョン2)を使用しました。それは、しかし、ビット緻密ではない、非常によく文書化されて

https://github.com/IncidentNormal/CommNetSim

:あなたはここにコードを見ることができます。また、2はもはやサポートされていないので、実際にはSimPyバージョン3に変換する必要があります(3つは、2で見つけた一連の制限を修正します)。

いくつかの概念/アイデアは私が有用であることが判明:

  • ワークアウトあなたがそれを実装を開始する前に、シミュレーションの外にしたいです。通信ネットワークのシミュレーションは、システムからの緊急行動を効果的に監視/測定しようとしているため、小さな設計変更に対して非常に敏感です。
  • シミュレーションからオーバーエンジニアリングを開始するのは簡単です。ネイティブのSimPyオブジェクトを使用すると、デザインからノイズを取り除くときにほとんど常に十分です。
  • ストアを使用して、パケット/ペイロードを転送するためのメディアをシミュレートします。 https://simpy.readthedocs.io/en/latest/examples/latency.html
  • イベントはトリッキーです - シミュレーションステップごとに1回しか起動できないため、多くの場合、動作が事実上失われるため、バグの原因となることがあります。一歩の同じ出来事。堅牢性のために、上記のように通信ネットワーク(低レベルのものはほとんど必要ありません)で動作を表現するためにそれらを使用しないでください。
  • ランダム性を生成するために使用する確率分布に注意してください。広域分布は通常、均一分布よりも自然システムのシミュレーションに近いですが、使用するすべての分布を確認してください。例えば、ネットワークトラフィックの生成は、通常、ポアソン分布に従い、データ量は、しばしば電力法(パレート)分布に従う。
関連する問題