Include StorageInfo in Benchmarking Pipeline (#9090)

* extend storageinfo

* extend_storage_info

* use vec

* add storage info to pipeline

* get read and written keys

* undo storageinfo move

* refactor keytracker

* return read / write count

* playing with key matching

* add basic `StorageInfo` constructor

* add whitelisted to returned info

* fix some test stuff

* pipe comments into benchmark data

* add_storage_comments

* add comments to template

* track only storage prefix

* Update frame/benchmarking/src/lib.rs

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix test

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* remove test logs

* add temp benchmark script

* Apply suggestions from code review

Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>

* remove keytracker and use trackedstoragekey

* add comment for unknown keys

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/timestamp/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* remove duplicate comments with unknown keys

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/timestamp/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* refactor bench tracker, and fix results

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix child tries in new tracker

* extra newline

* fix unused warning

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/timestamp/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix master merge

* storage info usage refactor

* remove now unused

* fix refactor

* use a vec for prefix

* fix tests

* also update writer to use vec

* disable read and written keys for now

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/system/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Update frame/system/src/weights.rs

* fix test

* Delete weights.rs

* reset weights

Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
This commit is contained in:
Shawn Tabrizi
2021-07-07 18:06:06 -04:00
committed by GitHub
parent e0ad91ed95
commit b42b8fc5fb
28 changed files with 552 additions and 185 deletions
@@ -438,147 +438,205 @@ mod tests {
<Module<TraitImpl>>::storage_info(),
vec![
StorageInfo {
prefix: prefix(b"TestStorage", b"U32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"U32".to_vec(),
prefix: prefix(b"TestStorage", b"U32").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBU32".to_vec(),
prefix: prefix(b"TestStorage", b"PUBU32").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"U32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"U32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"U32MYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBU32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBU32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"PUBU32MYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETU32".to_vec(),
prefix: prefix(b"TestStorage", b"GETU32").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETU32".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETU32").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETU32WITHCONFIG"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETU32WITHCONFIG".to_vec(),
prefix: prefix(b"TestStorage", b"GETU32WITHCONFIG").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIG"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETU32WITHCONFIG".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIG").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETU32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETU32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"GETU32MYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETU32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETU32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETU32MYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETU32WITHCONFIGMYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETU32WITHCONFIGMYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"GETU32WITHCONFIGMYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIGMYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETU32WITHCONFIGMYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIGMYDEF").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIGMYDEFOPT"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETU32WITHCONFIGMYDEFOPT".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETU32WITHCONFIGMYDEFOPT").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GetU32WithBuilder"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GetU32WithBuilder".to_vec(),
prefix: prefix(b"TestStorage", b"GetU32WithBuilder").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GetOptU32WithBuilderSome"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GetOptU32WithBuilderSome".to_vec(),
prefix: prefix(b"TestStorage", b"GetOptU32WithBuilderSome").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GetOptU32WithBuilderNone"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GetOptU32WithBuilderNone".to_vec(),
prefix: prefix(b"TestStorage", b"GetOptU32WithBuilderNone").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"MAPU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"MAPU32".to_vec(),
prefix: prefix(b"TestStorage", b"MAPU32").to_vec(),
max_values: Some(3),
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBMAPU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBMAPU32".to_vec(),
prefix: prefix(b"TestStorage", b"PUBMAPU32").to_vec(),
max_values: None,
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETMAPU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETMAPU32".to_vec(),
prefix: prefix(b"TestStorage", b"GETMAPU32").to_vec(),
max_values: None,
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETMAPU32"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETMAPU32".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETMAPU32").to_vec(),
max_values: None,
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"GETMAPU32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"GETMAPU32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"GETMAPU32MYDEF").to_vec(),
max_values: None,
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PUBGETMAPU32MYDEF"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PUBGETMAPU32MYDEF".to_vec(),
prefix: prefix(b"TestStorage", b"PUBGETMAPU32MYDEF").to_vec(),
max_values: None,
max_size: Some(8 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"DOUBLEMAP"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"DOUBLEMAP".to_vec(),
prefix: prefix(b"TestStorage", b"DOUBLEMAP").to_vec(),
max_values: Some(3),
max_size: Some(12 + 16 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"DOUBLEMAP2"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"DOUBLEMAP2".to_vec(),
prefix: prefix(b"TestStorage", b"DOUBLEMAP2").to_vec(),
max_values: None,
max_size: Some(12 + 16 + 16),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"COMPLEXTYPE1"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"COMPLEXTYPE1".to_vec(),
prefix: prefix(b"TestStorage", b"COMPLEXTYPE1").to_vec(),
max_values: Some(1),
max_size: Some(5),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"COMPLEXTYPE2"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"COMPLEXTYPE2".to_vec(),
prefix: prefix(b"TestStorage", b"COMPLEXTYPE2").to_vec(),
max_values: Some(1),
max_size: Some(1156),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"COMPLEXTYPE3"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"COMPLEXTYPE3".to_vec(),
prefix: prefix(b"TestStorage", b"COMPLEXTYPE3").to_vec(),
max_values: Some(1),
max_size: Some(100),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"NMAP"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"NMAP".to_vec(),
prefix: prefix(b"TestStorage", b"NMAP").to_vec(),
max_values: None,
max_size: Some(16 + 4 + 8 + 2 + 1),
},
StorageInfo {
prefix: prefix(b"TestStorage", b"NMAP2"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"NMAP2".to_vec(),
prefix: prefix(b"TestStorage", b"NMAP2").to_vec(),
max_values: None,
max_size: Some(16 + 4 + 1),
},
@@ -669,22 +727,30 @@ mod test2 {
<Module<TraitImpl>>::storage_info(),
vec![
StorageInfo {
prefix: prefix(b"TestStorage", b"SingleDef"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"SingleDef".to_vec(),
prefix: prefix(b"TestStorage", b"SingleDef").to_vec(),
max_values: Some(1),
max_size: None,
},
StorageInfo {
prefix: prefix(b"TestStorage", b"PairDef"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"PairDef".to_vec(),
prefix: prefix(b"TestStorage", b"PairDef").to_vec(),
max_values: Some(1),
max_size: None,
},
StorageInfo {
prefix: prefix(b"TestStorage", b"Single"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"Single".to_vec(),
prefix: prefix(b"TestStorage", b"Single").to_vec(),
max_values: Some(1),
max_size: None,
},
StorageInfo {
prefix: prefix(b"TestStorage", b"Pair"),
pallet_name: b"TestStorage".to_vec(),
storage_name: b"Pair".to_vec(),
prefix: prefix(b"TestStorage", b"Pair").to_vec(),
max_values: Some(1),
max_size: None,
},
+42 -14
View File
@@ -1171,54 +1171,74 @@ fn test_storage_info() {
Example::storage_info(),
vec![
StorageInfo {
prefix: prefix(b"Example", b"ValueWhereClause"),
pallet_name: b"Example".to_vec(),
storage_name: b"ValueWhereClause".to_vec(),
prefix: prefix(b"Example", b"ValueWhereClause").to_vec(),
max_values: Some(1),
max_size: Some(8),
},
StorageInfo {
prefix: prefix(b"Example", b"Value"),
pallet_name: b"Example".to_vec(),
storage_name: b"Value".to_vec(),
prefix: prefix(b"Example", b"Value").to_vec(),
max_values: Some(1),
max_size: Some(4),
},
StorageInfo {
prefix: prefix(b"Example", b"Value2"),
pallet_name: b"Example".to_vec(),
storage_name: b"Value2".to_vec(),
prefix: prefix(b"Example", b"Value2").to_vec(),
max_values: Some(1),
max_size: Some(8),
},
StorageInfo {
prefix: prefix(b"Example", b"Map"),
pallet_name: b"Example".to_vec(),
storage_name: b"Map".to_vec(),
prefix: prefix(b"Example", b"Map").to_vec(),
max_values: None,
max_size: Some(3 + 16),
},
StorageInfo {
prefix: prefix(b"Example", b"Map2"),
pallet_name: b"Example".to_vec(),
storage_name: b"Map2".to_vec(),
prefix: prefix(b"Example", b"Map2").to_vec(),
max_values: Some(3),
max_size: Some(6 + 8),
},
StorageInfo {
prefix: prefix(b"Example", b"DoubleMap"),
pallet_name: b"Example".to_vec(),
storage_name: b"DoubleMap".to_vec(),
prefix: prefix(b"Example", b"DoubleMap").to_vec(),
max_values: None,
max_size: Some(7 + 16 + 8),
},
StorageInfo {
prefix: prefix(b"Example", b"DoubleMap2"),
pallet_name: b"Example".to_vec(),
storage_name: b"DoubleMap2".to_vec(),
prefix: prefix(b"Example", b"DoubleMap2").to_vec(),
max_values: Some(5),
max_size: Some(14 + 8 + 16),
},
StorageInfo {
prefix: prefix(b"Example", b"NMap"),
pallet_name: b"Example".to_vec(),
storage_name: b"NMap".to_vec(),
prefix: prefix(b"Example", b"NMap").to_vec(),
max_values: None,
max_size: Some(5 + 16),
},
StorageInfo {
prefix: prefix(b"Example", b"NMap2"),
pallet_name: b"Example".to_vec(),
storage_name: b"NMap2".to_vec(),
prefix: prefix(b"Example", b"NMap2").to_vec(),
max_values: Some(11),
max_size: Some(14 + 8 + 16),
},
#[cfg(feature = "conditional-storage")]
{
StorageInfo {
prefix: prefix(b"Example", b"ConditionalValue"),
pallet_name: b"Example".to_vec(),
storage_name: b"ConditionalValue".to_vec(),
prefix: prefix(b"Example", b"ConditionalValue").to_vec(),
max_values: Some(1),
max_size: Some(4),
}
@@ -1226,7 +1246,9 @@ fn test_storage_info() {
#[cfg(feature = "conditional-storage")]
{
StorageInfo {
prefix: prefix(b"Example", b"ConditionalMap"),
pallet_name: b"Example".to_vec(),
storage_name: b"ConditionalMap".to_vec(),
prefix: prefix(b"Example", b"ConditionalMap").to_vec(),
max_values: Some(12),
max_size: Some(6 + 8),
}
@@ -1234,7 +1256,9 @@ fn test_storage_info() {
#[cfg(feature = "conditional-storage")]
{
StorageInfo {
prefix: prefix(b"Example", b"ConditionalDoubleMap"),
pallet_name: b"Example".to_vec(),
storage_name: b"ConditionalDoubleMap".to_vec(),
prefix: prefix(b"Example", b"ConditionalDoubleMap").to_vec(),
max_values: None,
max_size: Some(7 + 16 + 8),
}
@@ -1242,7 +1266,9 @@ fn test_storage_info() {
#[cfg(feature = "conditional-storage")]
{
StorageInfo {
prefix: prefix(b"Example", b"ConditionalNMap"),
pallet_name: b"Example".to_vec(),
storage_name: b"ConditionalNMap".to_vec(),
prefix: prefix(b"Example", b"ConditionalNMap").to_vec(),
max_values: None,
max_size: Some(7 + 16 + 8),
}
@@ -1254,7 +1280,9 @@ fn test_storage_info() {
Example2::storage_info(),
vec![
StorageInfo {
prefix: prefix(b"Example2", b"SomeValue"),
pallet_name: b"Example2".to_vec(),
storage_name: b"SomeValue".to_vec(),
prefix: prefix(b"Example2", b"SomeValue").to_vec(),
max_values: Some(1),
max_size: None,
},