Application load adaptive multi-stage parallel data processing architecture
First Claim
1. A system comprising a plurality of subsystems, implemented on hardware logic and/or software logic executing on processors, for load-adaptive resource management of a pool of processing resources on behalf of a plurality of software programs, the plurality of subsystems comprising:
- a first subsystem configured to periodically, for successive allocation periods,allocate a plurality of cores of the pool of processing resources to the plurality of software programs based at least in part on i) a processing demand of each software program of the plurality of software programs, and ii) a processing resource quota of each program of one or more software programs of the plurality of software programs to computing capacity of the pool of processing resources, whereinperiodically allocating causes allocations of the plurality of cores to adjust over time based at least in part on changes in readiness to execute among one or more instances of a set of instances of each of the plurality of software programs;
a second subsystem configured to, for each of the plurality of software programs, select a set of highest priority instances of one or more instances of the set of instances, corresponding to a number of cores allocated to the respective program by the first subsystem during a current allocation period of the successive allocation periods, whereinthe set of highest priority instances are selected based at least in part on a relative readiness for processing among the set of instances of the respective program; and
a third subsystem configured to assign the set of highest priority instances of each of the plurality of software programs selected by the second subsystem to the plurality of cores for execution during an upcoming allocation period based at least in part on the allocations of the cores among the plurality of software programs by the first subsystem, wherein,for at least one of the plurality of software programs,the set of highest priority instances comprises at least one assigned instance currently assigned to a given core of the plurality of cores, andassigning the at least one assigned instance comprises preserving a core assignment of the at least one assigned instance from a current allocation period;
wherein the system periodically repeats the selecting and the assigning at least in response to the periodically allocating.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods provide an extensible, multi-stage, realtime application program processing load adaptive, manycore data processing architecture shared dynamically among instances of parallelized and pipelined application software programs, according to processing load variations of said programs and their tasks and instances, as well as contractual policies. The invented techniques provide, at the same time, both application software development productivity, through presenting for software a simple, virtual static view of the actually dynamically allocated and assigned processing hardware resources, together with high program runtime performance, through scalable pipelined and parallelized program execution with minimized overhead, as well as high resource efficiency, through adaptively optimized processing resource allocation.
-
Citations
20 Claims
-
1. A system comprising a plurality of subsystems, implemented on hardware logic and/or software logic executing on processors, for load-adaptive resource management of a pool of processing resources on behalf of a plurality of software programs, the plurality of subsystems comprising:
-
a first subsystem configured to periodically, for successive allocation periods, allocate a plurality of cores of the pool of processing resources to the plurality of software programs based at least in part on i) a processing demand of each software program of the plurality of software programs, and ii) a processing resource quota of each program of one or more software programs of the plurality of software programs to computing capacity of the pool of processing resources, wherein periodically allocating causes allocations of the plurality of cores to adjust over time based at least in part on changes in readiness to execute among one or more instances of a set of instances of each of the plurality of software programs; a second subsystem configured to, for each of the plurality of software programs, select a set of highest priority instances of one or more instances of the set of instances, corresponding to a number of cores allocated to the respective program by the first subsystem during a current allocation period of the successive allocation periods, wherein the set of highest priority instances are selected based at least in part on a relative readiness for processing among the set of instances of the respective program; and a third subsystem configured to assign the set of highest priority instances of each of the plurality of software programs selected by the second subsystem to the plurality of cores for execution during an upcoming allocation period based at least in part on the allocations of the cores among the plurality of software programs by the first subsystem, wherein, for at least one of the plurality of software programs, the set of highest priority instances comprises at least one assigned instance currently assigned to a given core of the plurality of cores, and assigning the at least one assigned instance comprises preserving a core assignment of the at least one assigned instance from a current allocation period; wherein the system periodically repeats the selecting and the assigning at least in response to the periodically allocating. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system including processors and implemented on hardware logic and/or software logic executing on the processors, the system comprising a plurality of subsystems for load-adaptive resource management of a pool of processing resources on behalf of a plurality of applications, the plurality of subsystems comprising:
-
a first subsystem configured to allocate a plurality of processing units of the pool of processing resources to the plurality of applications based at least in part on i) respective expressions of demand for the pool of processing resources by the plurality of applications, and ii) respective entitlements of one or more applications of the plurality of applications to computing capacity of the pool of processing resources; a second subsystem configured to, for each application of the plurality of applications, select a set of highest priority instances of one or more instances of the respective application corresponding to processing units allocated by the first subsystem for an upcoming allocation period, wherein the set of highest priority instances are selected based at least in part on a relative readiness for processing among the one or more instances of the respective application; and a third subsystem configured to assign the set of the highest priority instances of each of the plurality of applications for execution during the upcoming allocation period on a respective one or more processing units of the plurality of processing units based at least in part on the allocation of the plurality of processing units among the plurality of applications by the first subsystem; wherein the allocating is repeated periodically such that allocations of the plurality of processing units vary over time based at least in part on changes in expressions of demand for the pool of processing resources associated with each of the plurality of applications, wherein assigning the set of highest priority instances of each of the plurality of applications comprises preserving core assignments to instances selected for execution on consecutive core allocation periods; the system being further configured to periodically adjust allocations of the plurality of processing units of the pool of processing resources over time, wherein such adjusting is followed by accordingly carrying out the selecting and the assigning. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A method for load-adaptive resource management of a parallel processing system on behalf of application programs, the method comprising:
-
a) identifying, by a control system, a respective expression of demand for the computing capacity of the parallel processing system associated with each program of a plurality of application programs; b) identifying, by the control system, a respective entitlement for computing capacity of the parallel processing system associated with one or more programs of the plurality of application programs; c) allocating, by the control system, a plurality of units of the computing capacity of the parallel processing system to at least a subset of the plurality of application programs, wherein the allocating is based at least in part on i) the expressions of demand of each of the subset of application programs, and ii) the entitlements of the one or more programs of the subset of application programs; d) for each program of the subset of application programs, assessing, by the control system, a relative readiness for execution among one or more instances of the respective program, and selecting, by the control system, a set of highest priority instances of the one or more instances of the respective program for execution on the parallel processing system according to i) a number of units of the plurality of units of computing capacity allocated to the respective application program, and ii) the relative readiness for execution among the one or more instances of the respective program; e) assigning the set of the highest priority instances of each of the at least the subset of the plurality of application programs for execution on a respective one or more units of the plurality of units of computing capacity based at least in part on the allocations of the units of computing capacity among the plurality of application programs; and f) periodically repeating steps a) through e) to modify allocations over time based at least in part on changes in the respective expressions of demand for each of the plurality of application programs; wherein assigning the set of highest priority instances of each of the subset of the plurality of application programs comprises preserving core assignments to instances selected for execution on consecutive repetitions of steps a) through e). - View Dependent Claims (19, 20)
-
Specification