Equivalence classes are a way to group similar jobs together. Once one job in a class can not run, the scheduler knows the rest of the jobs in that class can not run. This allows the scheduler to be more efficient by not having to consider all the jobs in the system.
Similar is defined by the following attributes and resources:
If there are any user limits(soft or hard), euser
If there are any group limits(soft or hard), egroup
If there are any project limits(soft or hard), project
If there are queue limits or nodes associated with queues, queue
All resources in the sched_config resources line in the select statement
All resources in the sched_config resources line from Resource_List (qsub -l)
The place statement
How equivalence classes work:
The external behavior of this feature is seen in the following way in the scheduler logs:
Old:
...;Job Id;Considering job to run ...;Job Id;<Reason job can not run> ...;Job Id;Considering job to run ... |
i.e. each job gets its own "Considering job to run line"
Example:
04/15/2015 16:01:18;1234.mars;Considering job to run 04/15/2015 16:01:18;1234.mars;Insufficient amount of resource: ncpus 04/15/2015 16:01:18;1235.mars;Considering job to run |
New:
...;Job Id;Considering job to run ...;Job Id;<Reason job can not run> <same line for rest of equivalence class> |
Example:
04/15/2015 16:01:18;1234.mars;Considering job to run 04/15/2015 16:01:18;1234.mars;Insufficient amount of resource: ncpus 04/15/2015 16:01:18;1235.mars;Insufficient amount of resource: ncpus 04/15/2015 16:01:18;1236.mars;Insufficient amount of resource: ncpus 04/15/2015 16:01:18;1237.mars;Insufficient amount of resource: ncpus |