2、全球最大交易所币安
介绍
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
类别
中央处理器
內存
图形处理器
固态硬盘
网络
运行组件
节点机
64核
64 克/128 克
需要
500千兆字节
千兆網卡
controller
autonomys-node
proof-server
nats-server
P 盤機
每個GPU需要30核
每個GPU需要 64 G
需要
20GiB 用於緩存 plot 數據
萬兆網卡*2
plot-server
sharded-cache
full-piece-cache
存儲機
取決於存儲容量
取決於存儲容量
不需要
取決於存儲容量
萬兆網卡*2
plot-client
最佳實踐
注:以下名稱 IP 等都是示例
環境介紹
服务器
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
返回Oula