Scheduling algorithm

I have a problem with scheduling when new tasks (sets of tasks whose execution is sequentially connected) arrive every few seconds or so. Each work requires some resources to be allocated at known intervals. For example:
Job j1is a set of tasks for which we reserve resources {r1, r2, r3} according to the well-known planning template:

r1:[t0 .. t1=t0+td1], 
r2:[t2=t1+td2+i2 .. t3=t2+td3]
  • t0 - execution start time
  • td1 - resource allocation length for r1
  • t1 - end time of resource allocation for r1
  • i1 is the length of the waiting periodoid between r1, r2, etc.

schedule example
In this example, a new job j2 is scheduled immediately after running j1. The earliest start time for j2 is t1. A task may take several minutes to complete, most of which consists of waiting.

, , .

( - ( , 5%), , , r3.1, 3.2 .)

, (, ), , ( ), , , , (3.1/3.2), ( - ).

  • ?
  • () ?
+5
2

" ":


ThreadPool

ResourcePool int GetResource(ResourceType type, int durationInSeconds). , ResourceType

+1

All Articles