小贴士和技巧
附加提示
欢迎来到附加提示部分!无论您是经验丰富的Farmer,还是刚刚开始使用 Autonomys Network,这些提示和技巧都旨在提升您的体验和效率。在这里,我们将深入探讨一些实用建议和鲜为人知的技术,帮助您优化农场设置,并轻松应对常见挑战。从环境配置到后台进程管理,这些见解专为确保您的 Farmer 运行顺畅、高效而设计。让我们一同探索,如何充分发挥 Autonomys Network Farmer 的潜力。
从 Autonomys 的旧版本/不同版本切换到新快照
除非开发团队特别说明,否则在新版本发布时,您 不需要 清除您的配置。
通常,您应该能够下载最新版本,并使用与启动前一个版本相同的命令重新启动 Node 和 Farmer,并且不会出现任何错误。
在某些情况下,版本更新会导致您的 Node 和Farmer 出现问题,通常是在发生错误时,您可能必须清除Node。如果您有任何问题,您可以随时查看我们的 论坛 并跳转到我们的 Discord 服务器寻求帮助。
清空
如果您在此之前一直在运行一个node节点,并且想要切换到新的网络,请执行以下步骤,然后再次按照指南操作:
# Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases
./FARMER_FILE_NAME wipe PATH_TO_FARM
# Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases
./NODE_FILE_NAME wipe NODE_DATA_PATH
现在从头开始按照安装指南进行操作。
使用多个磁盘
为了最大限度地提高存储能力,您可以直接使用多个磁盘。这通常比依赖 RAID 配置更有效:
示例:
./FARMER_FILE_NAME farm --reward-address WALLET_ADDRESS \
path=/media/ssd1,size=100GiB \
path=/media/ssd2,size=10T \
path=/media/ssd3,size=10T
优化DSN同步
DSN 可能是一个复杂微妙的话题,为了更好地理解我们的分散式存储网络,请参阅我们学院的本指南。
--out-peers
--in-peers
--dsn-target-connections
--dsn-pending-in-connections
--dsn-in-connections
推荐参数:
默认参数的设置考虑了常见消费级调制解调器/路由器的功能。调整某些参数可以通过增加并行度来增强 DSN 同步性能。但是,如果您决定大幅增加这些参数,请确保您的调制解调器/路由器的性能足以处理增加的流量。 Node:
--dsn-out-connections
--dsn-pending-out-connections
Farmer: 增加Farmer参数的值可以提高绘图速度。
--out-connections
--pending-out-connections
帮助
Node 和 farmer 都有各种选项和参数。要查看完整列表,请将 --help
选项附加到 node 或 farmer 命令。
关于 Node、Farmer 和 Docker 的一些额外提示
- Farmer
- Node
- Docker
绘图并发(仅CPU)
在绘图过程中,数据表生成既有并行部分,也有顺序部分。通过同时生成多个数据表,我们可以将顺序部分与并行部分重叠,从而提高 CPU 利用率。虽然为所有记录生成数据表需要大量 RAM,但一次只为少数记录生成数据表可以在 CPU 和 RAM 使用率之间实现最佳平衡。
我们添加了 --cpu-record-encoding-concurrency
选项来覆盖默认行为,该行为每两个核心分配一条记录,但并行不超过八个。根据我们对 P 核、E 核和 P+E 核组合的内部测试,此设置似乎可以实现最佳性能。
如果您更喜欢使用以前的行为,或者您的 RAM 使用率过高,您可以将 --cpu-record-encoding-concurrency
设置为 1
。您也可以尝试将其设置为 2
、3
等,这可能会产生更好的结果,具体取决于您的特定 CPU/RAM 配置。
创建不存在的农场
农民可以选择指定系统是否应在启动时自动创建不存在的农场。如果您提供的地块路径未找到,系统将生成一个农场。但是,如磁盘没有正常挂载,这可能不是理想的选择。 默认情况下,此选项设置为“true”,但您可以通过添加“--create false”来覆盖它。在建立地块后将此标志设置为“false”可以 防止文件意外写入错误的驱动器。
记录块读取模式
启动时,每个farm都会对每个地块的性能进行基准测试,以确定最有效的证明方法,从而产生 ConcurrentChunks
或 WholeSector
结果。如果你已经知道针对你的特定配置的最佳方法,则可以将其指定为每个farm的参数,以节省基准测试时间。
例如,您可以在定义路径和大小后包含 record-chunks-mode=,并分配期望值,例如 path=/mnt/subspace1,size=100G,record-chunks-mode=ConcurrentChunks
。如果您不提供此参数,系统将在启动时对每个磁盘进行基准测试,以确定最有效的方法。
对 Farmer 进行基准测试
基准测试可以帮助您测试farmer针对不同版本的 Autonomys Network 的绘图速度。
./subspace-farmer benchmark audit /path/to/your/plot
将 /path/to/your/plot 替换为您的绘图的实际路径。这将为你提供关于绘图性能的指标和深入理解。
目前,Autonomys Node 支持“rayon”实现机制,该机制可以根据farming线程数多次打开文件,并且每个线程使用专用的文件句柄。
结果解读:通常,您会评估吞吐量来确定任意数量磁盘的最大可审计大小。CPU 和磁盘性能都会影响此指标。
要了解有关审计基准测试的更多信息, [请阅读此论坛帖子.
还有第二个可用的命令,它可以帮助您确定farmer 在审核后有多少时间来提供证明。
./subspace-farmer benchmark prove /path/to/your/plot
每个农民有大约 4 秒钟的时间进行审计和证明,因此根据审计速度,剩余时间将用于证明。证明性能与地块大小无关。
如果计算环境中没有足够的时间进行证明步骤,farmer 就会记录如下消息:
Proving for solution skipped due to farming time limit slot=6723846 sector_index=46
要了解有关证明基准测试的更多信息,请阅读此论坛帖子(https://forum.autonomys.xyz/t/audit-benchmark-result-explanation-please/2150)
清除你的Farmer
在某些情况下,尤其是当 Farmer 意外终止或遇到错误时,它可能无法正确重新启动。scrub 命令可通过清理或重置指定地块来帮助解决此类问题。
./subspace-farmer scrub /path/to/your/plot
确保将 /path/to/your/plot 替换为你的实际绘图路径。请谨慎使用此命令,因为它会修改绘图状态以从错误中恢复。
指定绘图/重新绘图的具体CPU 核心数(仅限CPU)
此选项将覆盖 Autonomys农民 可能使用的任何自定义逻辑。
您可以通过添加 --cpu-plotting-cores
来指定绘图 CPU 核心,后跟所需的核心参数。核心应以逗号分隔的值列出,并使用空格分隔不同的线程池或编码实例。
例如,--cpu-plotting-cores 0,1 2,3
将导致同时编码两个扇区,每个扇区使用一对 CPU 核心。
同样,您可以使用“--cpu-replotting-cores”自定义重新绘制 CPU 核心,后面跟着与上面的“--cpu-plotting-cores”示例中使用的参数类似的参数。
请注意,设置 --cpu-plotting-cores
需要为 --cpu-replotting-cores
配置相同数量的 CPU 核心组。如果省略 --cpu-replotting-cores
设置,node将默认使用与绘图相同的线程池。
快速同步
快速同步的工作原理是跳转到链的末 端附近,让您可以更快地同步到当前区块。初始跳转完成后,它的行为就像完全同步一样。事实上,如果您已经几天没有同步了,那么删除node数据库,通过快速同步同步到最新的区块可能会更快。
在某些情况下,您可能不想使用快速同步。要进行完全同步,您可以省略同步参数,或使用 --sync full
。如果您想运行一个 RPC node 供公众使用、成为operator或indexing,这很有用。在这种情况下,您需要运行一个archival node,而不仅仅是一个裁剪过的节点。archival node 需要完全同步。
计时器
Gemini-3g 引入了时间证明,并为node 添加了一个新的可选角色。计时器帮助运行时间证明以确保网络的安全, 计时器需要高性能核心 CPU,但可以由任何node runner 进行。您可以使用以下命令启用计时器
--timekeeper
: 在NODE节 点启用计时器功能--timekeeper-cpu-cores
: 指定计时器运行在哪个核心上
阅读 计时器的更多信息
常见命令示例
对于node 和 farmer来说,这里有一些常用的命令:
- 查看farm信息:
./FARMER_FILE_NAME info PATH_TO_FARM
- 清理farm错误:
./FARMER_FILE_NAME scrub PATH_TO_FARM
- 删除所有与农民有关的数据:
./FARMER_FILE_NAME wipe PATH_TO_FARM
- 删除所有节点相关数据:
./NODE_FILE_NAME wipe NODE_DATA_PATH
NUMA 支持
NUMA 支持将使拥有强大 CPU 和大容量内存的矿工受益。所需的 RAM 容量取决于处理器和线程数\
以前,绘制/重新绘 制线程池是为每个farm 单独创建的,尽管一次只能使用配置数量的线程池(默认情况下只有一个)。 随着 NUMA 支持的引入,farmer 应用程序拥有一个线程池管理器,它将创建必要数量的线程池,这些线程池将分配给当前绘制/重新绘制的farms。 创建线程池时,它会被分配给一组 CPU 核心,并且只能使用这些核心。Pinning不会将线程 1:1 固定到核心,相反,操作系统可以自由地在核心之间移动线程,但只能在为线程池分配的 CPU 核心内移动。这将确保特定扇区的绘制只发生在特定的 CPU/NUMA node 上。
在 Windows/Linux 机器上启用 NUMA。
在 Linux 和 Windows 上,farmer 将检测 NUMA 系统并创建与 NUMA node 数量相对应的线程池数量。这意味着对于大型 CPU,默认行为将发生变化,并因此消耗更多内存,但如果需要,可以使用 CLI 选项将其更改为以前的行为。 要使用 NUMA,您需要通过主板的 BIOS 启用它,以便 farmer 知道它的存在。此选项存在于 Threadripper/Epyc processors 的主板中,但也可能存在于其他主板中。如果您不启用它,操作系统和 farmer 都会认为您有一个 UMA 处理器,并且无法应用优化。
要了解有关 NUMA 支持的更多信息以及它为大型 CPU 提供的好处,请阅读[此论坛帖子](https://forum.autonomys.xyz/t/numa-support-is-coming/2299?u=nazar-pc)
更改打开 文件数量限制(Linux)
有时,更改 Linux 上的打开文件数量限制对于系统和应用程序性能调整都是必要的。管理文件共享或分发的应用程序(包括对等系统)可能需要同时打开与不同对等点的大量连接。更高的打开文件数限制允许这些应用程序维持更多连接,从而提高数据传输速率和系统效率。
这也有助于缓解“打开文件过多”错误
您可以使用“ulimit”命令临时更改打开文件的限制。例如,设置“ulimit -n 2048”将把限制设置为 2048。注销或重新启动后,此更改将恢复。
对于永久性的改变,你有两种方法:
- 修改内核参数“fs.file-max”。可以使用“sysctl”命令“sysctl -w fs.file-max=500000”来执行此操作。
- 要为单个用户设置限制,您需要编辑
/etc/security/limits.conf
文件。您可以为打开文件的数量指定硬限制和软限制,软限制设置:username soft nofile 10000
,硬限制设置:username hard nofile 30000