EP0384635A2

Adaptive job scheduling for multiprocessing systems.

Abstract

In a master/slave multiprocessor system, process execution tasks are allocated on the basis of anticipated execution time. Work which can be performed by either the master or the slave is entered on a double ended queue (212) in a non-­descending order of anticipated execution times. Processes having high anticipated execution times are selected for execution by the slave processor and processes having low anticipated execution times are selected for execution by the master processor. Anticipated holding times are computed on the basis of the time spent by the slave computer in the execution of a segment of a process without requiring interaction with the master processor. The slave processor records the time spent in execution each time a segment of the process is completed and the process has to be returned to the master. The master uses the recorded time as a measure of the anticipated execution time for a next segment of the same process.

EP0384635A2, drawing sheet 1
Sheet 1 of 5

Term

Term ended

Projected expiry passed 14 February 2010, 16.6 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

17 claims: 10 independent, 7 dependent

  1. 1
    In a multiprocessor system comprising a master processor and a slave processor, a method of scheduling execution of program processes comprising the steps of:entering in a queue data identifying a plurality of processes;recording data defining a time values associated with said processes entered in said queue;selecting from said queue a process having associated therewith a time value greater than other time values in said queue;executing segments of said selected processes in said slave processor;computing an execution holding time value for each process segment executed in said slave processor corresponding to the time period occupied in execution of said segments;recording in said queue data identifying said executed processes and data associated with said executed processes defining said computed execution holding time values.
  2. 2
    The method of accordance with claim 1, comprising after said computing step, the following steps:entering in another queue data identifying said executed processes and data defining said computed execution holding values;and executing in said master processor said processes identified in said other queue prior to said step of recording said data identifying said executed processes.
  3. 3
    In a multiprocessor arrangement having a master processor and a slave processor, a method of allocating work to said slave processor comprising the steps of:assigning an anticipated holding time value to program processes to be executed ordering said program processes in a double ended queue in a non-­descending order of anticipated holding time values;selecting processes for execution by said slave processor from the end of said queue having higher anticipated holding time values;and selecting processes for execution by said master processor from the end of said queue having lower anticipated holding time values.
  4. 4
    In a multiprocessor system having a master processor and a slave processor, a method of allocating work to said slave processor comprising the steps of:assigning to each of a plurality of program processes an associated time value representative of the anticipated execution time;and selecting for execution by said slave processor, a process having a larger associated time value than other processes.
  5. 5
    A multiprocessor arrangement comprising:master processor means for executing program processes;a slave processor for executing program processes;and memory means including a working queue for storing indicia identifying program processes and data defining associated time values representative of time required for execution of segments of said processes;said slave processor selecting from said working queue one of said processes having associated therewith a time value greater than time values associated with other processes in said queue.
  6. 6
    The multiprocessor arrangement in accordance with claim 5, and further comprising means for generating data representative of time spent in executing a segment of one of said processes executed by said slave processor, said memory means further comprising a master queue, and said slave processor comprising memory access means for accessing said memory, and execution means for executing processes selected from said working queue, said slave processor reading said indicia and data from said working queue and writing into said master queue indicia identifying processes executed by said slave processor and data representative of time spent by said slave processor in executing segments of processes.
  7. 7
    The multiprocessor arrangement in accordance with claim 6, wherein said master processor comprises execution means for executing processes in said master queue and memory access means for accessing said master queue and said working queue, said master processor executing processes identified in said master queue and writing into said working queue indicia identifying processes executed by said master processor and said data representative of time spent by said slave processor in executing segments of processes.
  8. 9
    In a multiprocessor system comprising a master and a slave processor, a method of scheduling execution of program processes comprising the steps of:recording in a queue indicia identifying a plurality of processes to be executed;recording in association with each recorded process an indication of anticipated execution time;selecting for execution by said slave processor a processes having recorded therewith a indications of longer anticipated execution time than other processes;and selecting for execution by said master processor processes having recorded therewith indications of shorter anticipated execution times than other processes.
  9. 10
    A method of distributing program processes in accordance with claim 9, wherein said step of deriving an anticipated execution time comprises computing an execution holding time value for an associated process each time a segment of the associated process is executed and defining the computed value for the associated process as the anticipated execution time for a next segment of the associated process.
  10. 11
    A method of distributing program processes in accordance with claim 9, wherein said step of deriving an anticipated execution time comprises computing an execution holding time value for an associated process each time a segment of the associated process is executed and deriving an anticipated process execution time for a next segment of the associated process from a plurality of computed execution holding time values for the associated process.
  11. 12
    In a multiprocessor system comprising a master processor and a slave processor, a method of distributing work comprising the steps of:recording in a first queue data identifying processes to be executed and data associated with each process defining a time value representative of the anticipated time required for execution segment of a process;selecting from said first queue for execution by said slave processor one of said processes having associated therewith a longer anticipated execution time than other processes identified in said first queue;partially executing said selected one of said processes by execution of a segment of said selected one of said processes in said slave processor;computing a holding time value corresponding to time spent in partially executing said selected one process in said slave processor;recording said computed holding time value in a second queue in association with data identifying said process partially executed on said slave processor;executing in said master processor certain program functions for said partially executed process recorded in said second queue;and upon completion of execution of said certain program functions in said master processor, entering in said first queue data identifying said process executed by said master processor and data defining said computed holding time as the anticipated execution time for the execution of a next segment of said partially executed process.
  12. 13
    In a multiprocessor system comprising a master processor and a slave processor, each for executing operations on program processes, a method of allocating work to the slave processor comprising the steps of:deriving an anticipated execution time for each of a plurality of program processes;separating said program processes on the basis of anticipated execution time;and selecting from said separated processes for execution by said slave processor processes having the longest anticipated execution times.
  13. 14
    In a multiprocessor system comprising at least two processors, a method of distributing program processes for execution by said processors, comprising the steps of:deriving an anticipated execution time for each of a plurality of program processes;and assigning processes of said plurality of processes to said processors for execution on the basis of said anticipated execution times.
  14. 15
    A method of distributing program processes in accordance with claim 14, wherein said step of deriving an anticipated execution time comprises computing an execution holding time value for an associated process each time a segment of the associated process is executed and defining the computed value for the associated process as the anticipated execution time for a next segment of the associated process.
  15. 16
    A method of distributing program processes in accordance with claim 14, wherein said step of deriving an anticipated execution time comprises computing an execution holding time value for an associated process each time a segment of the associated process is executed and deriving an anticipated process execution time for a next segment of the associated process from a plurality of computed execution holding time values for the associated process.
  16. 17
    In a multiprocessor arrangement having a master and a slave processor, memory means for storing first and second queues, and timer means for generating a timed interrupt signal and data defining elapsed time, the method of scheduling execution of program processes comprising the steps of:creating in said first queue entries for processes to be executed by said slave processor and having first and second time entry fields for recording time values and ranking said entries in an ordered sequence in accordance with time values recorded in said first time entry field for each of said processes;fetching from said first queue an entry having a relatively large time value in said first time entry field and defining a selected process to be executed by said slave processor;executing said selected process in said slave processor until interrupted by a timed interrupt signal from said timer means or until a non-executable function is encountered in said slave processor;computing a new time value for said selected process by adding a time value representing elapsed time generated by said timer means to a time value recorded in said second time entry field for said selected process;creating in said first queue an entry for said selected process and entering said computed value in said second time entry field for said selected process only if execution of said selected process in the slave processor is interrupted by a signal from said timer means, and creating an entry for said selected process in said second queue for execution by said master processor and entering said computed value in said first time entry field of said entry entered in said second queue only if an unexecutable function is encountered during execution of said selected process in said slave processor.
Independent claims16