---
# System prepended metadata

title: Lighthouse PeerDAS Metrics

---

# Lighthouse PeerDAS Full node vs Supernode bandwidth comparison

A quick experiement to understand the "relative" bandwidth usage of PeerDAS supernodes and full node. To get more accurate numbers to production, we'd need a large enough network (70 - 100 nodes).

## Setup

### Local Kurtosis network

Total of 10 nodes on a single machine. 
- 1 full node with 1 validator
- 1 supernode with 1 validator
- 1 full node with 62 validators
    - used to propose blocks
- 7 supernoes with no validators
    - used to fill up mesh peers across all data column subnets, default mesh peers in Lighthouse is 8.

### Network configuration:
- data_column_sidecar_subnet_count: 64
- samples_per_slot: 16
- custody_requirement: 4
- blob spamming enabled
- Same number of blobs as Deneb (target 3/ max 6)

### Limitations

- This is a very basic test with no latency and much smaller number of peers compare to production.
- There are no syncing peers.

## Metrics

The main thing that I'd like to understand here is the *relative* bandwidth between full node and supernode, although this is still far from accurate as the peer count is still much lower than production nodes.

### Network

From the gathered metrics, a supernode's bandwidth usage is about 10x of a full node. The bandwidth usage on blocks and blobs for supernodes is roughly 2x of a Deneb full node due to erasure coding. Therefore a Deneb full node is estimated to consume roughly 4-5x more bandwidth than a PeerDAS full node (with no validators attached).

It would be interesting to see this test on a larger network though. This was tested under "perfect" network condition, which means there's little extra block lookup / range sync activity. I suspect there would be more rpc requests to supernodes on a bigger and more realistic network, which could make this gap even bigger. 

NOTE: Sam (ethPandaOps) suggested the [`attacknet`](https://ethpandaops.io/posts/attacknet-introduction) tool may be suitable for simulating network latency.

[![image](https://hackmd.io/_uploads/SyiNSqjPC.png)](https://hackmd.io/_uploads/SyiNSqjPC.png)

### Block & Data Column Processing

Most of the timing metrics here are not super meaningful, as we're running a lot of load on a single machine.

[![image](https://hackmd.io/_uploads/BJ00Z5svR.png)](https://hackmd.io/_uploads/BJ00Z5svR.png)

### KZG

We've switched from `c-kzg` from the Rust `peerdas-kzg` library. Again, numbers are not meaningful here, but included here for completeness. For better numbers see [this](https://github.com/sigp/lighthouse/pull/5941#issuecomment-2216882009).

[![image](https://hackmd.io/_uploads/By4XBcswC.png)](https://hackmd.io/_uploads/By4XBcswC.png)

## Machine spec

- CPU: AMD Ryzen 7 3700X (3.6 GHz, 8 cores)
- RAM: 64 GB
- Drives: 2 x 1 TB SSD
