> ## Documentation Index
> Fetch the complete documentation index at: https://cosmos-docs-sync-security-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# CometBFT QA 34

# CometBFT QA Results v0.34.x

## v0.34.x - From Tendermint Core to CometBFT

This section reports on the QA process we followed before releasing the first `v0.34.x` version
from our CometBFT repository.

The changes with respect to the last version of `v0.34.x`
(namely `v0.34.26`, released from the Informal Systems' Tendermint Core fork)
are minimal, and focus on rebranding our fork of Tendermint Core to CometBFT in places
where there is no substantial risk of breaking compatibility
with earlier Tendermint Core versions of `v0.34.x`.

Indeed, CometBFT versions of `v0.34.x` (`v0.34.27` and subsequent) should fulfill
the following compatibility-related requirements:

* Operators can easily upgrade a `v0.34.x` version of Tendermint Core to CometBFT.
* Upgrades from Tendermint Core to CometBFT can be uncoordinated for versions of the `v0.34.x` branch.
* Nodes running CometBFT must be interoperable with those running Tendermint Core in the same chain,
  as long as all are running a `v0.34.x` version.

These QA tests focus on the third bullet, whereas the first two bullets are tested using our *e2e tests*.

It would be prohibitively time-consuming to test mixed networks of all combinations of existing `v0.34.x`
versions, combined with the CometBFT release candidate under test.
Therefore, our testing focuses on the last Tendermint Core version (`v0.34.26`) and the CometBFT release
candidate under test.

We run the *200 node test*, but not the *rotating node test*. The effort of running the latter
is not justified given the amount and nature of the changes we are testing with respect to the
full QA cycle run previously on `v0.34.x`.
Since the changes to the system's logic are minimal, we are interested in these performance requirements:

* The CometBFT release candidate under test performs similarly to Tendermint Core (i.e., the baseline)
  * when used at scale (i.e., in a large network of CometBFT nodes)
  * when used at scale in a mixed network (i.e., some nodes are running CometBFT
    and others are running an older Tendermint Core version)

Therefore, we carry out a complete run of the *200-node test* on the following networks:

* A homogeneous 200-node testnet, where all nodes are running the CometBFT release candidate under test.
* A mixed network where 1/2 (99 out of 200) of the nodes are running the CometBFT release candidate under test,
  and the rest (101 out of 200) are running Tendermint Core `v0.34.26`.
* A mixed network where 1/3 (66 out of 200) of the nodes are running the CometBFT release candidate under test,
  and the rest (134 out of 200) are running Tendermint Core `v0.34.26`.
* A mixed network where 2/3 (133 out of 200) of the nodes are running the CometBFT release candidate under test,
  and the rest (67 out of 200) are running Tendermint Core `v0.34.26`.

## Configuration and Results

In the following sections we provide the results of the *200 node test*.
Each section reports the baseline results (for reference), the homogeneous network scenario (all CometBFT nodes),
and the mixed networks with 1/2, 1/3, and 2/3 of Tendermint Core nodes.

### Saturation Point

As the CometBFT release candidate under test has minimal changes
with respect to Tendermint Core `v0.34.26`, other than the rebranding changes,
we can confidently reuse the results from the `v0.34.x` baseline test regarding
the [saturation point](/cometbft/latest/docs/qa/TMCore-QA-34#finding-the-saturation-point).

Therefore, we will simply use a load of (`r=200,c=2`)
(see the explanation [here](/cometbft/latest/docs/qa/TMCore-QA-34#finding-the-saturation-point)) on all experiments.

We also include the baseline results for quick reference and comparison.

### Experiments

On each of the three networks, the test consists of 4 experiments, with the goal of
ensuring the data obtained is consistent across experiments.

On each of the networks, we pick only one representative run to present and discuss the
results.

## Examining Latencies

For each network, the figures plot the four experiments carried out with the network.
We can see that the latencies follow comparable patterns across all experiments.

Unique identifiers (UUIDs) for each execution are presented on top of each graph.
We refer to these UUIDs to indicate the representative runs.

### CometBFT Homogeneous Network

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/all_experiments.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=d702b5932a06d024fded59f302f3107c" alt="latencies" width="1200" height="800" data-path="cometbft/latest/docs/qa/img34/homogeneous/all_experiments.png" />

### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/all_experiments.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=7f028223cf046c61fd98b7b9b11b72b4" alt="latencies" width="1200" height="800" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/all_experiments.png" />

### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/all_experiments.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=5b36059b821899734e91fb48f08c3941" alt="latencies" width="1200" height="800" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/all_experiments.png" />

### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/all_experiments.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=8c91284f1fbac052ccab64e34cbc90e5" alt="latencies_all_tm2_3_cmt1_3" width="1200" height="800" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/all_experiments.png" />

## Prometheus Metrics

This section reports on the key Prometheus metrics extracted from the following experiments:

* Baseline results: `v0.34.x`, obtained in October 2022 and reported [here](/cometbft/latest/docs/qa/TMCore-QA-34).
* CometBFT homogeneous network: experiment with UUID starting with `be8c`.
* Mixed network, 1/2 Tendermint Core `v0.34.26` and 1/2 running CometBFT: experiment with UUID starting with `04ee`.
* Mixed network, 1/3 Tendermint Core `v0.34.26` and 2/3 running CometBFT: experiment with UUID starting with `fc5e`.
* Mixed network, 2/3 Tendermint Core `v0.34.26` and 1/3 running CometBFT: experiment with UUID starting with `4759`.

We make explicit comparisons between the baseline and the homogeneous setups, but refrain from
commenting on the mixed network experiments unless they show some exceptional results.

### Mempool Size

For each reported experiment, we show two graphs.
The first shows the evolution over time of the cumulative number of transactions
inside all full nodes' mempools at a given time.

The second one shows the evolution of the average over all full nodes.

#### Baseline

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=563ff0eac4e212872ea0a3214520e516" alt="mempool-cumulative" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/mempool_size.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/avg_mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=caf8dc74ff23d6a18b019771efafdd94" alt="mempool-avg" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/avg_mempool_size.png" />

#### CometBFT Homogeneous Network

The results for the homogeneous network and the baseline are similar in terms of outstanding transactions.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=d9b088398034afb27ce46aa7f9a841a8" alt="mempool-cumulative-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/mempool_size.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/avg_mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=5ad562d0926da8de4349e345a1a79018" alt="mempool-avg-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/avg_mempool_size.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=9a89423c7e966937c6557a2b5454809b" alt="mempool size" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/mempool_size.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/avg_mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=f8c9b485202e4fafd46296d1e94483ce" alt="average mempool size" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/avg_mempool_size.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=5105be03ed77b8bc13e3bb73e91c212b" alt="mempool size" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/mempool_size.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/avg_mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=3d6f4477296c6fbb44053254019a20f4" alt="average mempool size" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/avg_mempool_size.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=eb687f7a1962dc08a543942c6f4476d9" alt="mempool_tm2_3_cmt_1_3" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/mempool_size.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_mempool_size.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=91687b7d2f556a5e80afee69871624fc" alt="mempool-avg_tm2_3_cmt_1_3" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_mempool_size.png" />

### Consensus Rounds per Height

The following graphs show the rounds needed to complete each height and agree on a block.

A value of `0` shows that only one round was required (with ID `0`), and a value of `1` shows that two rounds were required.

#### Baseline

We can see that round 1 is reached with a certain frequency.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/rounds.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=7ccc48a80d807d4d30f47772ed4e0dab" alt="rounds" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/rounds.png" />

#### CometBFT Homogeneous Network

Most heights finished in round 0. Some nodes needed to advance to round 1 at various moments,
and a few nodes even needed to advance to round 2 at one point.
This coincides with the time at which we observed the biggest peak in mempool size
on the corresponding plot shown above.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/rounds.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=f8dd61b6ad811cb92b0cf9e1e71f8227" alt="rounds-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/rounds.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/rounds.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=d2e219a032d0dd615b5fad49cf84a7ac" alt="peers" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/rounds.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/rounds.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=cf6667ea41a3e0c0e3fb7ba5f3790834" alt="peers" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/rounds.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/rounds.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=77d1d25275c79cd223f0903b4e7ed042" alt="rounds-tm2_3_cmt1_3" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/rounds.png" />

### Peers

The following plots show how many peers a node had throughout the experiment.

The thick red dashed line represents the moving average over a sliding window of 20 seconds.

#### Baseline

The following graph shows that the number of peers was stable throughout the experiment.
Seed nodes typically have a higher number of peers.
The fact that non-seed nodes reach more than 50 peers is due to
[#9548](https://github.com/tendermint/tendermint/issues/9548).

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/peers.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=c608728ada07896692038bfc37aa0560" alt="peers" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/peers.png" />

#### CometBFT Homogeneous Network

The results for the homogeneous network are very similar to the baseline.
The only difference is that the seed nodes seem to lose peers in the middle of the experiment.
However, this cannot be attributed to the differences in the code, which are mainly rebranding.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/peers.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=215170e58d962d3e647feac4c61d507b" alt="peers-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/peers.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/peers.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=cc3fdf6b2de6f2aba53bb860da2d7fc8" alt="peers" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/peers.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/peers.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=7abab42f2c15ec9122edc11cae596acc" alt="peers" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/peers.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

As in the homogeneous case, there is some variation in the number of peers for some nodes.
These, however, do not affect the average.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/peers.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=6713aee156dc7516ab74aae9a34afc10" alt="peers-tm2_3_cmt1_3" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/peers.png" />

### Blocks Produced per Minute, Transactions Processed per Minute

The following plots show the rate of block production and the rate of transactions delivered throughout the experiments.

In both graphs, rates are calculated over a sliding window of 20 seconds.
The thick red dashed line shows the rates' moving averages.

#### Baseline

The average number of blocks per minute oscillates between 10 and 40.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/block_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=aa323a8d72928d6495ce749af14c5443" alt="heights" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/block_rate_regular.png" />

The number of transactions per minute tops around 30k.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/total_txs_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=69a2ac3cecf4defc4a7a9b59082fdb6c" alt="total-txs" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/total_txs_rate_regular.png" />

#### CometBFT Homogeneous Network

The plot showing the block production rate shows that the rate oscillates around 20 blocks per minute,
mostly within the same range as the baseline.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/block_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=8073f97678abd7b261ec56c943a54961" alt="heights-homogeneous-rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/block_rate_regular.png" />

The plot showing the transaction rate shows the rate stays around 20,000 transactions per minute,
also topping around 30k.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/total_txs_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=b89eca8ab79cb1addb6c7a20e2e522ec" alt="txs-homogeneous-rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/total_txs_rate_regular.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/block_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=b9cf197d6822a211bda968818f819bf4" alt="height rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/block_rate_regular.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/total_txs_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=2a45cd4beef8563f52066161f7db3807" alt="transaction rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/total_txs_rate_regular.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/block_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=2cce9f02fe8796ea304be2bbd401829c" alt="height rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/block_rate_regular.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/total_txs_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=7588201036078509d2ac5d79c4953e99" alt="transaction rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/total_txs_rate_regular.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/block_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=2add8ebf2ac250933113c3430b1c9996" alt="height rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/block_rate_regular.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/total_txs_rate_regular.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=afb1f3e67310f2621d7353c8e62a693c" alt="transaction rate" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/total_txs_rate_regular.png" />

### Memory Resident Set Size

The following graphs show the Resident Set Size (RSS) of all monitored processes and the average value.

#### Baseline

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=aa854d0e51437f81c1e180685e19212a" alt="rss" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/memory.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/avg_memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=2becb6e1304217d297f80462a397f7fb" alt="rss-avg" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/avg_memory.png" />

#### CometBFT Homogeneous Network

This is the plot for the homogeneous network, which is slightly more stable than the baseline over
the time of the experiment.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=2cd2deba2e7ddb0ef95da63a3b6a4e6f" alt="rss-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/memory.png" />

And this is the average plot. It oscillates around 560 MiB, which is noticeably lower than the baseline.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/avg_memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=51dd7f93fae7bfe854227881ab9d1b21" alt="rss-avg-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/avg_memory.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=0e424a7cb314d514f2184eb77f49c286" alt="rss" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/memory.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/avg_memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=98c6ece5fafe33d71914078a800537cc" alt="rss average" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/avg_memory.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=e74656b5cc99c88452176baacb579e3c" alt="rss" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/memory.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/avg_memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=592403536fb51fd096e2e009f7348d5a" alt="rss average" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/avg_memory.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=21dabb260ed3d50945b904ee6528263e" alt="rss" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/memory.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_memory.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=26fbb9e302744c6e178f40c3d29ee473" alt="rss average" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_memory.png" />

### CPU Utilization

The following graphs show the `load1` of nodes, as typically shown in the first line of the Unix `top`
command, and their average value.

#### Baseline

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=af4a467bb4024fe82b27429ccb01d13c" alt="load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/cpu.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/baseline/avg_cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=c295abc882bd11d12572d1c1074b861c" alt="load1-avg" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/baseline/avg_cpu.png" />

#### CometBFT Homogeneous Network

The load in the homogeneous network is, similarly to the baseline case, below 5 and, therefore, normal.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=a06a79bb766bfe391fc5daa33f3e28d9" alt="load1-homogeneous" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/cpu.png" />

As expected, the average plot also looks similar.

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/homogeneous/avg_cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=f4548cffd1f29056d4f88a350e3c9347" alt="load1-homogeneous-avg" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/homogeneous/avg_cpu.png" />

#### 1/2 Tendermint Core - 1/2 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=4d7a52619a73d524004ac7666a75042e" alt="load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/cpu.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt1tm1/avg_cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=e118ba2772b85fde2f3d1f4d692485c2" alt="average load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt1tm1/avg_cpu.png" />

#### 1/3 Tendermint Core - 2/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=09337353c8443523ba301f63a20495bf" alt="load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/cpu.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/cmt2tm1/avg_cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=bd9a2c35b60d6c6998c61faec9db56c0" alt="average load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/cmt2tm1/avg_cpu.png" />

#### 2/3 Tendermint Core - 1/3 CometBFT

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=7f45ce0d86a5228e0fbae92c6d964b40" alt="load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/cpu.png" />

<img src="https://mintcdn.com/cosmos-docs-sync-security-docs/MgEE5qFncd6niaeC/cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_cpu.png?fit=max&auto=format&n=MgEE5qFncd6niaeC&q=85&s=a99c93d6d7551a99092b1cecd99fc220" alt="average load1" width="1000" height="600" data-path="cometbft/latest/docs/qa/img34/v034_200node_tm2cmt1/avg_cpu.png" />

## Test Results

The comparison of the baseline results and the homogeneous case shows that both scenarios had similar numbers and are therefore equivalent.

The mixed node cases show that networks operate normally with a mix of compatible Tendermint Core and CometBFT versions.
Although not the main goal, a comparison of metric numbers with the homogeneous case and the baseline scenarios shows similar results, and therefore we can conclude that mixing compatible Tendermint Core and CometBFT introduces no performance degradation.

A conclusion of these tests is shown in the following table, along with the commit versions used in the experiments.

| Scenario                                | Date       | Version                                                                                                             | Result |
| --------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------- | ------ |
| CometBFT Homogeneous Network            | 2023-02-08 | 3b783434f26b0e87994e6a77c5411927aad9ce3f                                                                            | Pass   |
| 1/2 Tendermint Core <br /> 1/2 CometBFT | 2023-02-14 | CometBFT: 3b783434f26b0e87994e6a77c5411927aad9ce3f <br /> Tendermint Core: 66c2cb63416e66bff08e11f9088e21a0ed142790 | Pass   |
| 1/3 Tendermint Core <br /> 2/3 CometBFT | 2023-02-08 | CometBFT: 3b783434f26b0e87994e6a77c5411927aad9ce3f <br /> Tendermint Core: 66c2cb63416e66bff08e11f9088e21a0ed142790 | Pass   |
| 2/3 Tendermint Core <br /> 1/3 CometBFT | 2023-02-08 | CometBFT: 3b783434f26b0e87994e6a77c5411927aad9ce3f <br /> Tendermint Core: 66c2cb63416e66bff08e11f9088e21a0ed142790 | Pass   |
