Serverless奇亚币(Chia)挖矿与成本分析
奇亚币Chia是最近非常火的新币种,火爆到什么程度呢?火爆到大容量的硬盘都被卖光了。另外一点Chia的创始人就是BT的创始人,依靠的是硬盘容量挖矿,号称绿色挖矿。虽然一直对区块链行业不是很了解,但是仍然想凑个热闹,想尝试一下Serverless是不是能挖矿。
目前挖矿这件事情在国内还是有所禁忌的,毕竟是有违低碳环保的宗旨,同时,也有人质疑虚拟货币是不是一场资本骗局。笔者对于这些问题并没有太多研究,本文主要从技术维度对Serverless挖矿的技术实现和成本进行分析。
Chia架构分析
之前确实没有太关注过币圈,只是简单的了解区块链的基本概念,也不曾参与过挖矿,只是简单的知道比特币必须要依靠性能强大的GPU能力。而Chia币恰好相反,不必依赖昂贵的显卡能力,而单纯消耗的存储能力。公有云的存储,特别是对象存储一向具有很大的价格优势,所以这也为公有云资源进行挖矿提供了可能性。
先来简单分析一下Chia的架构,通过分析可知对于竞猜过程,并不需要钱包参与,因为对于plot数据,创建时已经指定了两个公钥,也就是plot已经是专属“彩票”,兑奖时,直接打给的彩票的创建公钥对应的账户地址(待稍后测试确认),对于Wallet并没有参与竞猜,所以不需要部署,对于farmer部分只需要部署,Full node,Farmer, Harvester三种,具体每个服务部署多少,取决于负载,也就是 plots的数量级。
Chia云主机架构挖矿
部署架构
之前看到过利用公有云进行挖矿的案例,甚至AWS官方竟然推出了标准化文档。这些解决方案中主要利用的是云主机加上本地的NVMe存储实现高性能挖矿。
在这个方案中,临时空间使用的是NVMe本地盘,而最终的持久化空间则是利用对象存储,但是由于对象存储的访问接口限制,需要利用用户态模块将对象存储以文件目录挂载给各个节点,用于最终数据的写入。但是在实际测试中,用户态的模块其实并不稳定,经常出现Input/Output Error的情况,经过与云商工单系统确认,该问题属于硬伤,只能再增加一层缓存层(比如NAS),利用对象存储的上传工具上传。
时间分析
分享一下实际的测试结果,我们云主机的规格4核32G,本地NVMe磁盘894G,最大的IOPS可以达到250000。为了测试准确性,我们使用k=32,其他为默认参数进行验证。总体生成耗时8.8小时,拷贝至最终存储11.6分钟,转存至对象存储大约耗时14分钟,总体耗时为9小时12分钟。
|
|
资源消耗
我们看一下监控数据,在单任务并发的情况下,我们可以看到,远远没有达到NVMe的极限速度。
CPU利用率方面基本没有超过25%,而网络利用率我们看到,在挖矿过程中并没有太多的网络消耗。
资源成本
测试过程中使用的是按量计费,Plots过程中主要涉及的云资源包括主机和云盘,费用分别为:
- 云主机 0.44 元/小时(账单内是将存储和计算资源分别计算,购买时时在一起)
- 云硬盘 2.92 元/小时
所以本次挖矿过程中产生的成本约为31元。对象存储1TB保存1个月数据的时间约为111元。
Chia Serverless架构挖矿
部署架构
公有云目前都提供基于容器的实例,这种实例是按照CPU和内存的使用时间来计费,也就是如果你的CPU没有使用,则无须付费。但是目前公有云中无法将NVMe类型的磁盘直接给容器使用,我们只能将性能最佳的云盘挂载给容器的方式。另外在测试过程中,如果直接使用对象存储作为持久化存储,最终拷贝过程会出现input/output error的异常,所以在测试过程中仍然借用NAS存储作为临时性最终存储。以下为部署架构:
我们将挖矿的所有节点运行在Kubernetes(Serverless)中,而Full Node放在一台低配置云主机(云主机和OSS通过内部网络通讯不收费)甚至本地环境,通过文件方式挂载使用。
本次选择的临时存储为最高性能的云硬盘,IOPS最高可达14300,缓存存储选择了普通的云盘(也可以使用NAS,成本接近),最终的数据仍然存放在对象存储。
时间分析
容器最大可使用的规格诶4C8G,云盘最大IOPS为14300。我们仍然使用k=32,其他为默认参数进行验证。总体生成耗时10.6小时,拷贝至最终存储14.5分钟,转存至对象存储大约耗时14分钟,总体耗时为11小时6分钟左右。
|
|
资源消耗
从磁盘性能损耗来看,也仍然没有达到云盘的极限性能。
内存利用率上,由于最高上限的限制,使用率应该不会超过4G,CPU利用率相对来说比较稳定,并没有超过200%。
11点监控
15点监控
21点监控
资源成本
- 容器实例:0.52 元/小时
- 云硬盘:0.6元/小时
所以本次挖矿过程中的成本约为12.3元左右。
总结
从监控数据可以看到,Chia币在挖矿中虽然非常依赖于硬盘,但是单任务运行时并没有完全把硬盘性能榨干(曾经调试过Thread参数但是结果差不多,如果有其他参数请告知),只能通过提高并发性来压榨硬盘。对于Serverless,根据监控可以适当降低磁盘规格来达到进一步降低成本的目的。同时,对于CPU利用率和内存的利用也不会占用太高,2核4G基本可以满足需求(有内存不足的风险,内存默认上限为3389,可以限制)。
通过以上的实验数据可以看到,在公有云上挖矿有不同的组合方案, 每一种组合的成本是完全不同的。如果以单一Plots比较,Serverless方式确实有比较明显的优势。但是,由于NVMe卓越性能可以通过提高并发方式实现成本最优。根据下表中临时空间占用,在刚刚规格配置的云主机上可以实现并发3个同时挖矿的效果。
同时Serverless在扩展的灵活性上要优于云主机的方案,通过适当的自动化手段,可以做到成本最优的效果。以上单纯的是从技术上对云主机挖矿的可行性进行分析,有兴趣的朋友可以入群讨论。
如果加群失败,请添加个人微信号入群