Is there now an information that can be use to determine the minimal amount of cycles that needs to be retain before deleting a canister?
Earlier this year there wasn’t such information (post) and there was a discussion about adding
freezing_threshold_in_cycles to the spec which was discussed in the PR #18.
As far as I understand it was merged but then the field was renamed to
idle_cycles_burned_per_second in PR #31.
Then I loose track and it seems that none of these now exists in the spec.
idle_cycles_burned_per_day actually seems to exists because if found it in the ic_cdk::api doc but don’t think “amount of cycles burned per day.” is actually that information I am looking for.
Did the original discussion totally shift and ultimately no information regarding the minimal cycles to preserve to delete a canister was added?
I can find some results when I search for
idle_cycles in the master branch version of the spec.
Anyways, what are you trying to do? I would assume it’s about removing as many cycles as possible from a canister before deleting it. To find the optimal number of cycles, we’ll have to look at how freezing works:
- A canister gets frozen (rendered unresponsive) if it goes below
freezing_threshold * cycles_burned_per_second (the freezing threshold is a number of seconds)
cycles_burned_per_second is determined by the amount of memory the canister uses. (Remember the 5$/GB/year? that’s what that refers to)
- The freezing threshold can be updated to arbitrary numbers:
dfx canister update-settings --freezing-threshold <seconds>
- Assuming you set the freezing threshold to something tiny (say 10 seconds for example) you should be able to send out almost all cycles in the canister before stopping/deleting it
- For exact numbers I recommend you test locally. The local replica’s behaviour in regards to cycles should exactly mirror mainnet.