Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmark computation time of txs #3898

Open
cmwaters opened this issue Sep 23, 2024 · 0 comments
Open

Benchmark computation time of txs #3898

cmwaters opened this issue Sep 23, 2024 · 0 comments
Assignees
Labels
required issue is required to be closed before workstream can be closed WS: V3 3️⃣ item is directly relevant to the v3 hardfork

Comments

@cmwaters
Copy link
Contributor

cmwaters commented Sep 23, 2024

Summary

As we look to increase block size, we'd like to make sure that there's no path for transactions that are computationally heavy from significantly affecting the block production rate. To understand this we should research the effect of the following:

  • A 8MB block full of computationally intensive transactions
  • A 8MB block full of I/O intensive transactions

Concretely, I assume for the first point we could use IBC UpdateClient transactions (as they require signature verification). For the second we could try MsgSend. The metric would be to measure the time taken of:

  • PrepareProposal and ProcessProposal
  • CheckTx
  • DeliverTx

These could be done as benchmarks so we can monitor them (or modify them) in the future

(We may need a reference point to compare with but we can decide this after getting the initial numbers)

@evan-forbes evan-forbes added WS: V3 3️⃣ item is directly relevant to the v3 hardfork required issue is required to be closed before workstream can be closed and removed needs:triage labels Sep 23, 2024
rach-id added a commit that referenced this issue Oct 21, 2024
Works on this: #3898

To run the benchmarks, run the following in the root directory:

```shell
go test -bench=<benchmark_name> app/benchmark_test.go
```

with `<benchmark_name>` is:

- `BenchmarkCheckTx_MsgSend_1`: for a benchmark of a `MsgSend`
transaction in `CheckTx`
- `BenchmarkCheckTx_MsgSend_8MB`: for a benchmark of 8mb block worth of
`MsgSend` transactions in `CheckTx`
- `BenchmarkDeliverTx_MsgSend_1`: for a benchmark of a `MsgSend`
transaction in `DeliverTx`
- `BenchmarkDeliverTx_MsgSend_8MB`: for a benchmark of 8mb block worth
of `MsgSend` transactions in `DeliverTx`
- `BenchmarkPrepareProposal_MsgSend_1`: for a benchmark of a block
containing a single`MsgSend` transaction in `PrepareProposal`
- `BenchmarkPrepareProposal_MsgSend_8MB`: for a benchmark of an 8mb
block containing `MsgSend` transactions in `PrepareProposal`
- `BenchmarkProcessProposal_MsgSend_1`: for a benchmark of a block
containing a single`MsgSend` transaction in `ProcessProposal`
- `BenchmarkProcessProposal_MsgSend_8MB`: for a benchmark of an 8mb
block containing`MsgSend` transactions in `ProcessProposal`
- ...

Note: keeping this as a draft because it doesn't necessarily need to be
merged

Benchmark run on: Macbook pro M3 max 48GB RAM

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Rootul P <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
required issue is required to be closed before workstream can be closed WS: V3 3️⃣ item is directly relevant to the v3 hardfork
Projects
None yet
Development

No branches or pull requests

3 participants