How many ingress and inter-canister messages can a subnet process?

If you’re referring to the high performance ledger project, I believe that scalability comes from the aggregator (load balancing) canisters being on different subnets, moreso than having multiple aggregators on the same subnet, although I guess you could raise the compute allocation and reserve 3 cores at once.

When talking about a single subnet, due to the number of cores per subnet I believe you’d want canisters to send messages to a small number of canisters (1-4) on that subnet, right? For the sake of this example, let’s say 1k canisters are sending a message to one canister on the same subnet. That one canister is already loaded into the sandbox, so it only needs to be spun up once and can then process all the messages in it’s ingress queue.

So in this example, the message receiver canister would be fairly efficient and not contributing significant load, but the individual canisters doing work and sending out the calls to the receiver canister would be putting significant load on the system on account of all of the various bottlenecks & overhead you mentioned (sandbox processes, cloning of canister state, etc.). Or do these same overheads apply to processing many messages in the same execution round, such as needing to re-clone the state after every ingress queue message is processed?

1 Like