P夫中SMH分发功能介绍

大量显卡集群用户使用机械存图远远无法保证写入速度稳定,使用固态中转又成了必选之路,P夫的smh分发功能由此而生。

大部分用户都在用H9 P图,本文附录一也是以H9的P图方式计算的,自己写脚本、程序改造的官方P图是可以降低对中转盘容量高要求的。

一、P夫的SMH分发工作流程

监控中转盘内新P好的bin文件,只要单个bin完成立即选择一个合适的最终目录进行拷贝(非剪切,直接剪切会导致P图程序重复P图),待该图文件夹彻底P完时P夫会将已经拷贝的图删除。

二、常见问题

  1. H9的图能分发吗?
    能。
  2. 官方P等图能分发吗?
    能。
  3. 中转盘需要多大?
    影响因素较多,通常理想情况至少要存得下1.5~5个图,
    P图速度500MB/s单个机械盘的写入速度降到50MB/s时中转盘需要约5个图的空间。
  4. 要等整个图文件夹P完才开始分发吗?
    新版不用等,只要一个bin完成了就会开始拷贝。
  5. 分发中途停止,下次启动软件还能继续吗?
    能。
  6. 怎么收费?
    新版smh分发按量付费,暂定149元/PiB,可联系作者获得测试容量包。
  7. 在此之前购买的按时间付费用户怎么办?
    联系售后赠送等值容量包;
    老版本依然按时长收费使用,新版本必须有容量包抵扣才能使用。

附录一、中转盘需要空间计算

例子1:假如总P图速度500MB/s,单个机械盘写入速度能稳定200MB/s时的容量需求表,表中这只是理想情况,当机械盘将满时会写入速度下降,对中转盘的容量要求则更高。

例子2:例子1中的机械盘写入速度只有100MB/s时,需要2.7个图的空间。

例子3:例子1中机械盘写入速度只有50MB/s时,需要约5个图的空间。

GigaHorse 3.0 压缩图解读

Max于2024年3月7日发布了新版的压缩方案,个人感觉这方案作者应该早就测试过,只是要求太高没有发布,现在已经有对手Drplotter发了超高门槛的压缩方案,他也把自己的方案发布出来。

实测(ubuntu+mz32+4090d+256内存+970evo plus)P图一个c33稳定在1分10秒左右(排除第一个图比较慢),单就P图速度来说比Drplotter要快很多。

挂图评估数据见底部表格。

v3新方案简介

  • v3的压缩等级有8个,26、27、28、29、30、31、32、33,其中c30~c33本次已经发布,c26~c29尚未开发完成;
  • 作者说c26~c29的压缩比率可以用来替换原来的c16~c19的图;
  • 这是新的图格式,想使用必须升级钱包、收割机等所有giga的程序;
  • P图最低需要8G内存、4G显存,只能用显卡P图,不能用CPU;
  • c30~c33只能用NVIDIA显卡挂图,gtx9xx系列显卡起步;
  • 只有K32,仍然支持老图和新图

GigaHorse 3.0 挂图能力表

Chia压缩图新势力——DrPlotter研究报告

本文不包含项目文档中的如何使用部分,稍后有需要会单独开贴介绍。

一、快速了解

  1. 项目主页:https://github.com/drnick23/drplotter
  2. 与现有的GigaHorse和NoSSD相比,DrPlotter更像GigaHorse,
    它也提供P图+挂图的专用程序、能自由切换池子和solo、提供远程解压功能;
  3. 有两个压缩等级,名字是Eco3x和Pro4x,简单说就是原图大小的三分之一(35.2GiB)、四分之一(24.2GiB);
  4. 门槛巨高,P图和挂图只能用24G大显存的显卡:3090、4090、A5000,
    3090只能挂470TiB(物理磁盘容量),Chia过滤器改为256之后挂图能力会减半只能挂235TiB;
  5. 也是一套未公开的压缩方案,与GigaHorse和NoSSD一样;
  6. 只能P新图(就是那种合作社的图),不能P老图;
  7. P图速度一般,大概5~6分钟一个图;
  8. 不能选K值,只有K32;

二、作者自述

(以下内容是地瓜意译的,可能有不太准确的地方)

DrPlotter是我投入热爱和精力开发了两年的成果,最初只是单纯的热爱,现在致力于奇亚压缩图领域为Chia发展添砖加瓦。

为了能保持项目的可持续性,我没有采取随机手续费或其他改变手续费的做法来抽水,奇亚农民的一小部分系统资源会被用来当做我个人的图(地瓜的理解是将你的磁盘和显卡的一部分被他征用P成了他的图,收益自然归他,说的比较模糊目前只是猜测)。

当然这些被征用的资源损耗已经在统计时排除掉了(地瓜的理解:作者上面例子里跟我们说3090一半算力能挂100TiB Pro4x的压缩图,也许实际上是能超过100TiB的,真实的挂图能力可能是105TiB,表面上图能压缩到35G,实际可能里面32GB是农民的3GB是归属作者的,这也是猜的),我保证这个抽成的方式和比例不会变,确保您现在看到的结果与未来都是一致的,这样您可以轻松规划自己的农场。

这个压缩技术方案的细节是不公开的,但我仍然致力于为Chia提供高效、顶尖的工具。

三、本压缩方案的工作流程

  • DrPlotter:专用P图程序,P出的压缩图就是DrPlots;
  • DrPlots:专用的压缩图格式,后缀是.drplot;
  • DrChia Harvester:完全等价于Chia的收割机程序,可以无缝衔接到Chia官方的Farmer节点上(主钱包里自带的挂图主要模块),它的使用命令也与Chia收割机完全相同;
  • Solver Server:运行了DrSolver的服务器;
  • DrSolver:远程计算程序,给收割机提供算力支持,这跟GigaHorse程序里面的chia_recompute_server程序的职责是一样的;

这个工作流程跟GigaHorse非常像,不同的是它不需要专门的主钱包程序,仍然复用Chia官方的主钱包程序。

基于这个工作逻辑可以得到几个结论:

  • 可以在现有的Chia钱包的基础上增加替换某个收割机,互相不影响;
  • 收割机本地可能需要单独运行DrSolver程序,否则无法使用;

四、配置要求

4.1 P图配置最低要求

  • 24G显存的显卡:RTX 3090、RTX 4090、A5000
  • 128G内存
  • PCIE 4.0 X16 插槽的主板(暂不清楚用PCIE3.0会有多大劣势)
  • 64位CPU
  • Debian/Ubuntu系的Linux系统

4.2 专用远程解压服务DrSolver最低要求

  • RTX 3090 24GB
  • Debian/Ubuntu系的Linux系统

4.3 专用收割机的最低硬件要求

  • 每PiB物理硬盘约需要4GB显存
  • Debian/Ubuntu系的Linux系统

五、两种压缩比率混合以充分利用显卡

为了最大化利用显卡资源,可以通过调整Eco3x和Pro4x两种图的数量比例实现。

假设有335TiB物理磁盘(大概23个16T硬盘),一个RTX 3090,当前奇亚过滤器为512。

其中235TiB磁盘P成Eco3x,占用约50%的3090;剩余的100TiB P成Pro4x,占用剩余的50%的3090算力挂图,这样就达到了对显卡的利用率最大化,最终的有效算力就是235TiB x 3+100TiB x 4 = 1105TiB ≈ 1.07PiB。

Windows系统查询commitmentAtxId

查询方法

  1. 确保已经运行spacemesh官方的钱包程序或go-spacemesh程序并同步完成;
  2. 下载grpcurl程序包后解压到任意文件夹;
  3. 用记事本新建【查询atxid.ps1】的powershell脚本文件,拷贝以下代码后保存;
  4. 右键【查询atxid.ps1】选择【使用Power Shell运行】。
Write-Host "查询前请确保smh钱包已经同步!!"
Write-Host "开始从go-smh或smh钱包查询信息,时间略长请稍等..."
# 执行命令并将输出存储到 $result 变量中
$result = .\grpcurl -plaintext 127.0.0.1:9092 spacemesh.v1.ActivationService.Highest

# 将输出的 JSON 字符串转换为 PowerShell 对象
$jsonObject = $result | ConvertFrom-Json

# 访问所需的属性值
$highestActivation = $jsonObject.atx.id.id

# 输出属性值
# Write-Host "解码前:Highest Activation ID(注意这不是P图用的): $highestActivation"

$bytes = [Convert]::FromBase64String($highestActivation)
$hexString = [BitConverter]::ToString($bytes) -replace '-'

$output = "解码后最新的atx id(可以P图用):$hexString"
Write-Host $output

pause

执行后如下图红框内就是P图用的commitmentAtxId

P夫 v1.6.0-1963 测试版

1963 2024年4月12日

新版smh分发改为按量付费(暂未销售,可联系作者获得测试授权),原有smh授权无法使用新版smh分发功能,仍可继续使用旧版按时长收费版本。

  1. 增加gigahorse c29支持
  2. 修复gigahorse P图替换为生效问题
  3. smh分发改为立即拷贝bin,尽可能提前转移bin文件
  4. 修复smh分发中断后无法继续问题

1837 2024年03月07日

  1. 适配GigaHorse v3,支持c30~c33
  2. 完善Qubic
  3. 完善smh图分发功能

1817 2024年03月01日

  1. 修复Qubic程序无法彻底停止问题

1813 2024年03月01日

  1. 新增Qubic炼金程序(免费功能)
  2. 修复smh分发功能未完成的图提前开始拷贝的bug

1771 2024年02月26日

本次改动较多,图稳定用户请使用上个版本。

  1. 新增smh图分发,用于解决H9集群P图在单机械盘写入不稳定问题
  2. 新增Drplotter压缩图的P图
  3. 增加nossd挂图无故停止后重新启动机制

1589 2023年12月25日

  1. 增加Spacemesh挂图功能预览版
  2. Spacemesh的P图配置文件名称有改动,与之前版本不兼容,1480之前未完成的图请手动将图 目录中的pfu-smh-task.json改为pfu_smh_plotting.json
  1. Spacemesh 单卡P图时出错无法开始,多卡正常。
  2. 分发拷贝的任务列表无法打开

1480 2023年12月06日

  1. 修复1478引入的新bug,多卡时P图命令生成失败

1478 2023年12月05日

  1. 修复单卡P图完成时清空磁盘严重bug!

1468 2023年12月03日

  1. 修复spacemesh多卡P图重复严重bug,强烈建议升级!
  2. 修复spacemesh任务看板统计错误
  3. 增加自动保存最近一次P图参数模板

1452 2023年12月03日

  1. 修复spacemesh任务统计面板数据错误、不显示
  2. 修复创建spacemesh任务出错问题
  3. 修复spacemesh中途停止再次开始P图出错问题

1442 2023年12月02日

  1. 增加了spacemesh继续P图自定义选项
  2. 完成了spacemesh任务看板
  3. 修复spacemesh合并图的bug、其他一堆小问题

1422 2023年11月30日

  1. 继续修复诸多spacemesh P图的bug

1408 2023年11月29日

  1. 修复spacemesh多卡P图在同个目录冲突问题
  2. 增加了spacemesh P图速度显示
  3. 其他spacemesh的bug修正

1394 2023年11月26日

  1. 新增spacemesh P图(查看任务等功能尚未完成),挂盘功能尚未完成,仅作预览尝鲜使用。
  2. 分发拷贝优化选取最终目录的速度,最终目录较多时等待时间大大缩短
  3. 修复1.5.3正式版内核下载失败bug

下载

Windows
https://file.c4dig.cn/pfu-plotter/pre-release/pfu-plotter-Windows-dev-1963.zip

Ubuntu
https://file.c4dig.cn/pfu-plotter/pre-release/pfu-plotter-Ubuntu-dev-1963.zip

其他Linux
https://file.c4dig.cn/pfu-plotter/pre-release/pfu-plotter-Linux-dev-1963.zip

P夫的Spacemesh P图教程

一、基本概念

  1. smh的图文件多大?
    不用理解下面这个复杂的换算关系,P夫P图的时候只关心每个磁盘打算存多少GB的图就足够了,通常是5~8TB。
    一个盘一个完整图,由若干单元组成,每个单元由多个小文件组成。
    整个图包括至少4个单元,每个单元固定64GB,每个单元内有若干小文件;
    整个图最小256G,因为4个单元 x 64G=256GB;
    单个小文件默认4GB,如果用官方GUI钱包P图默认每个2GB;
    当单个图内小文件是4GB时,每个单元内的图文件总数是16个(64GB➗4GB),当单个图文件是2GB时总数32个(64GB➗2GB),当然你也可以任意修改单个小文件的大小;
    所以默认情况下如果一个图有4个单元,它里面包括64个图文件(或128个)。
  2. 我有14T的机械,可以把硬盘P满吗?
    不行,以机械盘平均200MB/s的读取速度,理论12个小时能读取8437GB,太多的图根本扫不完。
  3. 那么不管多大的机械盘,只能存不超过8437GB的图吗?
    基本上是的,除非你的机械盘读取性能超强。
  4. 图格式是什么?
    .bin后缀,还包括了postdata_metadata.json、key.bin等文件
  5. P图的硬件要求
    1个显卡需要约150M内存,CPU无要求,显卡最重要,参照P图速度表,pcie速度不重要;
  6. CPU能P图吗?
    能,速度极慢,极不推荐;
  7. 能多卡同时P图吗?
    可以
  8. 能多台主机的多个显卡同时P同一个图吗?
    可以,但P夫现在不支持,除非要以最快的速度P完一个完整图否则不推荐,因为这些图最终还需要放在一起进行合并操作。
  9. 整个图里细分这么多小文件,中途中断了能继续P吗?
    可以
  10. P图的commitmentAtxId从哪里找?
    它是当前链上最新的atx id,P夫用户直接点【自动获取】按钮即可。
    最好每次P图查询最新的id来使用,此时2023年12月21日最新的atx id是:B08B4CF7C7038A7DE6C31173FAB27C8479A0AC2F083A3DDC4803F3D12147A6A9

二、P夫中的spacemesh P图参数解析

【P图显卡数】:即将用来P图的显卡数量。

假如有8个显卡全部用于P图设置8,如果想使用其中的5个进行P图设置5,此时软件会默认使用0~4号显卡;

【指定显卡序号】

如果显卡的序号不连续,比如有8个显卡但是只想使用其中的5个,并且这5个显卡序号不连续,此时可在【指定显卡序号】中填入这5个显卡的序号,例如:0,1,3,4,5

【每个盘P图量】:每个最终目录里的磁盘的存图量,必须是64的倍数,不能低于256。

  • 如果设定了1024,P夫会在每个最终目录P一个1024GB的图(多个bin文件总共1024G);
  • 可以给每个磁盘设定自己的P图量,在最终目录表格中双击单独设定该盘的【计划P图容量】数值;
  • 如果机械盘空闲空间是500G,此时如果设置了512是无法生效的,P图时会自动调低到448G。
  • 每个最终目录磁盘如果不设定则使用默认的【每个盘P图量】数值;

【commitmentAtxId】:该参数需要使用smh链上最新的atx id,P夫用户可以通过【自动获取】按钮自动获取最新atx id。

Linux系统运行了官方钱包或go-spacemesh后可以通过以下命令获取:

./grpcurl -plaintext -d '' 0.0.0.0:9092 spacemesh.v1.ActivationService.Highest | jq -r '.atx.id.id' | base64 -d | xxd -p -c 64

Windows系统查询方法点这里《Windows查询smh的commitmentAtxId方法》

【指定Node ID】:这个Node ID 并不是用户的账户信息,它只是当前P的图文件的公钥;

自己给自己P图时不用填写,软件会自动生成;代P时理论上是需要提供该公钥的,用户自己保留私钥,向代P老板提供公钥。

多说一句,如果是长期代P的老板通常不会拷贝图骗钱,因为所有用了相同图的用户都会被ban,很快就会暴露,通过拷贝图骗人是不明智的。推荐一个又简单又能避免被代P老板欺骗的方法是指定一个bin大小,比如你只要bin文件是10GB(或者20、30这种冷门bin大小)的图。

【单个图文件大小】:单个bin文件的大小。

一个磁盘一个图,一个图里有若干个bin文件,这些bin文件的容量加在一起就是整个图的大小,调大后管理起来可能更容易 ,不建议特别大导致一个图无法被多个显卡分配。

例如:单个bin文件设置为64G,图文件总量是256G,总共有8张显卡,一个256G的图只能分成4个bin,由于单个bin文件太大导致数量不够分给8张显卡,建议最大不要超过=图总量➗显卡数,总之这个数值的设置原则是最好能足够给显卡分配。

【最终目录】:所有待P图的机械盘。

NoSSD 2.3rc

NoSSD作者刚刚在电报群发布了2.3的预览版本,增加了一些新特性和功能完善。正式挖矿用户建议等等看,别急着更新。

更新内容

括号中都是笔者加的注释。

  1. 当图文件新增或删除后不再提示访问错误;(常见的无关文件终于不再进行警告了)
  2. 为 1070 等低端 GPU 提供更准确的基准测试;
  3. 新增了 --no-stop 参数让P图程序保持在等待状态直到磁盘有空间继续P图;(P夫用户应该很熟悉的选项,磁盘满了立即停止还是一直监控也可以自己设定了);
  4. -d 设置目录增加了 * 模糊匹配支持;(方便了纯命令挂盘的用户)
  5. 删除了绘图完成后的短暂延迟;(看字面意思可能是对P图速度的优化,未验证)
  6. 尝试在Windows系统上避免申请共享内存,当显存不够的时候;
  7. 新增了 --rescan-interval 选项来自定义重扫描间隔时间;(如果挖矿的盘已经满了并且不再继续P图进去,不需要这个参数,并且最好设置 --no-rescan 参数禁用不必要的扫描)
  8. --emulate-filter 256 绘图过滤器仿真模式。 现在可以像“–emulate-filter 256”一样测试使用较低绘图过滤器的挖掘;(可能是方便现在模拟测试将来filter变成256时对挂盘显卡的性能要求)
  9. 增加了并发文件扫描,加快启动速度;(解决单机带盘多的用户启动慢)
  10. 增加了--no-mining选项,相当于命令里不设置-a chia地址;(没啥用)
  11. 更稳定地运行挖矿当带图量接近带图上限时;
  12. 增加了-v-vv 两种挂盘时的详细日志级别可选;
  13. 对于无关的文件告警只会在 -vv 详细日志界别中出现;

下载地址

Linux
https://file.c4dig.cn/plotter/linux/nossd/nossd-linux-v2.3rc3.zip

Windows
https://file.c4dig.cn/plotter/windows/nossd/nossd-windows-v2.3rc3.zip

P夫NoSSD 显卡P图双开的方法

P夫多开非常容易,推荐使用方法二。

下面两个例子是单卡双开,如果是双卡双开,创建两个P图任务时调整【P图显卡】参数为目标显卡即可。

方法一:常规思路

连续创建两次P图任务即可,注意两个任务的中转盘和最终目录不能相同。

到此双开完成。

方法二:灵活自由

依然要创建两次P图任务,但是不再指定最终目录,将中转盘设置到最终目录的位置。

打开【分发拷贝】功能,将中转盘设置到源目录,所有机械盘设置到最终目录,启动即可。

优点是不需要在P图任务中指定机械盘,更换机械盘时不必重启任务。