Application Load Adaptive Multi-stage Parallel Data Processing Architecture
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
31 Claims
-
1. (canceled)
-
2. A system comprising a plurality of subsystems for coordinating resource management of a pool of processing resources on behalf of application programs, the system comprising:
-
a first subsystem configured to, for each period of a plurality of allocation periods, allocate a first number of a plurality of cores of the pool of processing resources to one or more of the plurality of application programs based, for each of the one or more application programs, on a processing demand of the respective application program up to a respective processing resource quota, wherein the processing demand is based at least in part on a number of ready-to-execute instances for the respective application program, and allocate a second number of the plurality of cores after allocating the first number of the plurality of cores to one or more programs of the plurality of application programs based in part on remaining processing demand of each of the plurality of application programs, such that allocations of the plurality of cores are adjusted over time based at least in part on changes in the processing demands of each of the plurality of application programs; a second subsystem configured to, for each of the plurality of application programs, select a number of highest priority instances of one or more instances corresponding to a number of cores allocated to the respective program by the first subsystem during a current allocation period of the plurality of allocation periods, wherein the number of highest priority instances are selected based at least in part on a relative readiness for execution among the one or more instances of the respective program; and a third subsystem configured to assign the number of highest priority instances of each of the plurality of application programs selected by the second subsystem to the plurality of cores for execution during a next allocation period of the plurality of allocation periods. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A system comprising a plurality of subsystems for coordinating resource management of a pool of processing resources on behalf of application programs, the system comprising:
-
a first subsystem configured to allocate a plurality of cores of the pool of processing resources to a plurality of application programs based at least in part on i) respective expressions of demand for processing resources of the plurality of processing cores by the plurality of application programs, and ii) respective entitlements to the processing resources of the plurality of processing cores, wherein a respective entitlement is held by each of one or more programs of the plurality of application programs; a second subsystem configured to, for each program of the plurality of application programs, select a number of highest priority instances of one or more instances of the respective program, wherein each of the number of highest priority instances is selected based at least in part on a relative readiness for execution among the one or more instances of the respective program; and a third subsystem configured to assign the number of the highest priority instances of each of the plurality of application programs for execution on a respective one or more cores of the plurality of cores; wherein allocating the plurality of cores by the first subsystem comprises allocating a first number of the plurality of cores to instances of the one or more programs based, for each of the one or more programs, on respective expression of demand up to the respective entitlement, and after allocating the first number, allocating a second number of the plurality of cores to one or more of the plurality of application programs based at least in part on an unmet portion of the expression of demand of the respective application program after allocating the first number. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method for managing processing resources of a parallel processing system on behalf of application programs, the method comprising:
-
identifying, by a control system, a respective expression for demand for the computing capacity associated with each of one or more programs of a plurality of application programs; identifying, by the control system, a respective entitlement for computing capacity associated with each of one or more programs of the plurality of application programs; allocating, by the control system, a plurality of units of computing capacity of the parallel processing system to a subset of the plurality of application programs, wherein the allocating is based at least in part on i) the expressions for 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; 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 number of highest priority instances of the one or more instances of the respective program for execution on the parallel processing system according to a) a number of units of the plurality of units of computing capacity allocated to the respective application program, and b) the relative readiness for execution among the one or more instances of the respective program; and assigning the number of the highest priority instances of each of the plurality of application programs for execution on a respective one or more cores of the plurality of cores; wherein, for each program of the one or more application programs having a respective expression of demand meeting or exceeding a respective entitlement, allocating comprises allocating at least a number of units of computing capacity adequate to meet the entitlement of the respective program; and wherein, for at least one program of the plurality of application programs, allocating comprises allocating at least one unit of computing capacity exceeding the entitlement of the respective program. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31)
-
Specification