(1) // Combination of overlapping execution intervals |
(2) // Boolean controlling after migration whether RZ is no longer overloaded by |
(3) // Load of the RZ corresponding to |
(4) // The set of RZs helpful for partial migration |
(5) // The set of tasks that might perform partial migration |
(6) for all giving overloaded RZ do |
(7) False |
(8) while ( = False) and () do |
(9) // Total migration of tasks |
(10) Select the interval from that gives the most heavy occupation rate and discard it from . |
(11) Check whether the iteration, corresponding to the execution interval of the selected task, is studied on another |
non-overload RZ and update the load of the overloaded RZ after the elimination of the selected task. |
(12) if then |
(13) True |
(14) end if |
(15) end while |
(16) if then |
(17) Reinitialize and with its tasks |
(18) |
(19) |
(20) // Partial migration of tasks |
(21) Omit the tasks from the overloaded RZ, corresponding to , that are also acceptable by another RZs () and |
reduce their occupation rates from the loads of these RZs. These latter RZs with the overloaded RZ corresponding to |
are included in the set . The omitted tasks are included in |
(22) while do |
(23) In set, start by the task that gives the best trade-off between least number of RZs in |
where it could migrate and heaviest occupation rate in the overloaded RZ. |
(24) During , within the selected task, choose the biggest execution sections that could be placed in RZs from the |
set without overloading them. |
(25) Update the load of RZs receiving execution sections from the selected task |
(26) if Some execution sections of the selected task are not placed then |
(27) Reinitialize the loads of RZs in to values before processing |
(28) Increment the number of RZ corresponding to up to , go to 6 |
(29) else |
(30) Discard the selected task from . |
(31) end if |
(32) end while |
(33) // All the execution sections of tasks are placed |
(34) |
(35) end if |
(36) end for |