From Submission to Queue

The following is an explanation of how tasks go from a user submission to queued on a grid.

Dataset Submission

The submit process takes a dataset config as input, usually through the website. It then creates the following entries:

  • dataset

  • config

  • task_rel - one for each task

Note that if the IceProd instance you submit through does not know about a dataset dependency, submission will fail. Try submitting through the master instance in that case.

Buffering

Jobs and tasks get buffered, or allocated, when there is empty space on a queue that they can run at. Whole jobs are buffered at once, so more than the requested number of tasks may be buffered.

The following entries are made:

  • search

  • task

  • job

Algorithm

  • Get the possible datasets we can buffer from

    • Get number of jobs submitted for each dataset

    • Subtract off already buffered jobs

  • Get task_rel for each dataset

  • For each dataset, and potential job to buffer:

    • Generate task dependencies for each task

      • Get a task_rel for the current task

      • If missing a task_rel, load it

      • Figure out which task is referenced for each task_rel dependency

    • If a dependency is not met, do not buffer

    • Else, buffer the job and associated tasks

Queueing

Once a task is in waiting or idle, it can be queued (pending dependencies and requirements). See Lifecycles for the actual happenings from this point on.