分散コンピューティング フレームワークとしての実現可能性について、Microsoft Orleansをテストしています。うまくいくようですが、特定のサイロでアクティブな穀物の最大数を設定するにはどうすればよいのでしょうか?
私のグレインは純粋に CPU バウンドではなく、いくつかの IO およびその他の関連タスクを実行します。暴走させると、膨大な数のインスタンスがスピンアップし、全体が動かなくなるのではないかと心配しています。
このようなサイロ構成は可能ですか?
分散コンピューティング フレームワークとしての実現可能性について、Microsoft Orleansをテストしています。うまくいくようですが、特定のサイロでアクティブな穀物の最大数を設定するにはどうすればよいのでしょうか?
私のグレインは純粋に CPU バウンドではなく、いくつかの IO およびその他の関連タスクを実行します。暴走させると、膨大な数のインスタンスがスピンアップし、全体が動かなくなるのではないかと心配しています。
このようなサイロ構成は可能ですか?
すべてのブロック操作をスレッド プールにオフロードし、MaxActiveThreads をデフォルト (#cores) のままにしておくことをお勧めします。基本的に、Orleans スレッド (それらの MaxActiveThreads) をブロックしたくありません。これらの Orleans スレッドは、軽い計算を実行し、(他のグレインまたは外部サービスに対して) 外部非同期呼び出しを発行する必要があります。すべての重い計算は、Orlean のスレッドでは実行しないでください。
それを行っても、シングルスレッドの実行保証を維持できます。ここを参照してください: http://dotnet.github.io/orleans/Advanced-Concepts/External-Tasks-and-Grains