From ef78dbce5396430f5f4bfa58ed6b6a3491f03501 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 5 Aug 2019 07:53:42 -0400 Subject: [PATCH] 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 --- doc/benchmarking.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/doc/benchmarking.md b/doc/benchmarking.md index 68f97c1855..88c1fea61c 100644 --- a/doc/benchmarking.md +++ b/doc/benchmarking.md @@ -2,10 +2,17 @@ Benchmarking ============ 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 --------------------- + +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: src/bench/bench_dash @@ -21,15 +28,23 @@ The output will look similar to: 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 --------------------- More benchmarks are needed for, in no particular order: - Script Validation -- CCoinDBView caching - Coins database - 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