The goal of this project is to extend the current scheduling capabilities of OAR Resource and Job Management System (RJMS). In more particular we want to have two new scheduling policies implemented: Preemption and Gang Scheduling
The part of the RJMS which hides all the intelligence of the system is the scheduler. Its main role is to assign jobs according to the users needs and predefined rules and policies, upon available computational resources that match with the demands. A typical scheduler functions in cooperation with queues which are elements defined to organize jobs according to similar characteristics (for example priorities).
Different kind of scheduling policies have been defined and implemented upon the various production RJMS systems.
These are the most common ones:
Backfill, has several versions like conservative or aggressive. In the first one, which is most commonly used, a smaller job is moved forward in the queue as long as it does not delay any previously queued job. The second also known as EASY backfilling a small job is allowed to leap forward as long as it does not delay the first job in the queue.
OAR currently supports: FIFO, backfill (conservative version), Time-sharing and Fair-sharing.
In this project we are interested to provide support of Gang Scheduling and preemption policies upon OAR.
Gang Scheduling policy is a stricter variant of TimeSharing which allows the actual concurrent execution of jobs upon the same esources. This policy temporarily preempts and then reschedules jobs upon specific time intervals. It provides an environment similar to a dedicated machine, in which all job’s processes are executed together and at the same time resources are time-shared among different jobs.
The preemption policy is defined by the stop and later restart of lower priority jobs in order to allow higher priority jobs perform urgent computations. Preemption can be implemented with stop/reschedule, suspend/resume or checkpoint/restart models.