This repository was archived by the owner on Oct 31, 2023. It is now read-only.
FilGuard myScheduler 调度优化 #48
KevinXiong2018
started this conversation in
软件优化
Replies: 1 comment
-
有完整的配置么? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
FilGuard myScheduler 调度程序
1. myScheduler 调度程序简介
目前官方窗口调度Scheduler工作效果不理想,有的worker工作繁忙,有的 worker 又非常轻闲。个人认为filecoin运维人员最为熟悉自己的设备,所以基于运维人员的工作任务指令,重新编写了一套调度程序,摈弃官方窗口调度和纯基于设备资源排序的规则,重新自定义排序规则,总体调度目标是让相关任务均匀分配到各个可以执行的 worker 上面,调度程序支持以下业务功能:
lotus-miner sectors mypledge
一次性填充所有 lotus-worker 可以工作AP的数量总和,可用自动化任务定时调用 mypledge2. lotus-worker 动态参数设置
如果首次启动 lotus-worker,调度程序会自动将 run 相关的参数写进
$LOTUS_WORKER_PATH
路径下面的参数文件myscheduler.json
, miner 本地worker,则是在$LOTUS_MINER_PATH
目录创建此配置文件,并且设置为默认初始状态,相关参数均可以在不重启 lotus-worker 的状态下,动态修改并实时生效。以下是默认参数:设置为空时使用设备 hostname
每个扇区计数为 14,用于控制计算节点的磁盘配额,例如2TB的SSD 则可以设置为 60,
本参数没有检测 fetching和其它磁盘目录所占空间,可保守设置。
达到此限制后,该worker 将不会接收新任务,进入紧缩空间工作模式。
默认值 0 表示不控制,CanStore 支持的存储目录不进行控制。
在此状态下面:
①不接收新的 AP任务
②不接收新的 P1任务
③可完成本地已经开始工作过的P1
④可完成本地绑定的 P2任务
⑤不接收其它 worker 新的 P2任务
⑥不接收其它 worker 新的 C1/C2任务
达到此限制后,该worker 将不会接收新的 AP 任务,
默认值 0 表示不控制,CanStore 支持的存储目录不进行控制。
如果上述三个参数同时设置true,则该计算节点进入一条龙独立工作模式。
①不接收新的 AP任务
②不接收新的 P1任务
③不接收新的 P2任务
④不接收新的 C1/C2任务。
在worker 结束离线维护模式,重启时记得将
IsPlanOffline
重新设置为false
out of space
时,它不会接收任何工作任务。如果此时 worker 的物理磁盘空间其实仍然存在部分剩余,则可以设置此参数为 true,
系统临时跳过 out of space检测,此 worker 自动进入紧缩空间工作模式,
待可用空间正常,再将此参数设置回 false
① 默认值是 0,用于用户自己在自动化任务中批量派发 pledge 任务,
例如 60分钟,一次性派发 30 个 pledge,表示就是每个小时集群封装的产能是 30个扇区;
② 设置为 1,则表示平滑派发 pledge 任务,例如每2分钟派发一个 pledge,
也表示每个小时的集群封装产能是 30 个扇区,为减少集中落盘压力,对于大集群推荐此方式。
3. lotus-worker run 初始参数
对于
lotus-worker run
初始参数, myscheduler 可以不额外添加设置任何自定义项目,直接仅使用官方的标准参数,这样方便在官方标准程序之间来回切换。4. 调度外部 lotus-worker 参数设置
myScheduler 社区版加入以下外部 lotus-worker 功能支持:
通过动态修改
$LOTUS_MINER_PATH
路径下面的externalWorker.json
,可以控制被调度的 Worker 进行任意 AP/P1/P2/C2 数量配比和工作并行,以及 AP/P1/P2本地文件绑定不传输:5. 自义定 pledge 任务实用工具
①
lotus-miner sectors mypledge
mypledge 一次性填充所有可以工作AP的 lotus-worker 的数量
AddPieceMax
总和,自动化任务可以定时调用 mypledge②
lotus-miner sectors mypledgeonce
mypledgeonce 一次性为每个可以工作AP 的 lotus-worker 发送一个 AP,适合初始实施时,第一次使用 AP 模板复制功能
6. 调度过程日志分析与问题排查
由于调度的频繁度,在运行过程中,有大量的日志用于记录任务分配细节,可以通过下面的方式轻松查询相关成功分配和未分配的调度情况列表:
more miner.log |grep -a trySchedMine > trySchedMine.txt
, 这个里面记录了,所有成功调度的has sucessfully scheduled
相关信息。more miner.log |grep -a "not scheduling" > not_scheduling.txt
, 则是拒绝接收任务分配的worker 的日志。more miner.log |grep -a "s-t0XXXX-YYYY"> s-t0XXXX-YYYY.txt
,格式是 "s-t0你的MinerID-某个扇区编号" 。对于长时间不分配任务工作的 worker,一般是在 miner日志中可以看到out of space
或者didn't receive heartbeats for
的官方标准错误提醒。sealing workers
看到大量的 worker 闲置情况,但是挺多已经预分配的工作任务在 Preparing 里面,而长时间无法到在 Running。Preparing 通过了第一步的预备分配,在实际分配响应任务的时候不满足条件,就无法到达 Running 执行状态。尽量减少在动态参数配置文件中不必要的限制,限制条件越多,则越容易无法达到真正可运行状态。有时可以偿试进行一次lotus-miner sectors mypledgeonce
触发新一轮的 AP 分配和调度。下面的三种 miner 日志,存在任何一种,都表示这个 worker 不会接收任何工作任务:
对于这种 disabled worker 状态又不是断连,从调度程序的角度来看,disabled worker 和 out of space 一样的,不接收工作,更像是假死,而且 disabled 和 enabled 是互相动态变化的。
欢迎技术与实践交流,熊鹰 13570231023 微信 kevinxiong1977
Beta Was this translation helpful? Give feedback.
All reactions