Add subsystem benchmarks for availability-distribution and biftield-distribution (availability write) (#2970)

Introduce a new test objective : `DataAvailabilityWrite`.

The new benchmark measures the network and cpu usage of
`availability-distribution`, `biftield-distribution` and
`availability-store` subsystems from the perspective of a validator node
during the process when candidates are made available.

Additionally I refactored the networking emulation to support bandwidth
acounting and limits of incoming and outgoing requests.

Screenshot of succesful run


<img width="1293" alt="Screenshot 2024-01-17 at 19 17 44"
src="https://github.com/paritytech/polkadot-sdk/assets/54316454/fde11280-e25b-4dc3-9dc9-d4b9752f9b7a">

---------

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>
This commit is contained in:
Andrei Sandu
2024-01-25 19:02:24 +02:00
committed by GitHub
parent 73fd8cd717
commit 47e46d178b
22 changed files with 1967 additions and 801 deletions
Generated
+12 -4
View File
@@ -13454,6 +13454,7 @@ version = "1.0.0"
dependencies = [
"assert_matches",
"async-trait",
"bitvec",
"clap 4.4.18",
"clap-num",
"color-eyre",
@@ -13462,12 +13463,17 @@ dependencies = [
"futures",
"futures-timer",
"itertools 0.11.0",
"kvdb-memorydb",
"log",
"orchestra",
"parity-scale-codec",
"paste",
"polkadot-availability-bitfield-distribution",
"polkadot-availability-distribution",
"polkadot-availability-recovery",
"polkadot-erasure-coding",
"polkadot-node-core-av-store",
"polkadot-node-core-chain-api",
"polkadot-node-metrics",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -13482,12 +13488,14 @@ dependencies = [
"pyroscope",
"pyroscope_pprofrs",
"rand",
"rand_distr",
"sc-keystore",
"sc-network",
"sc-service",
"serde",
"serde_yaml",
"sp-application-crypto",
"sp-consensus",
"sp-core",
"sp-keyring",
"sp-keystore",
@@ -17079,9 +17087,9 @@ dependencies = [
[[package]]
name = "serde_yaml"
version = "0.9.30"
version = "0.9.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38"
checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c"
dependencies = [
"indexmap 2.0.0",
"itoa",
@@ -20752,9 +20760,9 @@ dependencies = [
[[package]]
name = "unsafe-libyaml"
version = "0.2.10"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa"
[[package]]
name = "unsigned-varint"