dotnet/orleans

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

Open

#2,018 创建于 2016年8月4日

在 GitHub 查看
 (2 评论) (0 反应) (0 负责人)C# (2,123 fork)batch import
hacktoberfesthelp wanted

仓库指标

Star
 (10,777 star)
PR 合并指标
 (平均合并 2天 2小时) (30 天内合并 64 个 PR)

描述

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)?

贡献者指南