Merge #16536: doc: Update and extend benchmarking.md

05fdb97df46d0a0675b93e9791bd5d498e5e5117 [doc] Update and extend benchmarking.md (Antoine Riard)

Pull request description:

  Trying to make benchmarking docs a bit more friendly.

  If you have any more ideas, specially on the Notes section, which component need more benchmarks.

  (oh isn't a write-up somewhere to generate flame graphs for core ?)

ACKs for top commit:
  jonatack:
    ACK 05fdb97df46d0a0675b93e9791bd5d498e5e5117
  fanquake:
    ACK 05fdb97df46d0a0675b93e9791bd5d498e5e5117 - with the single nit.

Tree-SHA512: 1d31438065cab12b43b0227c1c774b412ac3d9d46d4cbe69cfe753424a81e51839777e815c70880da8ae6c8fb95221dc7559334eeb550221e8a76fb20a370f75
This commit is contained in:
MarcoFalke 2019-08-05 07:53:42 -04:00 committed by Munkybooty
parent 517021c93d
commit ef78dbce53

View File

@ -2,10 +2,17 @@ Benchmarking
============ ============
Dash Core has an internal benchmarking framework, with benchmarks Dash Core has an internal benchmarking framework, with benchmarks
for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160), as well as the rolling bloom filter. for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), rolling bloom filter, coins selection,
thread queue, wallet balance.
Running Running
--------------------- ---------------------
For benchmarks purposes you only need to compile `dash_bench`. Beware of configuring without `--enable-debug` as this would impact
benchmarking by unlatching log printers and lock analysis.
make -C src bench_dash
After compiling Dash Core, the benchmarks can be run with: After compiling Dash Core, the benchmarks can be run with:
src/bench/bench_dash src/bench/bench_dash
@ -21,15 +28,23 @@ The output will look similar to:
Help Help
--------------------- ---------------------
`-?` will print a list of options and exit:
src/bench/bench_dash -? src/bench/bench_dash --help
To print options like scaling factor or per-benchmark filter.
Notes Notes
--------------------- ---------------------
More benchmarks are needed for, in no particular order: More benchmarks are needed for, in no particular order:
- Script Validation - Script Validation
- CCoinDBView caching
- Coins database - Coins database
- Memory pool - Memory pool
- Wallet coin selection - Cuckoo Cache
- P2P throughput
Going Further
--------------------
To monitor Bitcoin Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/bitcoinperf
To generate Flame Graphs for Bitcoin Core: https://github.com/eklitzke/bitcoin/blob/flamegraphs/doc/flamegraphs.md