mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
33384816b5
13782b8ba8 docs: add perf section to developer docs (James O'Beirne) 58180b5fd4 tests: add utility to easily profile node performance with perf (James O'Beirne) Pull request description: Adds a context manager to easily (and selectively) profile node performance during functional test execution using `perf`. While writing some tests, I encountered some odd bitcoind slowness. I wrote up a utility (`TestNode.profile_with_perf`) that generates performance diagnostics for a node by running `perf` during the execution of a particular region of test code. `perf` usage is detailed in the excellent (and sadly unmerged) https://github.com/bitcoin/bitcoin/pull/12649; all due props to @eklitzke. ### Example ```python with node.profile_with_perf("large-msgs"): for i in range(200): node.p2p.send_message(some_large_msg) node.p2p.sync_with_ping() ``` This generates a perf data file in the test node's datadir (`/tmp/testtxmpod0y/node0/node-0-TestName-large-msgs.perf.data`). Running `perf report` generates nice output about where the node spent most of its time while running that part of the test: ```bash $ perf report -i /tmp/testtxmpod0y/node0/node-0-TestName-large-msgs.perf.data --stdio \ | c++filt \ | less # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 135 of event 'cycles:pp' # Event count (approx.): 1458205679493582 # # Children Self Command Shared Object Symbol # ........ ........ ............... ................... ........................................................................................................................................................................................................................................................................ # 70.14% 0.00% bitcoin-net bitcoind [.] CNode::ReceiveMsgBytes(char const*, unsigned int, bool&) | ---CNode::ReceiveMsgBytes(char const*, unsigned int, bool&) 70.14% 0.00% bitcoin-net bitcoind [.] CNetMessage::readData(char const*, unsigned int) | ---CNetMessage::readData(char const*, unsigned int) CNode::ReceiveMsgBytes(char const*, unsigned int, bool&) 35.52% 0.00% bitcoin-net bitcoind [.] std::vector<char, zero_after_free_allocator<char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<char*, std::vector<char, zero_after_free_allocator<char> > >, unsigned long, char const&) | ---std::vector<char, zero_after_free_allocator<char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<char*, std::vector<char, zero_after_free_allocator<char> > >, unsigned long, char const&) CNetMessage::readData(char const*, unsigned int) CNode::ReceiveMsgBytes(char const*, unsigned int, bool&) ... ``` Tree-SHA512: 9ac4ceaa88818d5eca00994e8e3c8ad42ae019550d6583972a0a4f7b0c4f61032e3d0c476b4ae58756bc5eb8f8015a19a7fc26c095bd588f31d49a37ed0c6b3e |
||
---|---|---|
.. | ||
check-doc.py | ||
check-rpc-mappings.py | ||
commit-script-check.sh | ||
git-subtree-check.sh | ||
lint-all.sh | ||
lint-assertions.sh | ||
lint-circular-dependencies.sh | ||
lint-filenames.sh | ||
lint-format-strings.py | ||
lint-format-strings.sh | ||
lint-git-commit-check.sh | ||
lint-include-guards.sh | ||
lint-includes.sh | ||
lint-locale-dependence.sh | ||
lint-logs.sh | ||
lint-python-dead-code.sh | ||
lint-python-utf8-encoding.sh | ||
lint-python.sh | ||
lint-shebang.sh | ||
lint-shell-locale.sh | ||
lint-shell.sh | ||
lint-spelling.ignore-words.txt | ||
lint-spelling.sh | ||
lint-submodule.sh | ||
lint-tests.sh | ||
lint-whitespace.sh | ||
README.md |
This folder contains lint scripts.
check-doc.py
Check for missing documentation of command line options.
commit-script-check.sh
Verification of scripted diffs.
git-subtree-check.sh
Run this script from the root of the repository to verify that a subtree matches the contents of the commit it claims to have been updated to.
To use, make sure that you have fetched the upstream repository branch in which the subtree is maintained:
- for
src/secp256k1
: https://github.com/bitcoin-core/secp256k1.git (branch master) - for
src/leveldb
: https://github.com/bitcoin-core/leveldb.git (branch bitcoin-fork) - for
src/univalue
: https://github.com/bitcoin-core/univalue.git (branch master) - for
src/crypto/ctaes
: https://github.com/bitcoin-core/ctaes.git (branch master) - for
src/crc32c
: https://github.com/google/crc32c.git (branch master)
Usage: git-subtree-check.sh DIR (COMMIT)
COMMIT
may be omitted, in which case HEAD
is used.
lint-all.sh
Calls other scripts with the lint-
prefix.