...
inlimit
Limits are used in conjunction with inlimit keyword.
First, a limit must be defined using the ‘limit NAME N’.
The limit definition is typically placed at the suite scope.
Next we create a group of tasks to which we want to apply the limit.
This is done by attaching an ‘inlimit NAME’ attribute to the nodes.
Attaching the attribute to a task adds the task to the group.
The effect of a limit is that no more than N tasks
of a group will run at once.
A node can be limited by several limits.
Ecf script
We will create family f5 with nine tasks.
Create new ecf script s in $HOME/course/test/f5/ directory, each one containing:
Code Block | ||
---|---|---|
| ||
%include <head.h> echo "I will now sleep for %SLEEP% seconds" sleep %SLEEP% %include <tail.h> |
...
Python
#!/usr/bin/env python2.7
import os
import ecflow
def create_family_f5() :
f5 = ecflow.Family("f5")
f5.add_inlimit("l1")
f5.add_variable("SLEEP", 20)
for i in range(1, 10):
f5.add_task( "t" + str(i) )
return f5
print "Creating suite definition"
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.getenv("HOME") + "/course")
suite.add_variable("ECF_HOME", os.getenv("HOME") + "/course")
suite.add_limit("l1", 2)
suite.add_family( create_family_f5() )
print defs
print "Checking job creation: .ecf -> .job0"
print defs.check_job_creation()
print "Check in limit references"
print defs.check()
print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")
What to do
- Edit the changes
- Replace the suite definition
- In ecflowview, observe the triggers of the limit l1
- Open the Info panel for l1
- Change the value of the limit
- Open the Why? panel for one of the queued tasks of /test/f5
Horizontal Navigation Bar | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|