diff options
author | MarcoFalke <falke.marco@gmail.com> | 2022-03-31 08:34:55 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2022-03-31 08:34:58 +0200 |
commit | e1e6a3386fc7be6c65ee0b452263ea29c799eb0e (patch) | |
tree | 42975200b67f4291f2c1592b7925353c8ea2b4d5 /test | |
parent | a2e1590f67fc5cdf5be9cbf03b8f6e37aa8514d1 (diff) | |
parent | 17648493df478fa9316cc9ed66fe6bc1c2c820a4 (diff) | |
download | bitcoin-e1e6a3386fc7be6c65ee0b452263ea29c799eb0e.tar.xz |
Merge bitcoin/bitcoin#24707: doc: Speed up functional test runs using ramdisk
17648493df478fa9316cc9ed66fe6bc1c2c820a4 doc: Speed up functional test runs using ramdisk (willcl-ark)
Pull request description:
Using a ramdisk for the functional tests can give noticable speedups for developers and reviewers.
Local testing with an 8GB ramdisk saw a full test run using `test/functional/test_runner.py --jobs=100 --cachedir=/mnt/tmp/cache --tmpdir=/mnt/tmp` reduced from ~280 seconds to ~99 seconds.
Possible bikeshedding opportunity to be had over whether this might best fit into `doc/productivity.md`, but IMO more people will likely see it (and it will therefore be more useful) if it is here.
It seems best to select `tmpfs` over `ramfs` as `ramfs` can grow dynamically (good) but cannot be limited in size and might cause the system to hang if you run out of ram (bad), whereas `tmpfs` is size-limited and will overflow into swap.
ACKs for top commit:
josibake:
ACK https://github.com/bitcoin/bitcoin/pull/24707/commits/17648493df478fa9316cc9ed66fe6bc1c2c820a4
jamesob:
ACK https://github.com/bitcoin/bitcoin/pull/24707/commits/17648493df478fa9316cc9ed66fe6bc1c2c820a4
Tree-SHA512: b8e0846d4558a7a33fbb7cd190e30c36182db36095e1c1feae8c10a12042cff9d97739964bd9211d8564231dc99b4be5eed806d12a1d11dfa908157d7f26cc67
Diffstat (limited to 'test')
-rw-r--r-- | test/README.md | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/README.md b/test/README.md index 8fffde888d..87a3acb768 100644 --- a/test/README.md +++ b/test/README.md @@ -107,6 +107,34 @@ how many jobs to run, append `--jobs=n` The individual tests and the test_runner harness have many command-line options. Run `test/functional/test_runner.py -h` to see them all. +#### Speed up test runs with a ramdisk + +If you have available RAM on your system you can create a ramdisk to use as the `cache` and `tmp` directories for the functional tests in order to speed them up. +Speed-up amount varies on each system (and according to your ram speed and other variables), but a 2-3x speed-up is not uncommon. + +To create a 4GB ramdisk on Linux at `/mnt/tmp/`: + +```bash +sudo mkdir -p /mnt/tmp +sudo mount -t tmpfs -o size=4g tmpfs /mnt/tmp/ +``` + +Configure the size of the ramdisk using the `size=` option. +The size of the ramdisk needed is relative to the number of concurrent jobs the test suite runs. +For example running the test suite with `--jobs=100` might need a 4GB ramdisk, but running with `--jobs=32` will only need a 2.5GB ramdisk. + +To use, run the test suite specifying the ramdisk as the `cachedir` and `tmpdir`: + +```bash +test/functional/test_runner.py --cachedir=/mnt/tmp/cache --tmpdir=/mnt/tmp +``` + +Once finished with the tests and the disk, and to free the ram, simply unmount the disk: + +```bash +sudo umount /mnt/tmp +``` + #### Troubleshooting and debugging test failures ##### Resource contention |