专注Chia
分享与XCH有关的资讯

管理Chia绘图操作的工具,什么是Plotman?

什么是Plotman

Plotman是用于管理Chia绘图操作的工具。它允许您配置参数以计划打印作业,通常以交错,无休止的顺序进行。它将在多个温度(-t)和目标(-d)驱动器上平衡绘图作业的负载。它提供了将完整地块从绘图机转移到农业机械的设施(一种称为“存档”的操作)。它还提供了一些用于观察绘图作业进度的工具,并有助于对绘图作业过程进行操作(例如,暂停/恢复/终止)。

Plotman是一个高级用户工具,可以使某些类型的绘图自动化更加容易。它不是使初学者更容易绘图的自动工具。强烈建议您在使用Plotman之前,先获得手动运行绘图作业的经验,以了解绘图的工作方式以及您的硬件如何响应。

Plotman不是Chia核心代码库的一部分,也不与Chia Network正式相关。它很大程度上是一个Alpha软件,正在开发中,其工作方式的某些方面仅是历史性的事故,现在这里写的内容可能在三个月内不适用。它是完全由志愿者在业余时间开发的(他们都有日间工作)。它是在Linux上开发的,但似乎可以在MacOS上很好地工作,并且有些人已经在Windows的WSL下运行它。

Using-Plotman-to-Manage-Chia-Plotting-1

运作方式

Plotman是基于一些假设而设计的。这些假设可能是最优的,也可能不是最优的,但它们推动了初始设计。

  • 绘图的不同阶段使用不同的资源组合(磁盘IO,空间,内存,CPU),但是这些资源是固定的。定期甚至是错开的工作都应该使资源需求保持平稳,以便随着时间的推移保持恒定。这将有助于最佳地充分利用资源。
  • 应根据硬件何时准备接受其他绘图作业来计划绘图。尽管这可能只是一个固定的时间延迟,但在许多情况下,还是需要根据其他条件进行调整,例如正在运行的作业总数,在特定tmp目录上运行的作业数,或者自上次运行以来已运行了多长时间。在全球范围内或在该tmp目录上启动了作业。
  • 缩放绘图操作通常将使用一台或多台绘图机,与一台或多台农民/收割机分开。将绘图操作与农用土地上的存储区分开,可以提供灵活性和鲁棒性。因此,绘图到本地驱动器然后使用异步和可自定义的过程将这些绘图转移或“存档”到耕种位置很有帮助。
  • 为了健壮起见,应尽量减少对保持状态的依赖或对核心Chia代码的深度耦合。Plotman应该是无状态的,仅在操作系统具有当前正在运行的绘图作业的知识的情况下才能够运行。Plotman检查OS进程表和打开的文件表,以查找正在运行的打印作业并找到其打开的文件。由Plotman启动的绘图作业将输出重定向到日志文件,这使Plotman也可以检查日志文件以确定作业进度。

Plotman的主要用途是plotman Interactive,它执行以下功能:

  • 监视系统状态,当前绘图作业及其进度,并根据配置的参数生成新的绘图作业
  • 在本地绘图仪机器上监视完成的样区,并将其归档到远程农民(可选)
  • 显示系统状态-当前绘图作业的状态以及临时目录,目标目录和归档目录

您还可以使用plotman plot仅运行绘图作业生成,plotman归档仅运行存档。还有其他命令行工具可用于检查和操作正在运行的绘图作业。

有关plotman命令功能的完整和最新信息,请使用内置的命令行帮助选项plotman –help。

安装绘图仪

Linux的安装:

  1. Plotman假定系统上存在可运行的Chia安装。通过键入source / path / to / your / chia / install / activate激活您的chia环境。
  2. 然后,使用以下命令安装Plotman:
    > pip install –force-reinstall git + https://github.com/ericaltendorf/ plotman @ main
  3. Plotman将在计算机上基于OS的默认位置中查找plotman.yaml。要创建默认的plotman.yaml并显示其位置,请运行以下命令:
    > plotman config generate
    用作起点的默认配置文件位于此处。
  4. 就是这样!现在,您可以通过键入plotman version来验证其版本来运行Plotman。运行plotman –help了解可用的命令。

配置和运行Plotman Interactive

方向盘和驱动器

Plotman假定您配置一个或多个“ tmp”目录(用于-t的快速目录)和一个或多个“ dst”目录(Chia绘图仪将在其中发出完成的绘图,即-d目录)。请注意,如果使用存档功能,则“目的地”目录不是最终目的地,而只是地块所在的缓冲区,直到存档作业可以将其移至农民。

Plotman会根据全局系统状态(例如,正在运行多少个作业,何时启动上一个开始的作业)以及所考虑的tmp驱动器的状态(例如,正在运行多少个作业)来调度作业tmp dir,他们取得了多少进展)。

通常的用例是将tmp目录设置为正在使用的块设备(即物理驱动器或RAID设备)的安装点。大多数Plotman文档都假定此用例。但是,这不是必需的,在某些高级情况下,可能有理由将一个块设备上的多个目录视为单独的逻辑tmp目录。

在许多情况下,只有一个dst驱动器(和目录)就足够了。如果您有多个驱动器,则不仅会拥有更大的绘图缓冲区,而且Plotman还将分发绘图和归档作业,从而避免并发IO(替代RAID驱动器)。如果您有旧的1TB或2TB HDD集合,那么这将是一组不错的dst dirs。

排程

可以为Plotman配置许多条件来启动新的绘图作业。当满足所有条件时,将启动作业。

在全局范围内,您可以配置一次要运行的最大绘图作业数量,以及一个参差不齐的参数,该参数限制了新作业的启动速度。最大作业总数是一种有用的方法,可以限制用于Chia绘图的总内存。应设置全局交错,以避免作业聚集在一起并立即开始。设置初始值的一种好方法是,确定要并行运行的作业数量,估计它们在运行时将花费多长时间(并行,这可能比一个人独自运行时要长),然后将这些值相除确定频率。例如,如果您希望并行运行12个作业,并且每个作业要花费8个小时,则合理的做法是将全局时间间隔设置为40分钟(或更短)。

每个tmp目录中也有一个最大作业限制。应该根据您的驱动器大小和IO吞吐量进行设置。例如,一个1TB的tmp驱动器可以轻松地容纳3个交错的绘图作业,如果是交错的,则可能适合4个。但是,取决于您的驱动器速度,3可能太多了-例如,您可能希望运行最多两个作业的SATA SSD。

在tmp目录上错开是通过工作进度而不是时间来完成的。它旨在使系统性能的可变性比固定时钟更强健。通过Chia绘制阶段(1、2、3和4)以及“子阶段”来衡量进度。子阶段是Chia绘图仪进度的Plotman命名法,每个阶段定义如下:

  • 在阶段1-3中,子阶段0是(通常是简短的)初始化
  • 在阶段1中,子阶段1-7对应于计算表1至7
  • 在阶段2中,子阶段1-6对应于表7向下传播到2的反向传播
  • 在阶段3中,子阶段1-6对应于表{1,2}至{6,7}的压缩
  • 在阶段4中,整个操作被视为“子阶段0”

在Plotman中,进度由阶段:子阶段指标(有时也称为阶段主要:次要指标)描述。例如,一个工作可能显示为处于阶段3:4,这将对应于阶段3(表4和表5的压缩)。

tmp目录中的交错是通过按阶段衡量的工作进度完成的。基本思想是,下一个作业不应在tmp dir上启动,直到上一个作业达到其进展的某个点为止。

合理地询问是否可以按时间完成tmp-dir内的交错,以及是否可以通过阶段进度来进行全局的交错。这些是Plotman开发人员正在考虑的事情。

封存

许多用户选择忽略归档操作,而直接将图绘制到其耕作驱动器上。这可以; 为此,只需注释掉存档部分的配置中的行即可。

当前,正确配置归档很繁琐且容易出错。我们正在努力改善这一点。在Plotman Wiki上有一个指南,描述了如何在此处配置归档:https : //github.com/ericaltendorf/plotman/wiki/Archiving

跑步

首次运行Plotman时,将需要创建一个配置文件。您可以使用plotman config generate来做到这一点。然后,您可以在所描述的位置编辑配置。

配置完成后,您就可以开始打印了。运行交互式绘图仪,您应该会看到一个概述屏幕。假设没有绘图作业正在运行,绘图员应检测到机器已准备好绘图并开始作业。只要您保持运行状态,机器准备就绪时(根据您的配置),绘图员将继续启动新的绘图作业。启动后,这些绘图作业独立于绘图员,应完成。如果要暂停或停止新图的创建,可以按“ p”键或直接退出plotman(“ q”或^ C)。

“绘图员互动”屏幕

运行交互式绘图仪时,屏幕显示以下信息:

第一行显示状态。绘图状态显示了我们是否刚刚开始绘图,如果不开始,为什么(例如,交错时间,tmp目录已准备好,等等)。归档状态表示我们当前是否正在归档(并提供rsync pid),或者dst驱动器中是否没有可用于归档的图。

第二行显示当前绘图作业进度的快照图形视图。每个作业都显示在进度条上,该进度条具有阶段1、2、3和4的里程碑。字符,带有2,“:”,三个“;”以及四个或更多“!”的字符。这是一种简便的方法,可以快速查看绘图的当前状态,进度正在运行多少作业以及它们是均匀分布还是聚集在一起。

第三行提供了一些通篇使用的目录缩写的键。对于tmp和dst目录,我们假定它们有一个公共前缀,在此处进行计算和指示,然后可以通过其唯一后缀(在上下文中)对其进行引用。例如,如果我们有tmp dirs / mnt / tmp / 00,/ mnt / tmp / 01,/ mnt / tmp / 02等,我们在此处显示/ mnt / tmp作为前缀,然后可以讨论tmp dirs 00或01等。存档目录是相同的,除了它们是远程主机上的路径,并且可以通过rsyncd模块访问。

下表显示了有关活动绘图作业的信息。如果您有很多作业,则可以缩写为显示最近启动的作业和最少启动的作业(完整列表可通过命令行命令plotman status获得)。它显示了有关绘图作业的各种信息,包括(绘图的前8个字符)绘图ID,使用的目录,walltime,当前绘图阶段和子阶段,tmp驱动器上使用的空间,pid等。

下表显示了tmp和dst dirs的用法。tmp表显示使用它们的打印作业的阶段,以及它们是否准备进行新的打印作业。dst表显示了已累积了多少个图块,剩余了多少可用空间以及将要写入这些图块的作业阶段,最后显示了为存档作业计算出的将图块移开的优先级。

上一张表仅显示了配置为存档目标的远程收割机/农民上驱动器的可用空间。该信息是通过sf上的df获取的,因此,要使其正常工作,您需要将无密码ssh配置为远程收割机/农民。

最后,最后一部分显示了已执行操作的日志-即启动的打印和存档作业。这是交互式工具中有状态的一部分。这些执行的命令行没有永久记录,因此,如果启动新的交互式绘图员会话,则该日志为空。

使用Plotman命令行

Plotman提供了一些命令行工具:

  • 状态–显示当前活动的绘图作业列表
  • 详细信息–显示当前活动的绘图作业的详细信息,例如参数和日志文件位置
  • 暂停–暂停绘图工作
  • 简历–恢复暂停的绘图工作
  • 杀死–杀死绘图作业并清理(删除)其临时文件

操作作业的命令以图ID的前缀作为参数,该ID是唯一标识正在创建的图的十六进制字符串。绘图ID的8个字符的前缀显示在Plotman工具中,但是在发出命令时,您可以使用任何唯一标识的前缀。

命令行工具可简化脚本操作,这在异常情况下可能会很有用。例如,如果您的临时驱动器/ tmp / 03危险地装满,则可能要暂停其上的所有作业:

绘图员状态中的ID | 尾-n + 2 | grep / tmp / 03 | 切-c1-8`; 绘图员是否暂停$ id;完毕

之后,您可以继续执行即将完成的工作,也可以取消刚刚开始的工作。

情节分析

在一组日志文件上运行plotman分析将计算并显示有关每个阶段所用时间的统计信息。这种分析是非常基本的,但是它是检查一组特定作业的性能的快速便捷的方法。

在Mac和Windows上的Plotman

Plotman主要是为Linxu开发的,但它是在Mac上即用的,并且在Windows上的WSL(适用于Linux的Windows子系统)上运行时,已经有一些人取得了成功。如果遇到问题,请在讨论论坛上查看;可能还有其他人以前曾经看过并解决过这些问题。

问题?

Plotman完全是由从事日间工作的志愿者开发的,因此我们无法保证一定会提供支持。我们确实尽力提供帮助,但是我们也在尝试建立机制,以使社区中的人们互相帮助。

我们仍在制定最佳系统,但是目前讨论chil_network keybase团队的keybase讨论频道#plotman是讨论Plotman使用(包括入门上的麻烦)最活跃的地方。我们还在https://github.com/ericaltendorf/plotman/discussions上试用了Github的“讨论”部分。

如果您发现Plotman存在问题,请在github上将其报告,网址https://github.com/ericaltendorf/plotman/issues。请尝试报告与Plotman行为和责任相关的错误,而不是与核心Chia绘图仪有关的错误。

为绘图员做贡献

我们欢迎您的贡献;如果不是为了志愿者的工作,普洛特曼就不会存在。挑战之一是每个人的绘图情况都是唯一的,因此通常会建议使用特定功能来支持特定用例。为了保持简单性,易用性和可靠性,维护人员经常尝试将特定功能重铸成更通用的形式。

这将有助于贡献者:

  • 首先与开发人员讨论重大更改,以便我们可以协调可能已经计划的其他更改。您可以在Keybase的chia_plotman小组的#dev频道上找到开发者。(但是,请勿使用该渠道来报告问题或寻求支持。)
  • 如果您要更改多项内容,请将它们分成单独的PR,因此,对一项的分歧不会阻止其他项的提交
  • 请根据开发分支进行更改

这是用于管理Chia 绘图操作的工具。该工具在绘图机上运行,​​并提供以下功能:

  • 自动生成新的绘图作业,可能在多个临时目录上重叠(“交错”),全局速率限制和每个临时目录限制。
  • 将新生成的地块Rsync到远程主机(农民/收割机),称为“存档”。
  • 监视正在进行的绘图和归档作业,进度,使用的资源,临时文件等。
  • 控制正在进行的绘图作业(挂起,恢复以及终止和清理临时文件)。
  • 交互式实时仪表板模式以及命令行模式工具都可以。
  • (非常Alpha)分析过去作业的性能统计信息,以汇总各种绘图参数或临时目录类型。

Plotman设计用于以下配置:

  • 一台绘图机,该绘图机具有一个tmpdirs数组,一个tmp2目录和一个dstdirs数组,绘图作业将在该数组上进行绘图。该dst目录用作生成图的临时缓冲区。
  • 一台具有大量驱动器的农业机械,可通过rsyncd模块进行访问 ,并完全填充地块。这些被称为archive目录。
  • 使用STDOUT / STDERR重定向到已配置目录中的日志文件的情况下运行绘图作业。这样就可以分析进度(绘图阶段)以及时序(例如,用于分析性能)。

功能性

Plotman工具是无状态的。Plotman不会保留内部记录已开始的作业,而是依靠绘图作业的过程表,打开文件和日志文件来了解“正在发生的事情”。这意味着即使在不同的登录会话中也可以停止和启动工具,而不会丢失信息。这也意味着Plotman可以查看和管理手动或通过其他工具启动的作业,只要将它们的STDOUT / STDERR重定向到已知日志文件目录中的文件即可。(注意:该工具依赖于阅读chia plot命令行参数和绘图工具输出的格式。更改这些内容可能会破坏该工具。)

通过自开始执行上一个作业以来等待一定时间的墙面时间,找到最佳(例如最近最少使用)tmp的绘图目录,并确保作业至少进行到某个特定点(例如阶段2 ),来完成绘图调度,子阶段5)。

地块输出到dst目录,目录用作临时缓冲区,直到它们被同步(“存档”)到农民/收割者。存档器做了几件事,试图避免并发IO。首先,它一次只允许一个rsync进程(更复杂的调度可以消除此限制,但这是不平凡的)。其次,它检查情节作业的流水线,以查看dst将要写入情节的目录。这与dst优先级方案中驱动器的容量已达到平衡。

显然,您的rsync带宽必须超过绘图带宽。鉴于此,在正常操作中,dst目录将保持为空,直到完成绘图为止,此后不久便由存档作业将其拾取。但是,通过使用dst驱动器作为缓冲区提供的解耦意味着如果农民/收割机或网络不可用,则绘图将继续进行而不会中断。

屏幕截图概述

Plotman 19:01:06 (refresh 9s/20s)  |  Plotting: stagger (1623s/1800s) Archival: active pid 1599918
Prefixes:  tmp=/mnt/tmp  dst=/home/chia/chia/plots  archive=/plots (remote)

  #       plot id    k   tmp   dst    wall   phase    tmp       pid   stat      mem    user    sys     io               
  0   6b4e7375...   32    03   001    0:27     1:2    71G   1590196    SLP     5.5G    0:52   0:02     0s
  1   9ab50d0e...   32    02   005    1:00     1:4   199G   1539209    SLP     5.5G    3:50   0:09     0s
  2   018cf561...   32    01   000    1:32     1:5   224G   1530045    SLP     5.5G    4:46   0:11     2s
  3   f771de9c...   32    00   004    2:03     1:5   241G   1524772    SLP     5.5G    5:43   0:14     2s
...
 16   58045bef...   32    10   002   11:23     3:5   193G   1381622    RUN     5.4G   15:02   0:53   0:02
 17   8134a2dd...   32    11   003   11:55     3:6   148G   1372206    RUN     5.4G   15:27   0:57   0:03
 18   50165422...   32    08   001   12:43     3:6   102G   1357782    RUN     5.4G   16:14   1:00   0:03
 19   100df84f...   32    09   005   13:19     4:0      0   1347430    DSK   705.9M   16:44   1:04   0:06

tmp   ready    phases     tmp   ready    phases        dst   plots   GB free         phases         priority 
 00      --   1:5, 3:4     06      --   2:4            000   1       1890      1:5, 2:2, 3:4        47
 01      --   1:5, 3:4     07      --   2:2            001   0       1998      1:2, 1:7, 3:2, 3:6   34
 02      --   1:4, 3:3     08      --   1:7, 3:6       002   0       1967      1:6, 2:5, 3:5        42
 03      --   1:2, 3:2     09      --   2:1, 4:0       003   0       1998      1:6, 3:1, 3:6        34
 04      OK   3:1          10      --   1:6, 3:5       004   0       1998      1:5, 2:4, 3:4        46
 05      OK   2:5          11      --   1:6, 3:6       005   0       1955      1:4, 2:1, 3:3, 4:0   18

Archive dirs free space
000:   94GB | 005:   94GB | 012:   24GB | 017:   99GB | 022:   94GB | 027:   94GB | 032: 9998GB | 037: 9998GB
001:   94GB | 006:   93GB | 013:   25GB | 018:   94GB | 023:   94GB | 028:   94GB | 033: 9998GB |
002:   93GB | 009:   25GB | 014:   93GB | 019:   31GB | 024:   94GB | 029: 7777GB | 034: 9998GB |
003:   94GB | 010:   25GB | 015:   94GB | 020:   47GB | 025:   94GB | 030: 9998GB | 035: 9998GB |
004:   94GB | 011:   25GB | 016:   99GB | 021:   93GB | 026:   94GB | 031: 9998GB | 036: 9998GB |

Log:
01-02 18:33:53 Starting plot job: chia plots create -k 32 -r 8 -u 128 -b 4580 -t /mnt/tmp/03 -2 /mnt/tmp/a -d /home/chi
01-02 18:33:53 Starting archive: rsync --bwlimit=100000 --remove-source-files -P /home/chia/chia/plots/004/plot-k32-202
01-02 18:52:40 Starting archive: rsync --bwlimit=100000 --remove-source-files -P /home/chia/chia/plots/000/plot-k32-202

屏幕截图显示了Plotman的一些主要功能。

第一行显示状态。绘图状态显示了我们是否刚刚开始绘图,如果不开始,为什么(例如,交错时间,tmp目录已准备好;在这种情况下,尚未达到绘图之间的1800s交错)。归档状态表明我们当前正在归档(并提供rsyncpid)还是dst驱动器中没有可用的地块进行归档。

第二行提供了一些通篇使用的目录缩写的键。对于tmpdst目录,我们假定它们具有一个公共前缀,在此处进行计算和指示,然后可以通过其唯一后缀(在上下文中)对其进行引用。例如,如果我们有tmp迪尔斯/mnt/tmp/00, /mnt/tmp/01/mnt/tmp/02等,我们显示/mnt/tmp如下前缀,然后可以谈论tmp迪尔斯0001archive目录是相同的,只是这些都是在远程主机上的路径,并通过访问 rsyncd模块(见src/plotman/resources/plotman.yaml的细节)。

下表显示了有关活动绘图作业的信息。缩写为显示最近启动的作业和最少启动的作业(完整列表可通过命令行模式获得)。它显示了有关打印作业的各种信息,包括打印ID(前8个字符),使用的目录,挂墙时间,当前打印阶段和子阶段,tmp驱动器上使用的空间,PID等。

接下来的表格有些难以阅读。实际上tmp,左侧有一个表格,为了呈现目的,该dst表格分为两个表格,右侧有一个表格。这些tmp表显示了使用它们的绘图作业的阶段,以及它们是否准备好进行新的绘图作业。该dst表显示了已累积了多少个图块,剩余了多少可用空间以及将要写入这些图块的作业阶段,最后显示了为存档作业计算出的将图块移开的优先级。

上一张表仅显示了远程harverster /农民上的驱动器的可用空间。

最后,最后一部分显示了已执行操作的日志-即启动的打印和存档作业。这是交互式工具中有状态的一部分。这些执行的命令行没有永久记录,因此,如果启动新的交互式绘图员会话,则该日志为空。

局限性和问题

该系统仅在Linux上进行了测试。Plotman应该可以推广到其他平台,但这还没有完成。一些周围打电话出去的命令行程序(例如,运行问题dfssh获得有关远程归档目录的自由空间)都非常的linux-Y。

交互模式使用curses库…很差。未收到按键,无法调整屏幕大小,并且最小终端尺寸非常大。

绘图仪假定所有绘图均为k32。同样,这只是一个未实现的概括。

在“交互”模式或命令行模式之间不一致地支持许多功能。

有很多错误和待办事项。

Plotman始终会plotman.yaml在基于OS的默认位置的计算机中查找文件。要生成默认值plotman.yaml,请运行:

> plotman config generate

要显示plotman.yaml文件的当前位置并检查它是否存在,请运行:

> plotman config path

另请参见)。

安装

Linux的安装:

  1. Plotman假定 系统上存在可运行的Chia安装。chia输入激活您的环境 source /path/to/your/chia/install/activate
  2. 然后,使用以下命令安装Plotman:
    > pip install --force-reinstall git+https://github.com/ericaltendorf/plotman@main
  3. Plotman将plotman.yaml在您的计算机中基于OS的默认位置查找。要创建默认值plotman.yaml并显示其位置,请运行以下命令:
    > plotman config generate

    用作起点的默认配置文件位于此处

  4. 就是这样!现在,您可以通过键入plotman version以验证其版本来运行Plotman 。运行plotman --help以了解可用的命令。

开发说明:

如果要派遣Plotman,只需pip install --editable .[dev]从项目根目录替换安装步骤,即可使用测试和开发附加功能安装的Plotman版本。

赞(0) 打赏
未经允许不得转载:Chia之家 » 管理Chia绘图操作的工具,什么是Plotman?

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

DIY Chia矿机,更便宜,更有乐趣

进入DIY矿机配置单

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏