跳转到主要内容

Chia绘图管理器

项目描述

plotman:Chia绘图管理器

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

  • 自动在多个临时目录中启动新的绘图作业,可能重叠("交错"),全局和按每个临时目录限制速率限制。

  • 将新生成的绘图同步到远程主机(农民/收割者),称为"存档"。

  • 监控正在进行的绘图和存档作业、进度、使用的资源、临时文件等。

  • 控制正在进行的绘图作业(挂起、恢复、加上终止和清理临时文件)。

  • 交互式实时仪表板模式以及命令行模式工具。

  • (非常初级)分析过去作业的性能统计信息,以便在各种绘图参数或临时目录类型上聚合。

Plotman是为以下配置设计的

  • 一个具有tmp目录数组、单个tmp2目录和一个dst目录数组的绘图机器,该目录数组用于将绘图作业绘制。这些dst目录充当生成绘图的临时缓冲空间。

  • 一种具有大量驱动器的农业机械,通过rsyncd模块进行访问,并且完全填充有图块。这些被称为archive目录。

  • 图块作业运行时,标准输出/错误被重定向到配置目录中的日志文件。这允许分析进度(图块阶段)以及时间(例如,用于分析性能)。

功能

Plotman工具是无状态的。而不是保持已启动作业的内部记录,Plotman依赖于进程表、打开的文件和图块作业的日志文件来理解“正在进行什么”。这意味着工具可以被停止和启动,即使是从不同的登录会话,也不会丢失信息。这也意味着Plotman可以查看和管理由人工或其他工具启动的作业,只要它们的STDOUT/STDERR被重定向到已知日志文件目录中的文件。注意:该工具依赖于读取chia图块命令行参数和图块工具输出的格式。这些变化可能会破坏此工具。)

图块调度是通过等待自上次作业启动以来的某些墙时时间,找到最佳的(例如,最不常使用的)图块tmp目录,并确保作业至少进展到一定程度(例如,阶段2,子阶段5)来完成的。

图块输出到dst目录,这些目录作为临时缓冲区,直到它们通过rsync(“存档”)到农民/收割者。归档器做了几件事情来尝试避免并发I/O。首先,它一次只允许一个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目录准备就绪等;在这种情况下,图块之间的1800秒交错时间尚未达到)。归档状态表示我们是否正在归档(并提供rsync pid)或者是否有可归档的图块在dst驱动器中。

第二行提供了一些在整个应用程序中使用的目录缩写的键。对于tmpdst目录,我们假设它们有一个共同的优先级,这将在下面计算和指示,之后可以(在上下文中)通过它们的唯一后缀来引用。例如,如果我们有tmp目录/mnt/tmp/00/mnt/tmp/01/mnt/tmp/02等,我们在下面将/mnt/tmp显示为前缀,然后可以讨论tmp目录0001等。归档目录与此相同,只是这些是在远程主机上的路径,并通过rsyncd模块访问(有关详细信息,请参阅src/plotman/resources/plotman.yaml)。

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

以下表格阅读起来有些困难;实际上,左侧有一个名为tmp的表格,为了渲染目的被分成了两个表格,右侧有一个名为dst的表格。tmp表格显示了使用它们的绘图作业的阶段,以及它们是否准备好接受新的绘图作业。《code>dst表格显示了已经累积的绘图数量,剩余多少空闲空间,以及即将写入它们的作业的阶段,最后,计算用于将绘图移动出去的归档作业的优先级。

最后一个表格简单地显示了远程harverster/farmer上的驱动器的空闲空间。

最后,最后一部分显示了执行的操作日志——即,启动的绘图和归档作业。这是交互式工具中具有状态的部分。没有这些已执行命令行的永久记录,因此如果您启动一个新的交互式plotman会话,此日志将是空的。

plotman命令

要获取所有可用命令的完整列表,请运行

plotman -h

您还可以使用plotman <command> -h来获取特定命令的帮助,例如

plotman interactive -h

作为守护进程运行plotman

PS:本节假设您已经配置了plotman.yaml

默认情况下,命令plotman plot将启动绘图作业,只要您保持终端窗口打开,它就会在后台继续运行。如果您想让它持续运行,请尝试以下操作

nohup plotman plot >> ~/plotman.log 2>&1 &

限制和问题

该系统仅在Linux上进行测试。Plotman应该可以推广到其他平台,但这还没有完成。一些调用命令行程序的问题(例如,使用ssh运行df以获取远程归档目录的空闲空间)非常Linux化。

交互模式使用curses库 ... 很差。按键不被接收,屏幕大小调整不起作用,最小终端大小相当大。

Plotman假设所有绘图都是k32s。再次强调,这只是一个未实现的一般化。

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

有很多错误和待办事项。

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

> plotman config generate

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

> plotman config path

(另请参阅)。

安装

Linux和macOS的安装

  1. Plotman假设系统上已存在一个功能齐全的Chia安装。
    • 虚拟环境(Linux,macOS):通过输入source /path/to/your/chia/install/activate激活您的chia环境。
    • dmg(macOS):按照以下说明chia二进制文件添加到PATH
  2. 然后,使用以下命令安装Plotman
     > pip install --force-reinstall git+https://github.com/ericaltendorf/plotman@main
    
  3. Plotman会寻找您的计算机中基于默认位置的plotman.yaml文件。要创建默认的plotman.yaml并显示其位置,请运行以下命令
    > plotman config generate
    
    作为起始点的默认配置文件位于此处
  4. 就这样!您现在可以通过输入plotman version来运行Plotman以验证其版本。运行plotman --help了解可用命令。

注意: 如果在使用 plotman 时在基于 RHEL 的 Linux 系统上安装了 chia 的指南后遇到错误 ModuleNotFoundError: No module named 'readline',请安装 readline-devel,然后在新构建环境中重新安装 chia,从编译 Python 开始;或者考虑使用类似 pyenv 的项目。

基本用法

  1. 安装

  2. 生成初始配置

  3. 配置(默认位置可以使用 plotman config path 查找)。选项在默认配置文件(步骤 2)中解释

  4. 创建在 directories: { log: "" } 中指定的日志目录

  5. 启动 plotman: plotman plotplotman interactive

  6. 检查状态: plotman status

开发注意事项

如果您正在 fork Plotman,只需将安装步骤替换为从项目根目录使用 pip install --editable .[dev] 安装 您的 版本的 plotman,包括测试和开发额外功能。

项目详细信息


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

plotman-0.5.3.tar.gz (102.5 kB 查看哈希值)

上传时间

构建分发

plotman-0.5.3-py3-none-any.whl (114.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面