Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

Code Block
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
 endsuiteendsuite

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.

Code Block
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

Image Added
 
 Image Added
And if you manually now re-run the "t1" (you go over the limit!)
 Image Added
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.

Code Block
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. Anchor_Toc117323910_Toc117323910 Anchor_Toc117324176_Toc117324176