XMRig GhostRider(Raptoreum)挖矿实战:自动调优原理、线程配置与源码级解析
2026/9/15 18:09:13 网站建设 项目流程

XMRig GhostRider(Raptoreum)挖矿实战:自动调优原理、线程配置与源码级解析

【免费下载链接】xmrigRandomX, KawPow, CryptoNight and GhostRider unified CPU/GPU miner and RandomX benchmark项目地址: https://gitcode.com/GitHub_Trending/xm/xmrig

本篇技术指南围绕 XMRig 对 GhostRider 算法(Raptoreum 链)的原生支持展开,覆盖从 v6.16.0 引入的算法支持、命令行与批处理模板的快速接入、线程配置的正确姿势,到"免调优自动配置"背后的性能原理与底层实现。读完本文,你将掌握如何在 XMRig 中正确启动 GhostRider 挖矿、理解其独特的"一个哈希批次由多线程协同计算"的调度模型,并能从源码层面定位相关实现路径。

GhostRider 算法与 XMRig 的支持方式

GhostRider 是 Raptoreum(RTM)采用的 PoW 算法,属于一种混合型算法:它由15 个经典哈希函数(Blake、BMW、Groestl、JH、Keccak、Skein、Luffa、Cubehash、Shavite、SIMD、Echo、Hamsi、Fugue、Shabal、Whirlpool)与6 个 Cryptonight 变体组合而成。XMRig 从v6.16.0版本开始原生支持该算法,无需任何外部依赖或插件。

在源码中,该算法被定义为GHOSTRIDER_RTM(别名ghostriderghostrider/rtmgr),其内部使用的 6 个 Cryptonight 变体依次对应 Algorithm.h 中的枚举值:

枚举字符串名称内存大小说明
CN_GR_0cn/dark512 KBGhostRider 专用变体
CN_GR_1cn/dark-lite256 KBGhostRider 专用变体
CN_GR_2cn/fast2 MBGhostRider 专用变体
CN_GR_3cn/lite1 MBGhostRider 专用变体
CN_GR_4cn/turtle256 KBGhostRider 专用变体
CN_GR_5cn/turtle-lite128 KBGhostRider 专用变体

以上内存大小对应 ghostrider.cpp 中的cn_sizes数组注释。在 CnAlgo.h 中还可以看到每个变体的迭代次数特化(CN_ITER / 4CN_ITER / 2CN_ITER / 8)以及cn/dark-litecn/turtle-lite的特殊掩码,这些细节决定了各变体在单次计算中的工作量差异。

从构建角度看,GhostRider 是一个可选的独立模块:CMake 通过WITH_GHOSTRIDER选项控制是否编译,开启后会定义XMRIG_ALGO_GHOSTRIDER宏并构建静态库ghostrider(见 cmake/ghostrider.cmake),其模块级 CMake 配置位于 src/crypto/ghostrider/CMakeLists.txt,其中对全部sph_*哈希源文件使用-Os(MSVC 下为/O1 /Oi /Os)编译,以控制二进制体积与缓存友好度。

快速上手:命令行与批处理模板

GhostRider 的启动方式与 XMRig 其他算法一致,只需要在命令行指定-a gr。官方 README(src/crypto/ghostrider/README.md)给出了两种典型场景的示例。

非 SSL 端口示例:

xmrig -a gr -o raptoreumemporium.com:3008 -u WALLET_ADDRESS -p x

SSL 端口示例:

xmrig -a gr -o rtm.suprnova.cc:4273 --tls -u WALLET_ADDRESS -p x

两者的区别仅在于池端口与是否追加--tls参数。字段含义为:

  • -a gr:指定使用 GhostRider 算法(等价于--algo=ghostrider);
  • -o <host>:<port>:矿池的 stratum 地址与端口;
  • -u <wallet>:矿池用户名,对大多数 Raptoreum 矿池而言就是你的 RTM 钱包地址;
  • -p x:矿池密码,多数矿池填写x即可。

仓库同时提供了开箱即用的 Windows 批处理模板 scripts/rtm_ghostrider_example.cmd,其核心命令与 README 完全一致:

xmrig.exe -a gr -o raptoreumemporium.com:3008 -u WALLET_ADDRESS -p x

该脚本还包含一段注释,说明了pool addresspool portpool username/walletpool password四个字段的填写规则,并建议选择排名靠后的矿池以帮助 Raptoreum 网络去中心化。实际使用时,只需把WALLET_ADDRESS替换为你自己的地址即可。

线程配置:为什么官方不建议使用 --threads

README 明确给出了一条重要建议:不要使用--threads-t)参数,因为它会关闭 XMRig 内置的高级自动配置逻辑。如果你确实想调整 GhostRider 的线程数量,官方推荐的命令行方式是:

--cpu-max-threads-hint=N

其中N的取值范围是0 到 100,表示 CPU 线程使用率上限的百分比。例如设置--cpu-max-threads-hint=75即让自动配置最多使用约 75% 的可用线程。在源码中,该选项对应的配置键为max-threads-hint(见 CpuConfig.cpp),在config.json里位于"cpu"段下,与命令行等价。

如果需要进行更精细的线程规划(例如按 NUMA 节点或物理核心数精确控制),建议改用 config.json 而不是命令行,通过"cpu"段的threads配置手工指定线程拓扑——这样可以在保留自动调优结果的基础上做局部微调。

性能原理:自动配置与细粒度线程调度

GhostRider 的性能亮点在于其独特的调度模型。README 指出:尽管单个算法的实现并未做极致优化,XMRig 通过更好的自动配置更细粒度的线程调度获得了更高的综合算力——核心思路是:对缓存需求不大的计算部分,可以用 2 个线程协同计算同一个哈希批次

以典型的 Intel CPU(每个核心 2 MB 缓存)为例:cn/fast(2 MB 内存)需要完整占用核心缓存,因此每个核心只运行 1 个线程;而其他更小的 Cryptonight 变体(如 512 KB、256 KB、128 KB)缓存需求低,可以在同一批次中让每个核心运行 2 个线程分担计算,从而始终把 CPU 负载维持在 50% 以上。反过来,在 Ryzen 3000/5000 系列 CPU 上,如果系统检测到某些变体"每核心 1 线程"反而更快,XMRig 也允许 CPU 负载略低于 100%——这正是自动调优根据实测数据做出的取舍。

这一机制的源码实现集中在 ghostrider.cpp:

  1. helper 线程(HelperThread)create_helper_thread()通过 hwloc 在物理核心的剩余逻辑线程上创建辅助线程(ghostrider.cpp),主线程与辅助线程通过uv_mutex/uv_cond完成任务投递与同步(ghostrider.cpp)。
  2. 运行时决策hash_octa()每次计算 8 个哈希(N = 8)。当三个 Cryptonight 变体在调优表中都被标记为threads == 2时,会把 8 个哈希拆成前 4 个 + 后 4 个,分别交给主线程和 helper 线程并行计算(ghostrider.cpp);否则退化为单线程逐部分计算。
  3. 自动调优benchmark()会在挖矿前对不同变体、不同 step(1/2/4)组合进行实测,维护tuneDefaulttune8MB两张调优表,并依据 CPU 的 L3 缓存容量(每核心是否达到 8 MB)选择最优参数(ghostrider.cpp)。这解释了 README 中"无需手动调优"的结论——调优动作在启动时已由程序自动完成。

调用链的入口位于 CpuWorker.cpp(创建 helper 线程)与 CpuWorker.cpp(对 GHOSTRIDER 家族算法调用ghostrider::hash_octa),接口声明见 ghostrider.h。

哈希流水线:15 个核心哈希与 6 个 CN 变体的组合

了解调度之外,GhostRider 的哈希构造也值得拆解。hash_octa()的流程如下(ghostrider.cpp):

  1. 选取算法组合:从 Blob 中[4; 36)字节(即 PrevBlockHash,GhostRider 的种子)逐 nibble 采样,通过select_indices()无重复地选出 15 个核心哈希索引(core_indices[15])与 6 个 CN 变体索引(cn_indices[6])。
  2. 三段流水线:整批计算被分为 3 个 part,每个 part 依次执行5 个核心哈希 + 1 个 Cryptonight 变体——前一轮的输出(32 字节哈希 + 32 字节零填充)作为下一轮的输入,形成 64 字节的中间缓冲tmp[64 * N]
  3. 输出:最终得到每个输入的 32 字节结果,写入output

15 个核心哈希函数由宏CORE_HASH批量生成(ghostrider.cpp),包括blake512bmw512groestl512jh512keccak512skein512luffa512cubehash512shavite512simd512echo512hamsi512fugue512shabal512whirlpool,对应源码目录下对应的sph_*.c/sph_*.h文件。由于每个 part 的 CN 变体由种子动态决定,同一批 8 个哈希可能混用不同内存大小的 scratchpad,hash_octa()会按step参数重新分配ctx内存区(见 ghostrider.cpp),这也是"细粒度调度"能够生效的物理前提。

需要说明的是,在未启用 hwloc(XMRIG_FEATURE_HWLOC)或 ARM/RISC-V 平台上,benchmark()与 helper 线程相关接口会退化为空实现,hash_octa()使用固定的 step 数组{4, 4, 1, 2, 4, 4}以单线程方式执行(ghostrider.cpp),此时将无法获得 x86 平台上的多线程协同加速。

性能测试数据

README 中附带了作者实测的性能对比表。以下为Windows 平台(XMRig v6.16.2 MSVC 构建 vs cpuminer-gr-avx2 1.2.4.1 调优版)的对比结果:

CPUcpuminer-gr-avx2(调优后), h/sXMRig v6.16.2(MSVC), h/s提速
AMD Ryzen 7 4700U632.6733.1+15.89%
Intel Core i7-2600496.4554.6+11.72%
AMD Ryzen 7 3700X @ 4.1 GHz2453.02496.5+1.77%
AMD Ryzen 5 5600X @ 4.65 GHz2112.62337.5+10.65%

此外还有一组Linux 平台数据(XMRig v6.16.0 GCC 构建,由社区成员 Delgon 测试),README 已明确标注该组数据过时,仅供参考:

CPUcpuminer-gr-avx2(调优后), h/sXMRig v6.16.0(GCC), h/s提速
AMD Ryzen 9 3900X3746.513604.89-3.78%
2x Intel Xeon E5-2698v32563.42638.38+2.925%

从数据可见,XMRig 在中小缓存 CPU 上的优势尤其明显(如 Ryzen 7 4700U 与 Core i7-2600 均超过 11%),这与前述"2 线程协同计算低缓存变体"的调度策略直接相关。需要强调的是,这些数字是特定版本、特定 CPU 上的历史实测值,实际算力会随 CPU 型号、编译选项(MSVC/GCC/Clang)、内存与散热环境而变化,请以你本机的实测结果为准。

相关源码索引

如需深入阅读,可按以下路径继续探索:

  • 算法定义与别名:src/base/crypto/Algorithm.h、src/base/crypto/Algorithm.cpp
  • Cryptonight 变体参数特化:src/crypto/cn/CnAlgo.h
  • GhostRider 核心实现与自动调优:src/crypto/ghostrider/ghostrider.cpp、src/crypto/ghostrider/ghostrider.h
  • 15 个核心哈希源码:src/crypto/ghostrider/ 下的sph_*.c/sph_*.h
  • 模块构建开关:cmake/ghostrider.cmake、src/crypto/ghostrider/CMakeLists.txt
  • 工作线程调用入口:src/backend/cpu/CpuWorker.cpp
  • 启动模板:scripts/rtm_ghostrider_example.cmd
  • 官方说明:src/crypto/ghostrider/README.md

【免费下载链接】xmrigRandomX, KawPow, CryptoNight and GhostRider unified CPU/GPU miner and RandomX benchmark项目地址: https://gitcode.com/GitHub_Trending/xm/xmrig

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询