这是Monero门罗币系列文章的第八篇。
xmr-stak的挖矿效率还是不错的,但是在一些情况下,还有一定的算力提升空间。针对不同的系统平台、CPU、显卡,优化的套路不是一成不变的,优化的结果也不一定一样。本文只是抛砖引玉,分享几个优化的方向,最优的算力,还需要自己调整、优化。
本文翻译自xmr-stak官方的优化手册。
CPU挖矿优化
调整low_power_mode的值
low_power_mode的值与CPU的缓存大小和线程多少有关,可以设置为1-5,如果设置为false,相当于1,设置为true,相当于2。
当low_power_mode的值大于1的时候,假设为N,那么单个线程就要占用2N MB的缓存大小(默认情况下,每个线程使用2M的缓存), 同时每个线程的算力增加到N倍。对于一般的CPU,我们不需要调整low_power_mode的值,对于一些特殊的CPU,有很大的缓存,但是线程数较少,那就可以调整low_power_mode的值来提高性能。
AMD显卡挖矿优化
选择合理的intensity和worksize
intensity表示用来挖矿的线程数量,intensity的最大值的计算方式是:以MB计算的显存数量/2-128,如果使用8GB的显存,理论上最大intensity为8192/2-128=3968。但是对于超过4GB的显存来说,intensity一般远远小于这个最大值,比如有8GB HBM2显存的vega 56的显卡,intensity设置为1932左右效率比较高。
worksize表示同时合作挖矿的线程数,单个线程挖矿的效率较低,可以用多个线程配合同时挖矿,类似我们说的1+1>2。一般worksize设置为8或者16。
增加GPU的数量
对于一些高级的显卡来说,比如vega 56,一个GPU可以进行两个线程的挖矿,可以提高算力。可以对gpu_threads_conf进行优化一下,注意"index"的值,一块GPU的两个线程使用相同的index值。比如有两张vega 56的显卡,可以进行如下的配置:
"gpu_threads_conf" : [
// gpu: gfx900 memory:3920
// compute units: 56
{ "index" : 0, "intensity" : 1932, "worksize" : 8, "affine_to_cpu" : 0, "strided_index" : true },
{ "index" : 0, "intensity" : 1932, "worksize" : 8, "affine_to_cpu" : 0, "strided_index" : true },
{ "index" : 1, "intensity" : 1932, "worksize" : 8, "affine_to_cpu" : 0, "strided_index" : true },
{ "index" : 1, "intensity" : 1932, "worksize" : 8, "affine_to_cpu" : 0, "strided_index" : true },
],
增加内存池
通过本人的实验,这个设置对算力没有提升的作用,但是就像开头提的,优化无止境,说不定对你的系统就适用。
通过修改环境变量允许挖矿软件使用更多的线程进行挖矿,每次启动矿机钱都要进行一次设置。如果使用的是linux系统,用export代替set。
set GPU_FORCE_64BIT_PTR=1
set GPU_MAX_HEAP_SIZE=99
set GPU_MAX_ALLOC_PERCENT=99
set GPU_SINGLE_ALLOC_PERCENT=99
环境变量肯定要设的,要不然有些系统在开始分配显存的时候xmr-stak直接就崩了