How to (mining) benchmark a system (not single core)?

Hey there, I know there are many threads discussing hashrates and benchmarks. But there must be a way to benchmark not a single-thread equihash round but a full system with all CPU cores (or GPU cores) and all memory taken into account.

How are you comparing mining software anyways? There must be a way other than zcbenchmark solveequihash 20, thanks!

I’ve been trying to figure out the same thing. You can provide a thread count parameter to zcbenchmark:

~/zcash/src/zcash-cli zcbenchmark solveequihash 20 4

I quickly made a script to run several tests with zcbenchmark. I’m still not certain this will get us the answer that we want though. My main goal with this script is to verify that four threads is the best setup for my machine. At this time, I understand that this script is searching for the point where memory bandwidth and CPU are maxed out. These appear to be the key resources for equihash.

Script: zcashHashTest/ at master · MetaRossi/zcashHashTest · GitHub

Also, if you haven’t found it, this thread is a good place to start: Equihash - ongoing memory requirement adjustments? - #18 by daira

1 Like

Damn useful, thanks. I wasn’t aware of the threads parameter.

And I should have mentioned that you can set the number of cores for actual mining in the ~/.zcash/zcash.conf with the genproclimit parameter. I’m not certain how that plays with the second numeric argument for solveequihash…

While mining with genproclimit=4 in my config, all four CPUs on my machine are maxed out. Then, I stopped mining with the command ~/zcash/src/zcash-cli setgenerate false and performed the following two tests:

  1. With genproclimit=4 in my config and a command with ‘solveequihash 2’ – only one CPU is at 100%.

  2. With genproclimit=4 in my config and a command with ‘solveequihash 2 2’ – two CPUs are at 100%.

So, it looks like solveequihash uses 1 CPU/thread unless directed to do otherwise. The genproclimit does not impact solveequihash.