update docs.

This commit is contained in:
kaichao 2024-05-27 10:07:04 +08:00
parent 1bc66f7c81
commit 2aa25c7c37
6 changed files with 49 additions and 10 deletions

View File

@ -5,7 +5,8 @@ import (
"fmt"
"os"
scalebox "github.com/kaichao/scalebox/golang/misc"
misc "github.com/kaichao/scalebox/golang/misc"
"github.com/sirupsen/logrus"
)
@ -60,7 +61,7 @@ func init() {
os.Exit(1)
}
if lines, err := scalebox.GetTextFileLines(datasetFile); err == nil {
if lines, err := misc.GetTextFileLines(datasetFile); err == nil {
for _, line := range lines {
dataset := parseDataSet(line)
fmt.Println("loaded dataset-id:", dataset.DatasetID, "dataset:", dataset)

View File

@ -4,7 +4,7 @@ import (
"database/sql"
"os"
scalebox "github.com/kaichao/scalebox/golang/misc"
"github.com/kaichao/scalebox/golang/misc"
"github.com/sirupsen/logrus"
)
@ -19,7 +19,7 @@ func init() {
workDir = "/work"
}
sqliteFile := workDir + "/my.db"
scalebox.ExecShellCommand("rm -f " + sqliteFile)
misc.ExecShellCommand("rm -f " + sqliteFile)
}
func initialize() {

View File

@ -12,6 +12,7 @@ cluster: ${CLUSTER}
parameters:
initial_status: RUNNING
message_router: message-router
is_cluster_admin: yes
default_sleep_count: 20
comment: This is a sample app.
@ -175,7 +176,7 @@ cluster定义的示例如下
### 2.5.1 job-variables参数表
| 参数名 | 标准环境变量 | 含义 |
| 参数名 | 标准环境变量 | 含义 |
| ------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------- |
| grpc_server | GRPC_SERVER | 服务端controld的服务端点endpoint${ip_addr}:${port}port缺省值为50051 |
| code_path | | 模块的代码目录通过容器的数据卷Volume映射到容器内/app/bin |
@ -204,8 +205,9 @@ cluster定义的示例如下
| | CLUSTER | 所在的集群名 |
| | JOB_NAME | job名 |
| | JOB_ID | job_id |
| | SLOT_ID | slot_id |
| | SINK_JOB | 缺省sink_job |
| | IS_SINGULARITY | 容器引擎为singularity或app-tainer |
| | IS_SINGULARITY | 容器引擎为singularity或apptainer |
### 2.5.2 job-parameters参数表
@ -215,6 +217,8 @@ cluster定义的示例如下
| key_group_regex | 从消息中提取分组的正则表达式 |
| key_group_index | 分组排序的编号 |
| task_dist_mode | task分发模式'HOST-BOUND'/'SLOT-BOUND'/'GROUP-BOUND' |
| cached_task_queue | 在服务端对task_queue做cache'yes'/'no',缺省为'no'。若设置为'yes'则len_task_queue缺省值为500 |
| len_task_queue | task_queue的长度。若设置该值则cached_task_queue设为'yes' ; |
| slot_on_head | 仅在头节点上生成1个slot'yes'/'no' |
| start_message | 给定初始消息 |
| initial_task_status | task的初始状态'READY'/'INITIAL' |
@ -222,8 +226,8 @@ cluster定义的示例如下
| retry_rules | 基于退出码的重试规则<br>```['exit_code_1:num_retries',...,'exit_code_n:num_retries']``` |
| slot_timeout_seconds | 以秒计的slot超时设置。缺省值为30秒 |
| visiable | 在流水线逻辑图中是否可见。缺省值为'yes' |
| tasks_per_queue | in-mem模式中task队列长度。缺省值为100 |
| max_tasks_per_minute | 设置slot每分钟可运行的task数量超过该值则设置slot出错。 |
| tasks_per_queue | in-mem模式中task队列长度。缺省值为100(待删除) |
| max_tasks_per_minute | 设置slot每分钟可运行的task数量超过该值说明该slot异常则设置为出错。 |
| message_router_index | 多消息路由的应用环境中指定当前job发给第n个消息路由。缺省值为0通常设置值>0 |
### 2.5.3 task-headers参数表
@ -238,3 +242,15 @@ cluster定义的示例如下
| to_slot | |
| slot_broadcast | 仅用于cli的命令行参数 |
| host_broadcast | 仅用于cli的命令行参数 |
### 2.5.4 host-parameters参数表
| 参数名称 | 含义 |
| --------------- | ----------------------------- |
| uname | ssh登录用户名 |
| port | ssh的端口号 |
| node_slot | 该节点node-agent的slot号 |
| group_id | 该节点所属节点组的编号 |
| slurm_node | 在slurm调度系统中对应的节点编号 |
| reg_time | 在scalebox中注册时间 |
| slot_job_id | 在slurm调度系统重node-agent的slurm job id |

View File

@ -70,6 +70,9 @@ graph LR
### task add {#task-add}
key-text可放在文件 ```${WORK_DIR}/key-text.txt```,该文件为多行文本,每行为一个消息体。
## 1.5 scalebox semaphore 子命令{#semaphore}
### 1.5.1 semaphore create{#semaphore-create}

View File

@ -20,6 +20,25 @@
- 自建服务器集群(不带虚拟化)
- HPC计算节点
本地计算的主要技术问题
- 前后job间的流控
- 运行速度匹配,避免本地硬盘/内存爆满
- 信号量是实现流控的技术手段
- 同一job在多节点间同步流控
- 不同通道的处理/不同节点的数据下载
- 节点处理能力差异,因此中间数据累积,导致内存爆满
- 自动容错处理
- 出错影响部分数据的处理
- 流控会导致整个流水线停止
- 自动容错对流控的影响
- 关键job的task处理排序
- 非关键模块分解
- 细分会增加流控负担
- 增加流水线并行提升性能,会增加中间存储的内存使用,影响流水线运行的稳定性
## 6.4 消息路由
开启task头获取功能。

View File

@ -28,5 +28,5 @@ Scalebox还可应用于复杂算法处理的应用场景通过容器化封装
Scalebox基于server端做计算模块间通信针对小数据块的高频度通信其效率相对较低。因而不适用于通信密集型并行计算。
包括以下类型:
- 科学仿真和建模:包括天气预报、气候建模、地震模拟、流体动力学、空气动力学等领域的应用。这些应用通常涉及大量的数学计算和复杂的物理模型,需要大规模的计算资源来进行模拟和预测
- 分子动力学模拟:用于研究分子结构和化学反应动力学的应用。分子动力学模拟可以帮助科学家理解生物分子的结构和功能,设计新的药物,并研究材料的性质和行为
- 科学仿真和建模:包括天气预报、气候建模、地震模拟、流体动力学、空气动力学等领域的科学计算。这些应用通常涉及大量的数学计算和复杂的物理模型,计算过程中涉及到高频度通信
- 分子动力学模拟:用于研究分子结构和化学反应动力学的过程模拟,该计算过程同样需要高频度通信