diff --git a/damocles-worker/src/config.rs b/damocles-worker/src/config.rs index 6823abeb2..a2dbdfb89 100644 --- a/damocles-worker/src/config.rs +++ b/damocles-worker/src/config.rs @@ -210,8 +210,8 @@ pub struct Processors { /// section for unseal processor pub unseal: Option>, - /// section for fetch processor - pub wdpost: Option>, + /// section for window_post processor + pub window_post: Option>, } impl Processors { diff --git a/damocles-worker/src/run.rs b/damocles-worker/src/run.rs index bcaeb416c..9dcfb324f 100644 --- a/damocles-worker/src/run.rs +++ b/damocles-worker/src/run.rs @@ -313,7 +313,7 @@ fn start_processors(cfg: &config::Config, locks: &Arc) -> Result let unseal: processor::ArcUnsealProcessor = construct_sub_processor!(unseal, cfg, locks); - let wdpost: processor::ArcWdPostProcessor = construct_sub_processor!(wdpost, cfg, locks); + let window_post: processor::ArcWdPostProcessor = construct_sub_processor!(window_post, cfg, locks); Ok(GlobalProcessors { add_pieces, @@ -325,7 +325,7 @@ fn start_processors(cfg: &config::Config, locks: &Arc) -> Result snap_prove, transfer, unseal, - wdpost, + window_post, }) } diff --git a/damocles-worker/src/sealing/sealing_thread/planner/wdpost.rs b/damocles-worker/src/sealing/sealing_thread/planner/wdpost.rs index 911ed78dd..6558257ab 100644 --- a/damocles-worker/src/sealing/sealing_thread/planner/wdpost.rs +++ b/damocles-worker/src/sealing/sealing_thread/planner/wdpost.rs @@ -8,7 +8,7 @@ use crossbeam_channel::{bounded, Receiver, Sender}; use jsonrpc_core::ErrorCode; use jsonrpc_core_client::RpcError; use tokio::runtime::Handle; -use vc_processors::builtin::tasks::{PoStReplicaInfo, WindowPoSt, WindowPoStOutput}; +use vc_processors::builtin::tasks::{PoStReplicaInfo, WindowPoSt, WindowPoStOutput, STAGE_NAME_WINDOW_POST}; use crate::logging::warn; use crate::rpc::sealer::{AllocatePoStSpec, AllocatedWdPoStJob, SectorID}; @@ -337,6 +337,8 @@ impl WdPost<'_> { } fn generate(&self) -> Result { + let _token = self.job.sealing_ctrl.ctx().global.limit.acquire(STAGE_NAME_WINDOW_POST).crit()?; + let wdpost_job = self.job.wdpost_job.as_ref().context("wdpost info not found").abort()?; let mut instances = HashMap::new(); @@ -410,7 +412,7 @@ impl WdPost<'_> { replicas: replica, seed: wdpost_job.input.seed, }; - let res = self.job.sealing_ctrl.ctx().global.processors.wdpost.process(post_in); + let res = self.job.sealing_ctrl.ctx().global.processors.window_post.process(post_in); if let Err(e) = &res { tracing::error!(err=?e, job_id=wdpost_job.id,"wdpost error"); } diff --git a/damocles-worker/src/watchdog.rs b/damocles-worker/src/watchdog.rs index 3a6e09b48..9728cd725 100644 --- a/damocles-worker/src/watchdog.rs +++ b/damocles-worker/src/watchdog.rs @@ -61,7 +61,7 @@ pub struct GlobalProcessors { pub snap_prove: ArcSnapProveProcessor, pub transfer: ArcTransferProcessor, pub unseal: ArcUnsealProcessor, - pub wdpost: ArcWdPostProcessor, + pub window_post: ArcWdPostProcessor, } impl Module for Box { diff --git "a/docs/zh/09.\347\213\254\347\253\213\350\277\220\350\241\214\347\232\204poster\350\212\202\347\202\271.md" "b/docs/zh/09.\347\213\254\347\253\213\350\277\220\350\241\214\347\232\204poster\350\212\202\347\202\271.md" index 8034180f7..f4b9297d2 100644 --- "a/docs/zh/09.\347\213\254\347\253\213\350\277\220\350\241\214\347\232\204poster\350\212\202\347\202\271.md" +++ "b/docs/zh/09.\347\213\254\347\253\213\350\277\220\350\241\214\347\232\204poster\350\212\202\347\202\271.md" @@ -37,9 +37,9 @@ damocles-worker 新增 wdpost planner 用于执行 window post 任务。 | | | -------+--------------------------+--------------------------+------------ | | | - pull | job pull | job pull | job - push | res pull | res pull | res - by | rpc by | rpc by | rpc + | pull job | pull job | pull job + | push res | push res | push res + | by rpc | by rpc | by rpc | | | +------+--------+ +-------+-------+ +------+--------+ |damocles-worker| |damocles-worker| |damocles-worker| @@ -91,11 +91,19 @@ plan = "wdpost" name = "miner-6666-store" location = "/mnt/miner-6666-store" -[[processors.wdpost]] -# 使用自定义 wdpost 算法 (可选) + +# 控制 window_post 任务并发 (可选),不配置则不限制 +[processors.limitation.concurrent] +window_post = 2 + +[[processors.window_post]] +# 使用自定义 wdpost 算法 (可选), 如果不配置 bin,则默认使用内置算法 bin="~/my_algorithm" args = ["window_post"] -envs = { BELLMAN_GPU_INDEXS="0",CUDA_VISIBLE_DEVICES="0", ... } +# 配置自定义算法的环境变量 (可选) +envs = { BELLMAN_GPU_INDEXS="0", CUDA_VISIBLE_DEVICES="0", ... } +# 配置本进程最大并发数量 (可选),不配置则不限制 +concurrent = 1 ``` ##### 一份最简的只启动一个 wdpost sealing_thread 的配置如下: