Skip to content

Commit e1e6a33

Browse files
author
MarcoFalke
committed
Merge bitcoin/bitcoin#24707: doc: Speed up functional test runs using ramdisk
1764849 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 bitcoin/bitcoin@1764849 jamesob: ACK bitcoin/bitcoin@1764849 Tree-SHA512: b8e0846d4558a7a33fbb7cd190e30c36182db36095e1c1feae8c10a12042cff9d97739964bd9211d8564231dc99b4be5eed806d12a1d11dfa908157d7f26cc67
2 parents a2e1590 + 1764849 commit e1e6a33

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

test/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,34 @@ how many jobs to run, append `--jobs=n`
107107
The individual tests and the test_runner harness have many command-line
108108
options. Run `test/functional/test_runner.py -h` to see them all.
109109

110+
#### Speed up test runs with a ramdisk
111+
112+
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.
113+
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.
114+
115+
To create a 4GB ramdisk on Linux at `/mnt/tmp/`:
116+
117+
```bash
118+
sudo mkdir -p /mnt/tmp
119+
sudo mount -t tmpfs -o size=4g tmpfs /mnt/tmp/
120+
```
121+
122+
Configure the size of the ramdisk using the `size=` option.
123+
The size of the ramdisk needed is relative to the number of concurrent jobs the test suite runs.
124+
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.
125+
126+
To use, run the test suite specifying the ramdisk as the `cachedir` and `tmpdir`:
127+
128+
```bash
129+
test/functional/test_runner.py --cachedir=/mnt/tmp/cache --tmpdir=/mnt/tmp
130+
```
131+
132+
Once finished with the tests and the disk, and to free the ram, simply unmount the disk:
133+
134+
```bash
135+
sudo umount /mnt/tmp
136+
```
137+
110138
#### Troubleshooting and debugging test failures
111139

112140
##### Resource contention

0 commit comments

Comments
 (0)