Simple explanation of the new work scheduler (version 5.8 and above)

From BOINC Wiki
Jump to: navigation, search

First, the computation deadline is: the report deadline – (queue size (or connect every X days) + project switch interval (switch projects every X minutes) + Safety Margin).

Safety Margin is either one day or 0. In the latest versions this is 0.

The round robin simulator is used to determine if any task would be reported late based on the remaining CPU time left for each task and the resource shares for the tasks from each project that has work on the client. (A low resource share project will quite often be in deadline trouble when it has work on the client).

For each task that is in deadline trouble, start the earliest deadline task that is available in that project up to the limit of CPUs. These are "High Priority" tasks.

If there are no more available CPUs, then do not continue scheduling tasks.

For each remaining CPU, schedule a task from the project with the highest short term debt. Internally track the fact that a task was scheduled from this project and deduct the task scheduling period. (this means if there are two projects with nearly identical STDs, a task will be started from each if there are enough available CPUs.

Once the schedule has been set, the enforcement occurs.

The tasks that are scheduled as high priority are scheduled immediately removing the tasks that have checkpointed most recently from memory.

For all other CPUs, wait until the task that is being un-scheduled has reached the first checkpoint after it has gotten project switch interval wall time. The task that replaces it is the one from the project with the highest Short Term Debt.

If the sum of RAM used by running tasks exceeds the amount of RAM specified, stop tasks until the amount of RAM used is below the specified amount. Note that this can leave CPUs idle.

For a lot more information on the new work scheduler, or for the technically minded among you reading this, I gladly point to the official write up.

| Jorden / John
| 2
| 1
| 21:41:01
| 2007-09-20
| 180507
| 1
| 168
| 2007-09-20 21:41:01
| 2008-07-03 02:20:39