.. index::
   single: limit (tutorial)

.. _tutorial-limit-submission:

Limit-submission
================== 

In the previous exercise, we showed how ecFlow provides simple load management.

The limits can still allow several hundred jobs to be submitted at once. This can cause problems:

- Excessive disk/io in job generation
- Server busy in job generation, and slow to respond to the GUI.
- Overload queuing systems like PBS/SLURM

Hence we need load management that can limit the number of submissions. When the Job becomes active the limit token is released.

This exercise shows the use of '-s' option. Which helps to control the number of tasks in the submitted state. We can have **more than** 2 active jobs since we **only** control the number in the submitted state. If we **removed** the -s then we can only have two active jobs running at one time. The use of -s  allows the configuration of the suite, depending on the load the disk/io and queuing system can sustain.

Here is the simple illustration that modifies the previous example:


Text
-------------

Let us modify our :term:`suite definition` file:

.. code-block:: shell

   # Definition of the suite test.
   suite test
    edit ECF_INCLUDE "$HOME/course"
    edit ECF_HOME    "$HOME/course"
    limit l1 2
    family f5
        inlimit -s l1 # by default consume 1 token from the limit l1
        edit SLEEP 20
        task t1
        task t2
        task t3
        task t4
        task t5
        task t6
        task t7
        task t8
        task t9
    endfamily
   endsuite


Python
------

.. literalinclude:: src/limit-submission.py
   :language: python
   :caption: $HOME/course/test.py


**What to do**

#. Edit the changes
#. Replace the :term:`suite definition`
#. In :term:`ecflow_ui`, observe effects
#. Change the value of the :term:`limit` and inlimit, observe the effect.


