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
驱动器中。
第二行提供了一些在整个应用程序中使用的目录缩写的键。对于tmp
和dst
目录,我们假设它们有一个共同的优先级,这将在下面计算和指示,之后可以(在上下文中)通过它们的唯一后缀来引用。例如,如果我们有tmp
目录/mnt/tmp/00
,/mnt/tmp/01
,/mnt/tmp/02
等,我们在下面将/mnt/tmp
显示为前缀,然后可以讨论tmp
目录00
或01
等。归档目录与此相同,只是这些是在远程主机上的路径,并通过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的安装
- Plotman假设系统上已存在一个功能齐全的Chia安装。
- 虚拟环境(Linux,macOS):通过输入
source /path/to/your/chia/install/activate
激活您的chia
环境。 - dmg(macOS):按照以下说明将
chia
二进制文件添加到PATH
。
- 虚拟环境(Linux,macOS):通过输入
- 然后,使用以下命令安装Plotman
> pip install --force-reinstall git+https://github.com/ericaltendorf/plotman@main
- Plotman会寻找您的计算机中基于默认位置的
plotman.yaml
文件。要创建默认的plotman.yaml
并显示其位置,请运行以下命令> plotman config generate
作为起始点的默认配置文件位于此处。 - 就这样!您现在可以通过输入
plotman version
来运行Plotman以验证其版本。运行plotman --help
了解可用命令。
注意: 如果在使用 plotman
时在基于 RHEL 的 Linux 系统上安装了 chia 的指南后遇到错误 ModuleNotFoundError: No module named 'readline'
,请安装 readline-devel
,然后在新构建环境中重新安装 chia,从编译 Python 开始;或者考虑使用类似 pyenv
的项目。
基本用法
-
安装
-
生成初始配置
-
配置(默认位置可以使用
plotman config path
查找)。选项在默认配置文件(步骤 2)中解释 -
创建在
directories: { log: "" }
中指定的日志目录 -
启动 plotman:
plotman plot
或plotman interactive
-
检查状态:
plotman status
开发注意事项
如果您正在 fork Plotman,只需将安装步骤替换为从项目根目录使用 pip install --editable .[dev]
安装 您的 版本的 plotman,包括测试和开发额外功能。
项目详细信息
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
构建分发
plotman-0.5.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 35bc0a3771792b6f657e8c91af5d3c969e8c996129ae14f456cf93584aeef358 |
|
MD5 | 3180cca64892c119aeb8bd3c4f2ae85a |
|
BLAKE2b-256 | 193b033a81aa660dbe53ee826ffef7fdcdc2a09f85d28d346e80eef3a1c47b70 |
plotman-0.5.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 09a2e322a48614fabc17b8224d36bce67e12b6aec7c12068835c76dd797d4f3e |
|
MD5 | 750c9bad795d299d633a65bc58029fe8 |
|
BLAKE2b-256 | de6a61a8fd8dff0ca834a20db70222843dcba7f6f0c934d755f523f3768db337 |