Skip to main content

小贴士和技巧

附加提示

欢迎来到附加提示部分! 无论你是熟练的农民,还是刚刚接触Autonomys网络,这些提示和技巧的目的都是为了提高你的经验和效率。 在这里,我们探索实用的建议和不太为人所知的技术,帮助你微调你的耕种配置,并轻松应对常见挑战。 从环境配置到管理后台进程,这些指导性建议是为了确保农民节点流畅高效运行而量身定制。 让我们深入探讨如何充分利用Autonomys网络中的农民节点。

Switching to a new snapshot from older/different versions of Autonomys

info

Unless specifically mentioned by the Development team you should NOT have to wipe your configuration on new releases.

In general you should be able to download the latest release, and re-start the Node & Farmer with the same commands as you started to prior version with no errors.

在某些情况下,版本更新会导致您的节点和农民出现问题,通常发生错误时,您可能必须清空您的节点数据 。 如果您有任何问题,您可以查看我们的论坛,并且进入到我们的Discord服务器寻求帮助。

清空

如果你之前正在运行节点,并希望切换到新的网络,请执行以下步骤,然后再次按照指南中的步骤进行操作:

# 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配置更有效率:

Example:

./FARMER_FILE_NAME farm --reward-address WALLET_ADDRESS \
path=/media/ssd1,size=100GiB \
path=/media/ssd2,size=10T \
path=/media/ssd3,size=10T

Optimizing DSN Syncing

note

DSN是一个复杂而微妙的主题,为了更好地了解我们去中心化的存储网络,请从我们的Academy参考本指南

要谨慎使用的参数
--out-peers
--in-peers
--dsn-target-connections
--dsn-pending-in-connections
--dsn-in-connections

设定默认参数时考虑到常见消费级调制解调器/路由器的性能。 调整某些参数可以通过增加并行来提高DSN同步性能。 然而,如果你决定大幅度增加并行,请确保你的调制解调器/路由器的性能足以处理增加的流量。 节点:

--dsn-out-connections
--dsn-pending-out-connections

Farmer: Increasing the values of the farmer parameters could increase the plotting speed.

--out-connections
--pending-out-connections

Help

节点和农民都有各种选项和参数。 查看完整的列表,请在节点或农民命令中加上--help选项。

节点、 农民和 Docker 的一些额外提示

绘图并发(仅限CPU)

在绘图过程中,表格生成既有并行部分,也有顺序部分。 通过同时生成多个表,我们可以将顺序部分与并行部分重叠,从而提高 CPU 利用率。 然而为所有记录同时生成表需要很大的内存,一次只为少数记录生成表可以在 CPU 和内存使用之间达到最佳的平衡。 默认每两个核心分配一个记录且并行不会超过八个。我们添加了 --cpu-record-encoding-concurrency 选项来覆盖默认值。 根据我们用P-cores ,E-cores和P+E核心组合的内部测试,这个配置看来达到了最高性能。 如果你喜欢使用以前的运行方式,或者如果你的内存使用率太高,你可以将 --cpu-record-encoding-concurrency 设置为 1 。 您也可以尝试将其设置为 23 等,取决于具体CPU/RAM 配置,你可能会获得更好的性能。

创建不存在的农场

农民有权选择是否在启动时自动创建不存在的农场。 如果您提供的数据块路径找不到,系统将生成一个新的农场。 但是,如果驱动器没有挂载成功,可能就不适合这样做。 默认情况下,此选项设置为 true,但您可以通过添加 --create false 选项来覆盖它。 在创建好你的绘图后将这个标志设置为 false 可以防止在错误的驱动器无意中写入文件。

分块读取模式

启动时,每个农场都会对每个地块性能进行基准测试,以确定最有效的证明方法,得出 ConcurrentChunksWholeSector 结果。 如果你已经知道你的设置的最佳方法,你可以指定每个农场的这个参数节省掉基准测试时间。 例如,在定义路径和大小后,您可以包含 record-chunks-mode= 参数并指定期望值,例如 path=/mnt/subspace1,size=100G,recordchunks-mode=ConcurrentChunks。 如果您没有提供这个参数,系统将在启动时对每个磁盘进行基准检查,以确定最有效的方法。

Benchmarking Your Farmer

基准测试可以帮助您测试您的 farmer 在 Autonomys Network 的不同版本上的绘图速度。

./subspace-farmer benchmark audit /path/to/your/plot

将 /path/to/your/plot 替换为您的实际绘图路径。 这将让你了解绘图性能的指标

目前,Autonomys 节点支持 rayon 实现机制,该机制打开文件的次数与 farming 线程的数量一致,并为每个线程使用专用的文件句柄。

结果解读:典型的情况是,评估吞吐量以确定任意个磁盘上可审计的最大容量。 CPU 和磁盘性能都会影响这个指标。

To read more about audit benchmarking, read this forum post.

还有二级命令可供使用,可以帮助你确定你的 farmer 在审计后有多少时间来提供证据。

./subspace-farmer benchmark prove /path/to/your/plot

每个 farmer 有~4秒的时间进行审计和证明,剩下的时间将用于证明,所以用于证明的时长取决于审计的速度。 证明性能并不取决于绘图的大小。

如果环境没有足够的时间来做证明步骤,farmer 就会记录这样的日志信息:

Proving for solution skipped due to farming time limit slot=6723846 sector_index=46

阅读更多关于证明基准的信息,请阅读本论坛的帖子

清理农场

在某些情况下,特别是当 farmer 意外终止或遇到错误时,可能无法正常重启。 Scrub 命令通过清除或重置具体的数据块来协助解决这些问题。

./subspace-farmer scrub /path/to/your/plot

务必将 /path/to/your/plot 替换为你的实际绘图路径。 谨慎使用此命令,因为它修改数据块以恢复到出错前的状态。

指定绘图/重新绘图的具体的 CPU 核心(仅限CPU)

此选项将覆盖 Subspace farmer 可能使用的任何自定义逻辑。 您可以通过添加 "--plotting-cpu-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" 设置,节点将默认使用与绘图相同的线程池。

---

计时器

Gemi-3g引入时间证明并且在节点中添加了一个新的可选角色。 计时器帮助运行时间证明,以确保网络安全。 计时器需要高性能的CPU核心,但可以由任何节点运行。 您可以使用以下命令的开启计时功能。

  • --timekeeper: 启用节点计时功能
  • --timekeeper-cpu-cores: 指定计时功能将运行的核心.

了解更多关于 计时器 的信息


Common Command Examples

这里是一些节点和农民经常使用的命令:

  • Display farm information: ./FARMER_FILE_NAME info PATH_TO_FARM
  • 清理农场错误: ./FARMER_FILE_NAME scrub PATH_TO_FARM
  • 删除所有与农民相关的数据:./FARMER_FILE_NAME wipe PATH_TO_FARM
  • Erase all node-related data: ./NODE_FILE_NAME wipe NODE_DATA_PATH

---

NUMA Support

note

NUMA 支持让拥有大量强大的 CPU 和大量可用内存的 farmer 受益。 所需的 RAM 大小取决于处理器和线程数量。\

此前,绘制/重绘线程池是为每个农场单独创建的,即使每次只能使用配置的线程数(默认情况下只有一个)。 引入 NUMA 支持后, farmer 应用程序有一个线程集合管理器,将创建所需数量的线程集合,分配给当前绘图/重新绘图的农场。 当创建线程池时,它被分配到一组 CPU 核心,并且只能使用这些核心。 Pinning 不会1比1的固定线程和核心,相反, 操作系统可以在核心之间移动线程, 但只在分配给线程池的 CPU 核心内。 这将确保某些具体扇区的绘图只发生在某个 CPU/NUMA 节点上。

Enabling NUMA on Windows/Linux machines

在 Linux 和 Windows 上,farmer 将检测 NUMA 系统并创建一些与NUMA节点数相对应的线程池。 这意味着对于CPU核心数很多的主机,程序默认行为会改变,并因此消耗更多内存。 但如果需要,可以通过 CLI 选项将其更改为以前的行为。 要使用NUMA,您需要通过主板的 BIOS 启用它,让 farmer 知道它存在。 该选项存在于Threadripper/Epyc processors的主板中,但也可能存在于其他主板中。 如果您不启用它,操作系统和农民都会认为您有一个单独的 UMA 处理器,无法应用优化。

阅读更多关于 NUMA支持及其为大规模 CPU 带来的好处,请阅读这个论坛帖子

Changing number of open files limit (Linux)

Linux 中更改打开的文件数量限制有时对系统和应用程序性能调节都是必要的。 管理文件共享或分发的应用程序,包括 p2p 等系统,可能需要同时打开与不同对等节点的很多连接。 更高的打开文件数限制使这些应用程序能够维持更多的连接,提高数据传输率和系统效率。

这也可以帮助缓解 Too Many Open Files 错误。

您可以使用 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