[技术流]魔改挖矿程序

有小伙伴反馈,开多线程挖矿的时候性能不是很好。
Screenshot_20190617_104643
我看了一下,好像是Rust的jemalloc对多线程支持不好。

注意:这个问题只在linux上有,mac不受这个问题影响。

我这边有个临时魔改的版本


注意:分支名 testnet_opt
基于ckb v0.14.0
有动手能力的小伙伴可以试一下。
我本地测试gps能提升30%

二进制下载 https://github.com/rink1969/ckb/releases/tag/v0.14.0_opt

效果 i7 7700k单线程可以到420 gps

小tips:建议所有用户都使用新发布的 v0.14.1版本。v0.14.0版本挖矿进程打印刷的太频繁了,也会影响一点性能,新版本调低了刷新频率。当然魔改的版本也解决了这个问题。

v0.16.0还没有改这个问题(主要是现在节点和miner在一个二进制里面,怕会影响节点的性能),所以上次的优化还可以用。

ubuntu编译好的二进制

9 Likes

另外我发现超线程在挖矿里面起不到作用。
我的 i7 7700k是4核8线程。
开4个挖矿线程跟开8个挖矿线程,总的gps是差不多的。
不知道其他人那里怎么样?
大家有什么挖矿的小tips可以一起来讨论。

能单独编译 ckb/miner 成一个执行文件么,默认条件编译出的好像是lib

我改了下 ckb/miner/Cargo.toml 也没有编译出来 :crazy_face:
掌握的rust姿势很不全面啊

现在节点和挖矿程序是在一个可执行文件里面的。
直接在根目录下make build就行了。

如果成功的话,可以把你编出来的可执行文件打包一份放上来。
strip一下,然后打个压缩包,只有10M。

我本地是archlinux,glibc版本太高了,我编译的应该大部分人都用不了:joy:

i7-8700 是6核12线程

本地是 i7-8700 单线程,在window的wsl运行,GPS在260~300之间
用的是 ckb的默认代码, 没有优化过的版本, 运行的是远程节点, miner运行在本地

你是直接用的官方的binary吗?
那看起来windows的wsl里面也没这个问题。
你可以不用我那个魔改的版本。

不过你可以换新出的ckb v0.14.1,新的版本把gps打印的刷新频率调低了。
v0.14.0那个打印刷的太频繁了,也会影响一些性能。

用了rink的 opt-9e069f1e2
环境一样,稳定在了 420GPS左右

运行的远程节点, miner运行在本地

赶巧挖到了 这次活动的 首块 :sunny: CKB Explorer

1 Like

我刚看错了,我以为你这个是12个线程的数据。
原来是一个线程,那说明windows(wsl)环境也是有问题的。

另外,你应该是起了多个挖矿进程,每个进程1个线程。
其实可以修改 ckb-miner.toml 里的 threads 字段,一个挖矿进程就起多个线程。操作上会简单一点。

[[miner.workers]]
worker_type = "CuckooSimple"
threads     = 4

楼主编译的二进制文件比官方版的小了几十兆,怎么做到的?

这是因为官方仓库用 jemalloc 作为默认的 malloc,楼主的把 jemalloc 删了,用操作系统的 malloc,这样会小很多

我在make build 的时候 禁掉了debug :genie:
减小打包后的文件体积

#ckb/cargo.toml

[profile.release]
debug = false

我用strip把可执行文件里的debug信息去掉了。
否则上传太慢了。

小白想请教一下 二进制文件是放在哪个目录下还是怎么使用啊 我8700K开8线程单个GPS才100多

直接替换原版的ckb可执行文件就行了

请问一下原版的CKB可执行文件叫什么名字 小白不懂

首先还是要参考官方的文档,下载ckb软件,准备挖矿的各种配置。


使用官方版本已经开始正常挖矿的前提下,使用魔改的ckb程序替换掉官方的程序,可以提高挖矿的性能。

PS.我提供的二进制只在ubuntu 18.04上。这个优化也只在linux平台有用,其他平台无效。

1 Like

我现在已经在正常挖矿了 大佬的意思是用这个替换掉官方那个88兆的文件 然后用官方的教程重新解压配置一遍的意思么

如果你已经在正常挖矿,就先停一下,把可执行文件换一下,重新起就可以了。不用重新配置。
对,就是替换88M那个文件,我这个文件小是因为我把符号表strip掉了。