介绍
Autonomys-farmer 包含以下组件 :
autonomys-controller
负责代理 node rpc,用于管理集群组件
full-piece-sharded-cache
piece 分片缓存全量节点
proof-server
GPU 出块,用于计算 proof
plot-server
plotting 服务,用于encode 数据
plot-client
farming 组件,用于扫盘以及提交solution
架构
目前所有的集群管理都是基于 nats 来做的,但是 cache 的具体数据传输是通过 TCP 做 p2p 传输。
软件和硬件环境建议配置
本软件仅支持 Linux 操作系统,以及 Nvidia GPU 环境。
操作系统及依赖软件
GPU 驱动版本 ≥ 525.60.13 ,或者直接安装 cuda 12.4
环境介绍
服务器
ip 地址
配置
部署组件
controller
autonomys-node
proof-server
nats-server
controller
autonomys-node
proof-server
nats-server
controller
autonomys-node
proof-server
nats-server
autonomys-plot-server-0
autonomys-plot-server-1
autonomys-plot-server-2
autonomys-plot-server-3
sharded-cache
full-piece-cache
autonomys-plot-server-0
autonomys-plot-server-1
autonomys-plot-server-2
autonomys-plot-server-3
sharded-cache
full-piece-cache
8T NVMe SSD * 4
/mnt/nvme0n1
/mnt/nvme0n2
/mnt/nvme1n2
/mnt/nvme1n1
8T NVMe SSD * 4
/mnt/nvme0n1
/mnt/nvme0n2
/mnt/nvme1n1
/mnt/nvme1n2
Supervisor 配置
节点机配置
单台节点机需要部署4个部件 : controller
autonomys-node
proof-server
nats-server
部署顺序 : nats-server
-> autonomys-node
-> controller
-> proof-server
nats-server
以下是 nats-server 配置示例,供参考:
复制
server_name=n1-cluster
max_payload = 3MB
jetstream {
store_dir=/var/nats-data
}
cluster {
name: c1-cluster
listen: 0.0.0.0:4248
routes: [
nats://192.168.0.1:4248
nats://192.168.0.2:4248
]
}
autonomys-controller
复制
# autonomys-controller 配置
# /etc/supervisor/conf.d/autonomys-controller.conf
[program:autonomys-controller]
command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 controller --tmp --node-rpc-url ws://10.30.1.2:9944
autorestart=true
user=root
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-controller.log
autonomys-node
复制
# autonomys-node 配置
# /etc/supervisor/conf.d/autonomys-node.conf
[program:autonomys-node]
command=/root/autonomys/autonomys-node run --base-path /var/autonomys-node --farmer --rpc-listen-on 0.0.0.0:9944 --chain taurus --sync full --rpc-methods unsafe --rpc-cors all
autorestart=true
user=root
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-node.log
autonomys-proof-server
复制
# autonomys-proof-server 配置
# /etc/supervisor/conf.d/autonomys-proof-server.conf
[program:autonomys-proof-server]
command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 proof-server
autorestart=true
user=root
environment=CUDA_VISIBLE_DEVICES=0
redirect_stderr=true
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-proof-server.log
启动命令参数和环境变量解释:
--nats-server
参数用于指定 nats 服务器地址
CUDA_VISIBLE_DEVICES
环境变量用于指定GPU,0表示GPU0,1表示GPU1,以此类推
P 盘机配置 (以 4 GPU为例)
单台P 盘机需要部署3个组件: ,, autonomys-plot-server
autonomys-sharded-cache
autonomys-full-piece-cache
autonomys-plot-server
组件从和组件获取 piece 用于 p 盘 autonomys-sharded-cache
autonomys-full-piece-cache
autonomys-sharded-cache
复制
# sharded-cache 配置
# /etc/supervisor/conf.d/autonomys-sharded-cache.conf
[program:autonomys-sharded-cache]
command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 sharded-cache path=/var/autonomys-sharded-cache
autorestart=true
user=root
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-sharded-cache.log
启动命令参数解释 :
--nats-server
参数用于指定 nats 服务器地址
path=/path/to/autonomys-sharded-cache
参数用于指定 piece 缓存存储路径
autonomys-full-piece
复制
# autonomys-full-piece 配置
# /etc/supervisor/conf.d/autonomys-full-piece.conf
[program:autonomys-full-piece]
command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 full-piece-sharded-cache --tmp path=/var/autonomys-full-piece
autorestart=true
user=root
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-full-piece.log
启动命令参数解释 :
--nats-server
参数用于指定 nats 服务器地址
path=/path/to/autonomys-full-piece
参数用于指定 full-piece 存储路径
autonomys-plot-server
复制
# autonomys-plot-server 配置文件
# /etc/supervisor/conf.d/autonomys-plot-server.conf
[group:autonomys-plot-server]
programs=autonomys-plot-server-0,autonomys-plot-server-1,autonomys-plot-server-2,autonomys-plot-server-3
[program:autonomys-plot-server-0]
command=numactl -C 0-31 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9966 /var/plot-server/base-path-0
autorestart=true
user=root
environment=CUDA_VISIBLE_DEVICES=0
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-plotter-0.log
[program:autonomys-plot-server-1]
command=numactl -C 96-127 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9967 /var/plot-server/base-path-1
autorestart=true
user=root
environment=CUDA_VISIBLE_DEVICES=1
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-plotter-1.log
[program:autonomys-plot-server-2]
command=numactl -C 96-127 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9968 /var/plot-server/base-path-2
autorestart=true
user=root
environment=CUDA_VISIBLE_DEVICES=2
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-plotter-2.log
[program:autonomys-plot-server-3]
command=numactl -C 144-175 -l /root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-server --priority-cache --listen-port 9969 /var/plot-server/base-path-3
autorestart=true
user=root
environment=CUDA_VISIBLE_DEVICES=3
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-plotter-3.log
启动命令参数和环境变量解释:
--nats-server
参数用于指定 nats 服务器地址
CUDA_VISIBLE_DEVICES
环境变量用于指定GPU,0表示GPU0,1表示GPU1,以此类推
GPU_CONCURRENCY
增大此值会提高显存使用量,在使用不同型号的 GPU 时,可以考虑适当调整该变量
需要注意的是, 使用 numactl 工具绑定 CPU 核心时,需考虑 GPU 的 numa 亲和性,以达到最佳性能。
使用 命令可以查看 GPU numa 亲和性 nvidia-smi topo -m
复制
# nvidia-smi topo -m
GPU0 GPU1 NIC0 NIC1 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X SYS NODE NODE 0-47,96-143 0 N/A
GPU1 X SYS NODE NODE 0-47,96-143 0 N/A
GPU2 SYS X SYS SYS 48-95,144-191 1 N/A
GPU3 SYS X SYS SYS 48-95,144-191 1 N/A
NIC0 NODE SYS X PIX
NIC1 NODE SYS PIX X
Legend:
X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX = Connection traversing at most a single PCIe bridge
NV# = Connection traversing a bonded set of # NVLinks
NIC Legend:
NIC0: mlx5_0
NIC1: mlx5_1
存储机配置(以 4 盘为例)
autonomys-plot-client
复制
# autonomys-plot-client 配置
# /etc/supervisor/conf.d/autonomys-plot-client.conf
[program:autonomys-plot-client]
command=/root/autonomys/autonomys-farmer cluster --nats-server nats://192.168.1.1:4222 --nats-server nats://192.168.1.2:4222 --nats-server nats://192.168.1.2:4222 plot-client --reward-address stBR..S8V path=/mnt/nvme0n1/,sectors=8000 path=/mnt/nvme0n2/,sectors=8000 path=/mnt/nvme1n0/,sectors=8000 path=/mnt/nvme1n1/,sectors=8000
autorestart=true
user=root
redirect_stderr=true
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=2
stdout_logfile=/var/log/autonomys-plot-client.log
启动命令参数解释 :
--nats-server
参数用于指定 nats 服务器地址
path=/path/to/plot-dir,sectors=8000
参数用于指定 plot 的文档路径以及 plot 的扇区数量
附录
使用命令
手动初始化集群,执行后会在n秒后重新初始化整个集群
复制
autonomys-farmer util \
reinitialization-cache \
--nats-servers nats://192.168.200.6:4222 \
--delay 0
• :初始化延迟,单位:秒 --delay 0
模拟 plot 的 download sector 过程,对 cache cluster 发起请求,检查集群状态
复制
autonomys-farmer util \
sharded-cache-benchmark \
--nats-servers nats://192.168.0.2:4222 \
--sectors 256 \
--epoch 1 \
--cache-item-type split-parity-piece