Application load adaptive multi-stage parallel data processing architecture
First Claim
1. A system comprising a plurality of subsystems, implemented on processors, 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, whereinthe processing demand is based at least in part on a count of ready-to-execute instances for the respective application program, andallocate 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, corresponding to a number of cores allocated to the respective program by the first subsystem, of one or more instances of the respective program for a next 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 one or more instances of the respective program, wherein any of the ready-to-execute instances of the respective program has a higher selection priority than any other 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 cores that are allocated to the corresponding program during the next allocation period of the plurality of allocation periods.
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
30 Claims
-
1. A system comprising a plurality of subsystems, implemented on processors, 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 count 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, corresponding to a number of cores allocated to the respective program by the first subsystem, of one or more instances of the respective program for a next 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 one or more instances of the respective program, wherein any of the ready-to-execute instances of the respective program has a higher selection priority than any other 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 cores that are allocated to the corresponding program during the next allocation period of the plurality of allocation periods. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system comprising a plurality of subsystems, implemented on processors, for coordinating resource management of a pool of processing resources on behalf of application programs, the system comprising:
-
a first subsystem configured to periodically 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 each of 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; and wherein the respective expression of demand is based at least in part on a count of ready-to-execute instances of each 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, corresponding to a number of cores allocated to the respective program, of one or more instances of the respective program for a next allocation period, 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;
wherein any of the ready-to-execute instances of the respective program has a higher selection priority than any other instances of the respective program; anda 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 cores that are allocated to the corresponding program; wherein allocating the plurality of cores by the first subsystem comprises allocating a first number of the plurality of cores to the highest priority 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 a second number of instances of 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 (13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. 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 of demand for computing capacity of the processing resources of the parallel processing system associated with each of one or more programs of a plurality of application programs; identifying, by the control system, a respective entitlement for the computing capacity associated with each of one or more programs of the plurality of application programs;
wherein the respective expression of demand is based at least in part on a count of ready-to-execute instances of each of the plurality of application programs;allocating, by the control system, a plurality of units of the 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 count of units of the plurality of units of computing capacity allocated to the respective program, and b) the relative readiness for execution among the one or more instances of the respective program;
wherein any of the ready-to-execute instances of the respective program has a higher selection priority than any other instances of the respective program; andassigning the number of the highest priority instances of each of the plurality of application programs for execution on a respective one or more units that are allocated to the corresponding program; 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 (23, 24, 25, 26, 27, 28, 29, 30)
-
Specification