-
Notifications
You must be signed in to change notification settings - Fork 683
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement cumulus StorageWeightReclaim as wrapping transaction extension + frame system ReclaimWeight #6140
base: master
Are you sure you want to change the base?
Conversation
I would say it depends. When you are required to put |
Going through the pipeline should be cheap anyway. It's just extensions which are pretty light and the "wasted" work for overweight transactions should be done off-chain when validators are building their blocks. Because the weight check isn't hardcoded and users can build whatever extension they like to handle it, we need to have some sort of convention when we introduce other weight related logic. I skimmed through the PR and I like the approach, but I won't formally approve because I didn't review thoroughly. |
Maybe it is time to split this transaction extension into EDIT: or we can do the EDIT: or we can use a storage to store the weight refunded by EDIT: I decided to with a new storage Later we can introduce another |
… --pallet cumulus_pallet_weight_reclaim'
…d bridge-hub-rococo bridge-hub-westend collectives-westend contracts-rococo coretime-rococo coretime-westend people-rococo people-westend --pallet cumulus_pallet_weight_reclaim'
…tem --clean'" This reverts commit eebb5c7.
//! HOSTNAME: `gleipnir`, CPU: `AMD Ryzen 9 7900X 12-Core Processor` | ||
//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("asset-hub-westend-dev")`, DB CACHE: 1024 | ||
//! HOSTNAME: `697235d969a1`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` | ||
//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I used /cmd bench --pallet frame_system_extensions
to run this benchmark.
Somehow this doesn't give a chain anymore.
Is there some specific settings where giving a chain would change the result of the benchmarks?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
afair it's expected behavior for frame-omni-bencher
right, @ggwpez ?
btw, for now it's still better to use old command bot, as this one we still test/tweak - Here's docs for old one https://command-bot.parity-prod.parity.io/static/docs/latest.html?repo=polkadot-sdk, but maybe you can leave these results if they look fine
Once it's tested we'll notify everyone on forum about new bot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great to know, also the new /cmd seems to have missed coretime-rococo
, coretime-westend
, people-rococo
, people-westend
when I wrote /cmd bench --pallet frame_system_extensions
. (I might mistaken)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm I think this is since we use the --runtime
argument, and it is not extracting the chain spec name. But it should, good find: #6320
PR should be ready for review, I updated the description |
(rebasing of #5234)
Issues:
CheckWeight
.Done:
a new storage
ExtrinsicWeightReclaimed
in frame-system. Any logic which attempts to do some reclaim must use this storage to avoid double reclaim.a new function
reclaim_weight
in frame-system pallet: info and post info in arguments, read the already reclaimed weight, calculate the new unused weight from info and post info. do the more accurate reclaim if higher.CheckWeight
is unchanged and still reclaim the weight in post dispatchReclaimWeight
is a new transaction extension in frame system. For solo chains it must be used last in the transactino extension pipeline. It does the final most accurate reclaimStorageWeightReclaim
is moved from cumulus primitives into its own pallet (in order to define benchmark) and is changed into a wrapping transaction extension.It does the recording of proof size and does the reclaim using this recording and the info and post info. So parachains don't need to use
ReclaimWeight
. But also if they use it, there is no bug.