Why compute allocation counts toward freezing threshold

The freezing limit (in cycles) is the freezing threshold (in time) multiplied by the current “base cycle burn rate” of the canister. The question what is part of the “base cycle burn rate” and what isn’t. And why.

Part of the “base cycle burn rate” is the storage cost at the canister’s current memory usage and also the compute allocation cost at the canister’s current compute allocation. The question is why is the compute allocation in there? If the purpose of the freezing threshold is only to prevent data loss then the IC could simply set the canister’s compute allocation to 0 while the canister is frozen. A frozen canister cannot use the compute allocation anyway.

So I believe the only reason to keep the compute allocation up is so that the canister cannot lose the allocation? If it was set to 0 then other canisters could buy up 100% of compute allocation on that subnet and then the canister would not be able to get it back when it comes out of the frozen state. Is that the reason?

2 Likes

Exactly. Compute is a very finite resource per subnet. Compute allocation represents a reservation or guarantee that this resource will be allocated to the canister when needed…