Skip to content

Instantly share code, notes, and snippets.

@hebasto
Created April 4, 2020 09:59
Show Gist options
  • Save hebasto/9d64e1d5682b1ec46cf6981945b435df to your computer and use it in GitHub Desktop.
Save hebasto/9d64e1d5682b1ec46cf6981945b435df to your computer and use it in GitHub Desktop.
The Bitcoin Core on Heterogeneous Multi-Processing platforms

The Bitcoin Core on Heterogeneous Multi-Processing platforms

Consider a system on the heterogeneous computing ARM big.LITTLE architecture, e.g., ODROID-HC1 powered by Samsung Exynos 5 Octa 5422.

As the Bitcoin Core is a highly computationally intensive application, the usage of ultra-low power and slower LITTLE cores could lead to a substantial lagging and errors (see: bitcoin/bitcoin#16008).

Also there are report about other flaws in LITTLE cores design.

The suggested solution of the described problem is to force the CPU core affinity of the Bitcoin Core processes. On Linux this could be achieved by the taskset command:

# In Samsung Exynos 5 Octa 5422 CPU cores from 0 to 3 are `LITTLE', and from 4 to 7 are `big'.

# Launch bitcoind with the forced affinity to all of the `big' cores.
/usr/bin/taskset --cpu-list 4-7 /usr/local/bin/bitcoind -daemon

# Run functional tests from the repository root directory.
taskset --cpu-list 4-7 ./test/functional/test_runner.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment