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.