简体   繁体   中英

How many Silos per machine in Microsoft Orleans

In Microsoft Orleans, should there be only one silo and hence only one host process per machine? Is it possible to have multiple silos/host processes per machine and would there be any scalability benefits to having multiple silos per host machine? Is there a recommended best practice as to the maximum number of processes or silos per machine to get the maximum scalability/performance benefits.

PS: I'm new to MS Orleans and in my review of the documentation I've not so far seen this addressed anywhere.

One silo per host is the recommendation. Running multiple silos per host is possible, but it is not likely that you will see scalability improvements and you are likely to see degraded performance. Each silo will take advantage of the CPU & memory which are made available to it.

This situation is not as clear cut in a container hosting environment, for example, Kubernetes. In those cases, you will typically have CPU & memory limits in place on each pod or container. So you can feasibly run multiple different microservices per host (each one hosting a silo, for example). There are still going to be some noisy neighbor effects from hosting multiple copies of the same code at different memory addresses (for example, considered that CPU cache is very limited).

Even in such environments, I would not recommend more than one silo per container. Per pod: perhaps, if that makes sense for your case. Per node, sure, as long as resource limits have been configured on the pods/containers/namespaces in which the silos are running.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM