contracts: Add automated weights for wasm instructions (#7361)
* pallet_contracts: Inline benchmark helper that is only used once * Move all max_* Schedule items into a new struct * Limit the number of globals a module can declare * The current limits are too high for wasmi to even execute * Limit the amount of parameters any wasm function is allowed to have * Limit the size the BrTable's immediate value * Add instruction benchmarks * Add new benchmarks to the schedule and make use of it * Add Benchmark Results generated by the bench bot * Add proc macro that implements `Debug` for `Schedule` * Add missing imports necessary for no_std build * Make the WeightDebug macro available for no_std In this case a dummy implementation is derived in order to not blow up the code size akin to the RuntimeDebug macro. * Rework instr_memory_grow benchmark to use only the maximum amount of pages allowed * Add maximum amount of memory when benching (seal_)call/instantiate * cargo run --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark --chain dev --steps 50 --repeat 20 --extrinsic * --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output ./bin/node/runtime/src/weights --header ./HEADER --pallet pallet_contracts * Added utility benchmark that allows pretty printing of the real schedule * review: Add missing header to the proc-macro lib.rs * review: Clarify why #[allow(dead_code)] attribute is there * review: Fix pwasm-utils line * review: Fixup rand usage * review: Fix typo * review: Imported -> Exported * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs * contracts: Adapt to new weight structure * contracts: Fixup runtime WeightInfo * contracts: Remove unneeded fullpath of WeightInfo type * Apply suggestions from code review Co-authored-by:Andrew Jones <ascjones@gmail.com> * Fix typo in schedule.rs Co-authored-by:
Andrew Jones <ascjones@gmail.com> * Fix docs in schedule.rs * Apply suggestions from code review Co-authored-by:
Nikolay Volf <nikvolf@gmail.com> * Don't publish proc-macro crate until 3.0.0 is ready * Optimize imports for less repetition * Break overlong line Co-authored-by:
Parity Benchmarking Bot <admin@parity.io> Co-authored-by:
Andrew Jones <ascjones@gmail.com> Co-authored-by:
Nikolay Volf <nikvolf@gmail.com>
Showing
- substrate/Cargo.lock 25 additions, 2 deletionssubstrate/Cargo.lock
- substrate/bin/node/runtime/src/lib.rs 1 addition, 4 deletionssubstrate/bin/node/runtime/src/lib.rs
- substrate/bin/node/runtime/src/weights/pallet_contracts.rs 0 additions, 294 deletionssubstrate/bin/node/runtime/src/weights/pallet_contracts.rs
- substrate/frame/contracts/Cargo.toml 9 additions, 1 deletionsubstrate/frame/contracts/Cargo.toml
- substrate/frame/contracts/proc-macro/Cargo.toml 27 additions, 0 deletionssubstrate/frame/contracts/proc-macro/Cargo.toml
- substrate/frame/contracts/proc-macro/src/lib.rs 142 additions, 0 deletionssubstrate/frame/contracts/proc-macro/src/lib.rs
- substrate/frame/contracts/src/benchmarking/code.rs 231 additions, 28 deletionssubstrate/frame/contracts/src/benchmarking/code.rs
- substrate/frame/contracts/src/benchmarking/mod.rs 857 additions, 44 deletionssubstrate/frame/contracts/src/benchmarking/mod.rs
- substrate/frame/contracts/src/benchmarking/sandbox.rs 52 additions, 0 deletionssubstrate/frame/contracts/src/benchmarking/sandbox.rs
- substrate/frame/contracts/src/lib.rs 4 additions, 4 deletionssubstrate/frame/contracts/src/lib.rs
- substrate/frame/contracts/src/schedule.rs 357 additions, 61 deletionssubstrate/frame/contracts/src/schedule.rs
- substrate/frame/contracts/src/wasm/mod.rs 9 additions, 8 deletionssubstrate/frame/contracts/src/wasm/mod.rs
- substrate/frame/contracts/src/wasm/prepare.rs 163 additions, 29 deletionssubstrate/frame/contracts/src/wasm/prepare.rs
- substrate/frame/contracts/src/wasm/runtime.rs 6 additions, 7 deletionssubstrate/frame/contracts/src/wasm/runtime.rs
- substrate/frame/contracts/src/weight_info.rs 0 additions, 341 deletionssubstrate/frame/contracts/src/weight_info.rs
- substrate/frame/contracts/src/weights.rs 1267 additions, 0 deletionssubstrate/frame/contracts/src/weights.rs
Please register or sign in to comment