RandomX

Proof of work algorithm based on random code execution

BSD-3-CLAUSE License

Stars
1.4K

Bot releases are visible (Hide)

RandomX - Performance and portability testing

Published by tevador over 5 years ago

Precompiled binaries are available for Windows 64-bit and Ubuntu/Debian x86-64.

Verification mode

Run as:

randomx --verify --softAes
  • If you have a recent x86 CPU which supports AES-NI, you may omit the --softAes option to get a small increase in performance.
  • If your system supports large pages, you can add --largePages option to get a small increase in performance.

Mining mode

Mining mode is currently only supported on 64-bit x86 CPUs. Requires at least 4.25 GiB of RAM.
Run as:

randomx --mine --init Q --threads T --nonces N
  • Select Q (number of initialization threads) equal to the number of hardware threads of your CPU.
  • Find T (number of mining threads) which produces the highest hashrate. Starting point should be 1 thread per 2 MB of L3 cache, but some CPUs can benefit from running more threads, while some CPUs cannot run more than 1 thread per core efficiently depending on other factors such as L1/L2 cache sizes.
  • Select N (number of nonces) equal to 10000, 100000 or 1000000 depending on the performance of your system. Aim for at least a 60-second mining period for accurate results.
  • If your CPU doesn't support AES-NI, you have to add the --softAes option. Your mining performance will be about 40% lower.
  • If your system supports large pages, you can add --largePages option to get a significant increase in performance (up to 25%).
  • If you have a NUMA system, run one instance of RandomX per NUMA node.

Example of optimal configuration for Intel Core i7-8550U (4 cores, 8 threads, 8 MB of L3 cache).

randomx.exe --mine --init 8 --threads 4 --nonces 100000 --largePages
RandomX - Performance benchmark for x86

Published by tevador almost 6 years ago

Performance test of ALU and FPU operations for 64-bit x86 machines.

Usage:

Windows:

benchmark.exe < test1.data
benchmark.exe < test2.data

Linux:

./benchmark < test1.data
./benchmark < test2.data
./benchmark < /dev/urandom

Produces result formatted as a markdown table suitable to be pasted directly on github.