dotnet/orleans

grain placement strategy: balance across silos by activation count of specific grain type

Open

#2,018 opened on 2016年8月4日

GitHub で見る
 (2 comments) (0 reactions) (0 assignees)C# (2,123 forks)batch import
hacktoberfesthelp wanted

Repository metrics

Stars
 (10,777 stars)
PR merge metrics
 (平均マージ 2d 2h) (30d で 64 merged PRs)

説明

I'm building a simulator in Orleans to generate load for testing an Orleans system under realistic conditions, and would like the same number of simulator grains to run on each silo to ensure each silo is generating the same amount of load. (Or if the total number of simulator grains isn't evenly divisible by the number of silos, then as close as possible to being the same with some remainder.)

These simulator grains make calls into other app grains, which cascades into many other grain calls, all of which interact with grains only on the same silo. When the system runs in production, the partitioning and grain placement strategy of the regular app grains should evenly distribute the load.

A new placement strategy seems necessary to achieve this, one that is activation-count-based placement, but looks at activation counts across silos for a single grain type, and activates new grains of that type on the silo with the fewest of those activations. A threshold value representing the level of imbalance to tolerate before rebalancing seems to fit in here.

Does this sound like a useful placement strategy for more than my load generation scenario?

Is there a better placement strategy for what I'm attempting (whether Orleans currently supports it or not)?

コントリビューターガイド