ecFlow's documentation is now on readthedocs!

This command defines a limit into the current node. It is a means of providing simple load management by say limiting the number of tasks submitted to a specific server.
Typically you either define limits on suite level or define a separate suite to hold limits so that they can be used by multiple suites.

suite limits
   limit sgi 10
   limit mars 10
endsuite 
suite obs
   family limits
     limit hpcd 20
   endfamily
   extern /limits:sgi
   task t1
      inlimit sgi
   task t2
      inlimit /obs/limits:hpcd
endsuite

Using Limits

In order to use limits, you have to first define a limit in the suite definition file and then you must also assign families/tasks to use this limit, e.g.

suite x
  limit fast 1
  family f
    inlimit /x:fast
    task t1
    task t2


Where fast is the "name" of the limit and the number after the name defines the maximum number of tasks that can run simultaneously using this limit. That's why you do not need a trigger between tasks "t1" and "t2".
There is no need to change tasks. The jobs are run in the order they appear in the suite definition. Be aware that the command order may be used to modify the order after the suite definition has been defined.
The following is a sequence if the jobs run in the normal order


 
 
And if you manually now re-run the "t1" (you go over the limit!)
 
Using integer limits is a bit different. In the following example, we define limit disk to be 50 (megabytes) and task using 20 (megabytes) each. This means that only two of them can be running any given time.

suite x
  limit disk 50
  family f
    inlimit disk 20
    task t1
    task t2
    task t3


Where disk is the "name" of the limit, 50 is the maximum value this limit can be.