CA2538503C

Process scheduler employing adaptive partitioning of process threads

Abstract

A system is set forth that comprises a processor, such as a single processor or symmetric multiprocessor, and one or more memory storage units. The system also includes software code that is stored in the memory storage units. The software code is executable by the processor and comprises code for generating a plurality of adaptive partitions that are each associated with one or more software threads. Each of the adaptive partitions has a corresponding processor budget. The code also is executable to generate at least one sending thread and at least one receiving thread. The receiving thread responds to communications from the sending thread to execute one or more tasks corresponding to the communications. A scheduling system also forms at least part part of the code that is executable by the processor. In operation, the scheduling system selectively allocates the processor to each sending and receiving thread based, at least in part, on the processor budget of the adaptive partition associated with the respective thread. In this type of sending/receiving environment, the scheduling system bills the processor budget of the adaptive partition associated with the sending thread for processor allocation used by the receiving thread to respond to communications sent by the sending thread.

CA2538503C, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Expired 1 March 2026, 0.6 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

14 claims: 2 independent, 12 dependent

  1. 1
    CA 02538503 2012-09-12 1. A system comprising:a processor;one or more memory storage units;software code stored in the one or more memory storage units, wherein the software code is executable by the processor and comprises: a plurality of adaptive partitions each having an associated guaranteed processor time budget and one or more associated process threads from a plurality of process threads;the plurality of process threads each having a priority and each dynamically associable with any one of the plurality of adaptive partitions;and a process scheduler executable by the processor configured to: when the system is under a normal load, allocate the processor to a process thread, of the plurality of process threads, that is in a ready state and having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state;and when the system is in overload, allocate the processor to a process thread, of the plurality of process threads, that is in the ready state, having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state and for which the adaptive partition that the process thread is associated with has available guaranteed processor time budget;wherein the guaranteed processor time budget is allocated and billed over successive averaging windows;and wherein a portion of the guaranteed processor time budget associated with each adaptive partition is billed whenever the processor is allocated to a process thread associated with the adaptive partition.
  2. 8
    A method of scheduling a plurality of process threads, each having a priority and each dynamically associable with an adaptive partition, for execution by a processor of a system, the method comprising:creating a plurality of adaptive partitions each having an associated guaranteed processor time budget;CA 02538503 2012-09-12 associating one or more process threads from the plurality of process threads with each of the plurality of adaptive partitions;when the processor is under a normal load, allocating the processor to a process thread, of the plurality of process threads, that is in a ready state and having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state;and when the processor is in overload, allocating the processor to a process thread, of the plurality of process threads, that is in the ready state, having the highest priority amongst process threads, of the plurality of process threads, that are in the ready state and for which the adaptive partition that the process thread is associated with has available guaranteed processor time budget;wherein the guaranteed processor time budget is allocated and billed over successive averaging windows;and wherein a portion of the guaranteed processor time budget associated with each adaptive partition is billed whenever the processor is allocated to a process thread associated with the adaptive partition.