Skip to content
  1. Jan 21, 2022
    • Kian Paimani's avatar
      HRMP benchmarks (#3876) · 3cb2d626
      Kian Paimani authored
      
      
      * wip template for hrmp benchmarks
      
      * add all of the benchmarks, first draft
      
      * File was not saved :/
      
      * cargo +nightly fmt
      
      * Use configs
      
      * add configs
      
      * Fix rococo
      
      * Final touches
      
      * revert fmt changes, one last time
      
      * Fix wrappings
      
      * Fix a bunch of tests
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::hrmp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_hrmp.rs
      
      * add to westend
      
      * actually use everything
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::hrmp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_hrmp.rs
      
      * Update runtime/parachains/src/hrmp.rs
      
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      
      * use real weight in wnd
      
      * reorg
      
      * minor cleanup
      
      * weigh some of the internal stuff as well
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::hrmp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_hrmp.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::hrmp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_hrmp.rs
      
      * add files
      
      * Master.into()
      
      * add validation
      
      * fmt
      
      * fmt
      
      * final fixes
      
      * all runtimes build
      
      * undo formatting
      
      * Update runtime/parachains/src/hrmp.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * non-controversial changes
      
      * do it the parachain-way: use const instead of type configs for simplicity.
      
      * borrow assert_storage_consistency_exhaustive
      
      * move assert_storage_consistency_exhaustive to Pallet, so it can be reused for benchmarks as well.
      
      * fix typo
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      Co-authored-by: default avatarSergey Shulepov <[email protected]>
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      3cb2d626
  2. Jan 20, 2022
  3. Jan 17, 2022
    • Sergey Pepyakin's avatar
      paras: do not allow PVF vote submission if disabled (#4684) · 815021ab
      Sergey Pepyakin authored
      if the PVF pre-checking is disabled the runtime dispatchable will reject
      any attempts of submission. This is also concern the unsigned tx
      validation.
      
      Right now, the `include_pvf_check_statement` dispatchable is effectively
      uncallable because of the weight set to the maximum value. If we were to
      benchmark it, it would become includable in a block, but since there
      will be no active votes, the dispatchable won't do anything.
      
      However, it will execute some code, like signature validation and
      querying some storage entries. To be completely safe, we can bail out
      early if the `pvf_checking_enabled` config is disabled. That's what this
      PR does.
      815021ab
  4. Jan 13, 2022
    • Sergey Pepyakin's avatar
      paras: Add runtime events for PVF pre-checking (#4683) · 21419a81
      Sergey Pepyakin authored
      In this PR, paras module emit runtime events on certain PVF pre-checking
      related conditions.
      
      Specifically, there are 3 new events in the paras module:
      
      1. PvfCheckStarted
      2. PvfCheckAccepted
      3. PvfCheckRejected
      
      All of those have identifiers for the parachain that triggered the PVF
      pre-checking and the validation code that goes through the pre-checking.
      
      The mechanics of those are as follows. Each time a new PVF is added, be
      it due to onboarding or upgrading, the `PvfCheckStarted` will be
      triggered. If another parachain triggers a pre-checking process for the
      validation code which is already being pre-checked, another
      `PvfCheckStarted` event will be triggered with the corresponding para
      id.
      
      When the PVF pre-checking voting for a PVF was finished, several
      `PvfCheckAccepted/Rejected` events will be triggered: one for each para id that
      was subscribed to this check (i.e. was a "cause" for it).
      
      If the PVF pre-checking is disabled, then one can still expect these
      events to be fired. Since insta PVF approval is syncronous, the
      `PvfCheckStarted` will be followed by the `PvfCheckAccepted` with the
      same validation code and para id.
      
      If somebody is interested in following validation code changes for a PVF
      of a parachain, they would need to subscribe to those events. I did not
      supply the topics for the events, since I am not sure if that's needed
      or will be used, but they can be added later if needed.
      21419a81
  5. Jan 07, 2022
  6. Jan 03, 2022
    • Keith Yeung's avatar
      Set CurrentCodeHash before running some dispatchable benchmarks (#4645) · 5047ef8e
      Keith Yeung authored
      
      
      * Set CurrentCodeHash before running some dispatchable benchmarks
      
      * Use insert instead of put
      
      * Actually hash the ValidationCode
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      5047ef8e
    • Sergey Pepyakin's avatar
      paras: split tests (#4636) · 575775a1
      Sergey Pepyakin authored
      This is only a module structure change: the tests module was promoted to
      have its own file.
      575775a1
  7. Dec 29, 2021
    • Sergey Pepyakin's avatar
      paras: add governance control dispatchables (#4575) · 4bf62d85
      Sergey Pepyakin authored
      
      
      * paras: add governance control dispatchables
      
      Adds a couple of functions for governance control for the paras module
      in the anticipation of PVF pre-checking enabling.
      
      Specifically, this commit adds a function for pre-registering a PVF that
      governance trusts enough. This function will come in handy in case there
      is a parachain that does not follow the GoAhead signal. That is, does
      not include https://github.com/paritytech/cumulus/pull/517.
      
      This may be not an exhaustive list of the functions that may come in
      handy. Any suggestions to add more are welcome.
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      4bf62d85
  8. Dec 06, 2021
  9. Nov 16, 2021
    • Bernhard Schuster's avatar
      move paras inherent filtering to runtime (#4028) · 1aa6a4ab
      Bernhard Schuster authored
      
      
      * move things around, add filter methods
      
      * validator keys, modify availability bitfields according to disputes
      
      * simplify, keep the filter -> sanitize generic for both usecases
      
      * minor
      
      * assure tests still work, reduce changeset
      
      * integration
      
      * start entropy passing
      
      * fixins
      
      * compile, 1 failing test
      
      * filter with coverage
      
      * fixins
      
      * Update runtime/parachains/src/paras_inherent.rs
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      
      * slip of the pen
      
      * improve test cases
      
      * misc
      
      * fix
      
      * fixins
      
      * test avoid extra into() calls in assert_noop!
      
      * chores
      
      * ff
      
      * test fixup superfluous into call
      
      * chore: pfmt
      
      * improve apply_block_weight_limit to try to maximize the number of sufficiently backed
      
      blocks and add extra bitfields in a round-robin fashion
      
      * new code treats the lack of backed candidates as ok
      
      * Use vrf based entropy
      
      * fixup vrf random
      
      * add warn
      
      * slip of the pen
      
      * fixup
      
      * assure ordering
      
      * rethink apply_weights
      
      * mock
      
      * use a closure as predicate check
      
      * extract and use DisputedBitfield
      
      * chore: simplify
      
      * remove stray dbg
      
      * chore: fmt
      
      * address feedback
      
      * fix test, halfway there
      
      * stage1
      
      * dbg stuff
      
      * make group selection align
      
      * fix session index
      
      * fix wrongly returned candidates
      
      * cleanup
      
      * chore fmt
      
      * fix ensure check
      
      * make good case test work
      
      * more tests for bitfields
      
      * create sanitize_backed_candidates
      
      * fixup tests
      
      * update guide
      
      * add check referenced in the guide
      
      * improve weights code
      
      * fmt
      
      * fixins
      
      * Update roadmap/implementers-guide/src/runtime/inclusion.md
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * compiling + address review
      
      * add comments
      
      * fix weight calc
      
      * address review comments and test failure
      
      * fix
      
      * fix: condition
      
      * Fix random_sel function
      
      * Fix overlength block check
      
      * Zeke + Ladi commit for disputes filtering + integration test builder + runtime benchmarks + integration tests
      
      * Add benchmarks for code upgrades
      
      * Code upgrade bench; Feature gate TestWeightInfo
      
      * Try and make CI happier
      
      * Feature gate enter test to not(benchmarks)
      
      * Make sure no unused imports/fn
      
      * refactor, re-use, the beginning
      
      * Fix issue with frame benchmarking dep compilation
      
      * More precise feature gating for some derives
      
      * integrate piece-wise
      
      * foo
      
      * fixins
      
      * chore fmt
      
      * fixins
      
      * rename const generic
      
      * Update runtime/parachains/src/paras_inherent.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Fix compilation
      
      * limit to test
      
      * remove unused spam slots
      
      * spellcheck
      
      * remove a tick, fix a typo
      
      * Add Code upgrade weights
      
      * comment improvements + >=
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * remove another tick
      
      * Update runtime/parachains/src/paras_inherent/benchmarking.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * saturating fixins + some spaces
      
      * fix
      
      * benchmarking - preliminary results
      
      * Add training wheels
      
      * Refactor some early exit logic for enter
      
      * Gracefully handle filtering bitfields & candidates (#4280)
      
      This updates the logic for sanitize_bitfields and sanitize_backed_candidates to never error when there is an issue, but instead to simply skip the problematic items.
      
      * Refactor inherent data weight limiting logic (#4287)
      
      * Apply suggestions from code review
      
      * Update runtime/parachains/src/builder.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update runtime/parachains/src/builder.rs
      
      * Update runtime/parachains/src/paras_inherent.rs
      
      * final pass
      
      * Run cargo +nightly-2021-10-29 fmt
      
      * Update implementors guide with `sanitize_*` & `enter` (#4294)
      
      * Make spell check happier
      
      * Make wasm runtimes compile with benchmarks enabled (#4303)
      
      * comment stuff out, use old toml
      
      * Seems to be working?
      
      * Remove feature gating from builder
      
      * Remove commented out stuff
      
      * Remove generic from digest
      
      * Update weight files for runtime
      
      Co-authored-by: default avatarRobert Habermeier <[email protected]>
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      Co-authored-by: default avatarLldenaurois <[email protected]>
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      1aa6a4ab
  10. Oct 06, 2021
    • Zeke Mostov's avatar
      Add benchmarking to rococo; Remove weights from runtime_parachains (#3914) · dc38cf89
      Zeke Mostov authored
      
      
      * Add benchmarking to rococo; Remove weights from runtime_parachains
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs --header=./file_header.txt
      
      * Impl TestWeightInfo for Paras and Configuration
      
      * fmt
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./runtime/rococo/src/weights/runtime_parachains_configuration.rs --header=./file_header.txt
      
      * Fix CI complaint: error: unused variable: `c`
      
      * polkadot-runtime-common & polkadot-test-runtime compile
      
      * xcm-simulator compile
      
      * change TestWeightInfo to max_block
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs --header=./file_header.txt
      
      * ordering
      
      * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=rococo-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./runtime/rococo/src/weights/runtime_parachains_paras.rs --header=./file_header.txt
      
      * Replace max_block with Weight::MAX
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      dc38cf89
  11. Oct 05, 2021
  12. Sep 22, 2021
    • Keith Yeung's avatar
      Add benchmarking for parachain runtime paras pallet (#3888) · db0b7e00
      Keith Yeung authored
      
      
      * Crate basic barebones benchmarking infrastructure for paras
      
      * Fill in benchmarking contents
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * Use autogenerated WeightInfos for kusama and westend
      
      * cargo fmt
      
      * Use saturating_sub
      
      * Add missing import
      
      * Try and hit the worst possible time complexity as much as possible
      
      * cargo fmt
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * Add a MAX_HEAD_DATA_SIZE constant
      
      * Prefill vectors with sample data for worst case complexity
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_paras.rs
      
      * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=runtime_parachains::paras --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs
      
      * Improve comment on SAMPLE_SIZE constant
      
      Co-authored-by: default avatarParity Bot <[email protected]>
      db0b7e00