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
@@ -1,7 +1,7 @@
TestConfiguration:
# Test 1
- objective: !DataAvailabilityRead
fetch_from_backers: false
fetch_from_backers: true
n_validators: 300
n_cores: 20
min_pov_size: 5120
@@ -9,18 +9,14 @@ TestConfiguration:
peer_bandwidth: 52428800
bandwidth: 52428800
latency:
min_latency:
secs: 0
nanos: 1000000
max_latency:
secs: 0
nanos: 100000000
error: 3
mean_latency_ms: 100
std_dev: 1
num_blocks: 3
connectivity: 90
# Test 2
- objective: !DataAvailabilityRead
fetch_from_backers: false
fetch_from_backers: true
n_validators: 500
n_cores: 20
min_pov_size: 5120
@@ -28,18 +24,14 @@ TestConfiguration:
peer_bandwidth: 52428800
bandwidth: 52428800
latency:
min_latency:
secs: 0
nanos: 1000000
max_latency:
secs: 0
nanos: 100000000
error: 3
mean_latency_ms: 100
std_dev: 1
num_blocks: 3
connectivity: 90
# Test 3
- objective: !DataAvailabilityRead
fetch_from_backers: false
fetch_from_backers: true
n_validators: 1000
n_cores: 20
min_pov_size: 5120
@@ -47,11 +39,7 @@ TestConfiguration:
peer_bandwidth: 52428800
bandwidth: 52428800
latency:
min_latency:
secs: 0
nanos: 1000000
max_latency:
secs: 0
nanos: 100000000
error: 3
mean_latency_ms: 100
std_dev: 1
num_blocks: 3
connectivity: 90