天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。
人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。
天下矿有难易乎?挖之,则难者亦易矣;不挖,则易者亦难矣。

吾矿机之配置,不逮人也;吾矿机之数量,亦不逮人也;旦旦而挖之,日习而优之,久而不怠焉,待出币,而亦不知其配置高于低也。

本人在 2019年12月份(Lotus 测试网刚上线不久)的时候发布了一篇名为 Filecoin 系列11-Lotus 低配置挖矿的践行 的文章,讲述了如何使用大量低配机器进行 Lotus 小扇区(1GB) 挖矿。 然而众所周知,从一阶网络重置以后,Lotus 测试网已经不支持 1GB 扇区测试了,而且明确声明主网上线之后最小支持 32GB 扇区。

协议实验室的官方团队在 Lotus 的官方文档上发布了测试的硬件基本配置,明确说明了矿机的最小 RAM 不低于 128GB。因为计算复制证明的时候需要 消耗大量的内存,大概在 sector size 的两到三倍。那么对应到 32GB 扇区,大概保守估计要 96GB RAM 用于复制证明。 再加上系统其他进程所需要的 RAM,所以实验室建议把 RAM 提升到 128GB 是合理的。

具体详细配置请参考官方文档 Protocol Labs Standard Testing Configuration

如此高的配置确实对散户造成了沉重的经济负担。而且关键问题是,你会发现你好不容砸锅卖铁凑齐了官方需要的配置,一测试发现一个星期才 Proving 不到 1TB 的数据(客户反馈的测试数据)。甚至个别客户反馈说连一个 sector 都没 Proving. 貌似我们只能看着大户去吃肉(抢头矿),我们连汤都 喝不上,因为众所周知,挖头矿是最容易获得算力并获得出块奖励的。

作为一个爱折腾的技术屌丝,望梅止渴从来不是我们的风格,但是矿机配置的门槛摆在那,我们连一台 128GB 内存的矿机都没有…

刚好我们有个客户他们有 5 台满足配置要求矿机,说可以让我们测试一下。 本文讲述的就是我们是如何利用这 5 台矿机的测试过程,以及得出的一些测试心得。

测试成果

首先大概说下我们的测试成果:我们使用这 5 台矿机搭建一个小的 Lotus 集群。测试了2个星期左右,目前有大概提交了 6.82 TB Proving。

废话不多说,直接上图:

由于我们机器是慢慢加上去的,从 1 个 Worker 到 4 个 Worker,根据我们的测试数据来看,4 个 Worker 大概平均一天有 750-800GB 的 Proving。

另外,截止发文为止,这个矿工共挖了 742.42 个 FIL.

机器配置

本次挖矿我们使用的机器基本配置如下:

Miner 机器配置

CPU Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz
RAM 256GB
系统盘 120GB SSD x 1
数据盘 无数据盘,挂载网络存储
GPU Nvidia GeForce RTX 2080 Ti
网络 万兆网卡x 1
电源 双电源冗余

Worker 机器配置

CPU Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz
RAM 256GB
系统盘 120GB SSD x 1
数据盘 8TB x 8
GPU
网络 万兆网卡x 1
电源 双电源冗余

上面的机器配置虽然只是几乎刚好满足官方的挖矿需求,看起来价格也不高,但是也不会很便宜。 如此看来 Filecoin 挖矿根本是不屌丝参与的游戏,这听起来有点让人难以接受,但是事实也许就是如此。 这也是为什么我把这次测试叫做 中产阶级的实践,因为在我看来,能够买齐这 5 台机器的至少也是中产阶级了。

这里说点题外话,我们稍稍打听了一下刷测试网排行榜的几位友商的机器配置,他们一天可以完成 10 几 TB 的 Proving。但是他们机器的配置 配置也是高得难以令人置信,比如他们每个 Worker 配置了 4 张 GPU。而且机器的数量跟我们也完全不是一个数量级。

所以毫不夸张的说,参与测试网冲榜成本确实不低,说是一场烧钱游戏也不为过。当然,每个人参与冲榜的目的不同,这里我们不做评论, 每一个为测试网做出贡献的人都应该值得尊重和鼓励,不管测试者出于什么目的。

测试环境

  • 操作系统:Ubuntu 18.04 LTS
  • 交换机吞吐量:10GB
  • Lotus 版本: 0.2.8+gitb96aedd7
  • Ceph 版本: 12.2.12 luminous (stable)
  • 网卡速度: 10000Mb/s

挖矿方案

我们这次测试最终的稳定方案是 Miner x 1 + Worker x 4,其中 Miner 节点搭载一块 GPU。

存储方案我们用的是 Ceph 的分布式存储,由于我们没有多余的机器,所以存储网络直接就是 4 台 Worker 机器部署的。这也直接导致了我们 Worker 机器的性能损失,其中影响最大的 CPU 和 网络资源。

Ceph 此次我们采用的 Replication 模式,整个集群可用空间为 115TB,当前 CephFS 挂载空间为 105TB。

Ceph 集群信息:

部署工具

本次测试我们全程使用 GammaOS 作为集群的部署工具和运维工具。具体的部署过程请参考我们的另一篇文章, Filecoin 系列13 - 使用 GammaOS 快速部署 Lotus 挖矿集群

下面我只贴上 GammaOS 上的一些监控状态图:

lotus-storage-miner 应用

Miner 节点预览:

Miner 挖矿进程监控:

Miner 节点上主要跑了两个进程 Lotus daemonlotus-storage-miner。由图可知这两个进程占用的总的 CPU 和 RAM 分别 150% 和 5%。

lotus-seal-worker 应用

Worker 节点预览:

lotus-seal-worker 进程监控:

根据 Worker 节点预览图我们可以看出,由于我们没有 GPU,所以复制证明全都是通过 CPU 来完成的,所以 Worker 的 CPU 一直都是满负荷在跑。 不过 RAM 占用最多的也就 24.20%。

因此,我们现在至少可以得出一些粗浅的结论:

  1. Miner 节点配置可以降低很多,个人觉得 RAM 32GB 已经足够了。
  2. 以目前机器的配置,我们可以在 Miner 节点上再多跑一个 Worker 进程,这样可以增加 Worker 数量。事实上我们已经这样测试过了, 这在 GammaOS 上实现非常容易,只需要点几下鼠标就可以了。Sealing的速度确实增快了,但是发现引发了一个意想不到的副作用:Miner 节点的爆块率降低 了,由于 Miner 大量资源被占用,在规定的时间内没能出块,导致区块被其他矿工抢走了。所以我们最终从这个节点卸载了 lotus-seal-worker 应用。
  3. 我们通过 GammaOS 的数据统计了自从矿工启动以来,lotus-seal-worker 进程的 RAM 实时占用情况,发现最高峰值为 30.4%, 那么实际 RAM 占用 = 256 x 30.4% ~= 78GB。也就是刚好符合官方所说的 2-3 倍的扇区大小(sector size)。

总结

简单总结一下我们这次的挖矿实践。首先最大的一个收获是,经过实践我们发现,虽然说抢头矿很难,但是也没有那么的难。只要你愿意尝试, 愿意折腾,即使你只有几台机器,也能分一杯羹。

第二,其实如果只挖 32GB 的扇区的话,也许内存的配置并不需要那么高,96GB 应该足够了,反过来如果你想挖更大的扇区, 那就赶紧把 RAM 提上去。

第三,如果你的 Miner 不跑 Worker 的话,配置完全可以不用这么高。前面通过 GammaOS 统计可以发现,我们的 Miner 节点 CPU 了不到 10%,内存用了不到 5% 。根据你测试的情况,能省就省,省下来提升 Worker 也许是个不错的选择。

第四,存储系统的效率直接影响挖矿的效率,本次测试我们把存储系统部署在挖矿网络,这直接影响了我们的挖矿效率。 有条件的话还是应该分开部署,而且根据 Worker 机器的增多, 网络搭配有很大的调整和优化空间,网络优化得当能够带来 50% 以上的效率提升。不要忽略网络环境!!!

第五,也是最最重要的一点,对于 Filecoin 矿工来说,冲榜单只是手段,提高投入产出比才是最重要的。一味的拼配置玩的是资本游戏, 如何用在降低矿机配置同时,也能得到不错的产出,让更多 IPFS 和 FileCoin 信仰者和爱好者都能加入挖矿, 这才是广大研究 Filecoin 技术人员该努力的方向。