Scheduling

From PDP/Grid Wiki
Jump to navigationJump to search

Scheduling is done by a ranking assigned to each job in the system. Jobs with the highest ranking are scheduled first.

There are two components to the ranking : priority and fair share. Most VOs also have a "maximum" processor allocation which can also in some situations be important. The rank looks like

RANK = PRIORITY + FACTOR*(TARGET SHARE - USED SHARE)/(TARGET SHARE)

Priority essentially divides the groups onto the system into different quality of service classes. The system administrators, and the monitoring group, have a very high priority; even if some VO has used none of its share whatsoever, the priority of these special groups is so high that they will always run first.

Some other special groups, like the SGM (software manager) groups, have double the "normal" priority, so the special system groups will run before them, but the SGMs will run before "normal" users.

Most VOs then have the "normal" priority. And finally there are some parasitic groups that have lower-than-normal priority; these are allowed to run when the system is empty of "normal" users.

For jobs all having the same priority factor -- meaning most of our jobs, for example the LHC groups and VL-e groups all have "normal" priority -- scheduling between these jobs is determined by the share. Basically, those VOs that have used relatively little of their share always come out best in the share factor, and hence get scheduled first. Note that there are in principle three levels of share : VO, group, and user level. The user level share factor is small, but for two users in the same VO and in the same subgroup of the VO, the user having used the least processor time over the last 24 days will be scheduled first, because of this factor.

Finally, there is a second class of parasitic group on the system, which has normal priority but no assigned share. For these groups, the second term in the above equation is just zero. Hence ANY VO with normal priority, that has yet to use its share, will be scheduled ahead of these jobs. These jobs thus only run when either all normal-priority VOs are running at or above share, or else there are unused cores in the system and no waiting normal-priority jobs to take them.