ecFlow学习笔记02.4.3 —— Limit

目录

该教程的最新版已发布在GitHub上,请访问ecflow-tutorial-cn

这是 ecFlow 教程的一部分,完整教程请参看《ecFlow学习笔记02 —— 教程

    • *limits 提供简单的负载管理,限制提交到某个 ecflow_server 上的作业数目。

suite 设计者使用两种触发器:

  • data dependency trigger:由 trigger 关键词设置
  • courtesy trigger:由 limit 关键词设置

trigger 是第一种触发器。第二种用于防止同时运行过多的作业,实际上是一种人工的作业排队方法。因为 ecflow 不区分这两种触发器,不利于后续维护。所以引入 limit。

inlimit

limits 与 inlimit 同时使用。
首先定义limit:{shell}limit NAME N{/shell},通常放在 suite 级
接着将 定义一组想应用该 limit 的 task,将 {shell}inlimit NAME{/shell} 属性添加到节点。添加到 task 中将该 task 加入到 limit 组;添加到 family 将该 family 下的所有任务添加到 limit 组。
limit 的效果是确保该组中同时运行的任务数不超过 N。一个节点可以被多个 limit 限制。

ecf脚本

创建有九个 task 的 family f5。
在 {shell}$HOME/course/test/f5/{/shell} 目录下创建这些 ecf script 脚本,每个内容如下:

suite definition

在 suite definition 中添加 limit。

文本方式

定义语法

Python方式

Python API

ecflow.InLimit

创建

使用

ecflow.Limit

创建

使用

任务

  1. 修改
  2. 替换 suite definition
  3. 在 ecflowview 中观察 {shell}limit l1{/shell}
  4. 打开 l1 的 info 面板
  5. 修改 limit 的值
  6. 打开 /test/f5 下某个排队 task 的 Why 面板

词汇表

ecflow_server
trigger
limit
inlimit
suite
task
family
node
ecf script
suite definition
ecflowview
queued