Systems and methods for changing computational tasks on computation nodes to minimize processing time variation
First Claim
Patent Images
1. A system to process streaming data units (tuples), comprising:
- a. a plurality of processing units to receive tuples for an application, the application having a predetermined processing time requirement, wherein the processing units are connected through a network which applies operators to tuples in a pipe-lined manner, wherein the processing units are organized in a processing unit graph;
b. a tuple-by-tuple operator set movement unit coupled to the processing units to change an operator-set applied to the tuple by a selected processing unit, on a tuple-by-tuple basis, wherein said tuple-by-tuple operator set movement unit determines whether the processing time for the assigned operators of the selected processing unit exceeds the predetermined processing time requirement and, if said requirement is exceeded, the tuple-by-tuple operator set movement unit selects an operator sub-set and tuple sub-set to be moved to another processing unit;
wherein a sub-graph of the processing unit graph is chosen as input and descendant processing units in the sub-graph are selected in an inverse-topological order;
wherein a slack for the selected descendant processing unit is determined by determining the difference between an estimated processing time for the processing unit and a processing time requirement;
wherein if there is sufficient slack for the selected descendant processing unit at least a portion of the operator sub-set and tuple-sub-set are selected to be moved to the selected descendant processing unit; and
c. a process direction module for moving operators to processing units according to the selection made by the tuple-by-tuple operator set movement unit.
3 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed to process streaming data units (tuples) for an application using a plurality of processing units, the application have a predetermined processing time requirement, by changing an operator-set applied to the tuple by a processing unit, on a tuple-by-tuple basis; estimating code requirement for potential operators based on processing unit capability; and assigning the potential operators to the processing units.
26 Citations
20 Claims
-
1. A system to process streaming data units (tuples), comprising:
-
a. a plurality of processing units to receive tuples for an application, the application having a predetermined processing time requirement, wherein the processing units are connected through a network which applies operators to tuples in a pipe-lined manner, wherein the processing units are organized in a processing unit graph; b. a tuple-by-tuple operator set movement unit coupled to the processing units to change an operator-set applied to the tuple by a selected processing unit, on a tuple-by-tuple basis, wherein said tuple-by-tuple operator set movement unit determines whether the processing time for the assigned operators of the selected processing unit exceeds the predetermined processing time requirement and, if said requirement is exceeded, the tuple-by-tuple operator set movement unit selects an operator sub-set and tuple sub-set to be moved to another processing unit; wherein a sub-graph of the processing unit graph is chosen as input and descendant processing units in the sub-graph are selected in an inverse-topological order; wherein a slack for the selected descendant processing unit is determined by determining the difference between an estimated processing time for the processing unit and a processing time requirement; wherein if there is sufficient slack for the selected descendant processing unit at least a portion of the operator sub-set and tuple-sub-set are selected to be moved to the selected descendant processing unit; and c. a process direction module for moving operators to processing units according to the selection made by the tuple-by-tuple operator set movement unit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system to process streaming data units (tuples), comprising:
-
a plurality of processing units to receive tuples for an application, the application having a predetermined processing time requirement, wherein the processing units are connected through a network which applies operators to tuples in a pipe-lined manner, wherein the processing units are organized in a processing unit graph; a code estimation and loading unit coupled to the processing units to estimate potential operators and assign operators to the processing units; a tuple-by-tuple operator set movement unit coupled to the processing units to change an operator-set applied to the tuple by a selected processing unit, on a tuple-by-tuple basis, wherein said tuple-by-tuple operator set movement unit determines whether the processing time for the assigned operators of the selected processing unit exceeds the predetermined processing time requirement and, if said requirement is exceeded, the tuple-by-tuple operator set movement unit selects an operator sub-set and tuple sub-set to be moved to another processing unit; wherein a sub-graph of the processing unit graph is chosen as input and descendant processing units in the sub-graph are selected in an inverse-topological order; wherein a slack for the selected descendant processing unit is determined by determining the difference between an estimated processing time for the processing unit and a processing time requirement; wherein if there is sufficient slack for the selected descendant processing unit at least a portion of the operator sub-set and tuple-sub-set are selected to be moved to the selected descendant processing unit; and a process direction module for moving operators to processing units according to the selection made by the tuple-by-tuple operator set movement unit. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A system to process streaming data units (tuples), comprising:
-
a. a plurality of processing units to receive tuples for an application, the application having a predetermined processing time requirement, wherein the processing units are connected through a network which applies operators to tuples in a pipe-lined manner, wherein the processing units are organized in a processing unit graph; b. a tuple-by-tuple operator set movement unit coupled to the processing units to change an operator-set applied to the tuple by a selected processing unit, on a tuple-by-tuple basis, wherein said tuple-by-tuple operator set movement unit determines whether the processing time for the assigned operators of the selected processing unit exceeds the predetermined processing time requirement and, if said requirement is exceeded, the tuple-by-tuple operator set movement unit selects an operator sub-set and tuple sub-set to be moved to another processing unit; wherein a sub-graph of the processing unit graph is chosen as input and descendant processing units in the sub-graph are selected in an inverse-topological order; wherein a slack for the selected descendant processing unit is determined by determining the difference between an estimated processing time for the processing unit and a processing time requirement; wherein if there is sufficient slack for the selected descendant processing unit at least a portion of the operator sub-set and tuple-sub-set are selected to be moved to the selected descendant processing unit; and c. a code estimation and loading unit coupled to the processing units to estimate potential operators and assign operators to the processing units; d. a process direction module for moving operators to processing units according to the selection made by the tuple-by-tuple operator set movement unit.
-
-
18. A method to process streaming data units (tuples) for an application, using a plurality of processing units, the application have a predetermined processing time requirement comprising:
-
a. changing an operator-set applied to the tuple by a selected processing unit, on a tuple-by-tuple basis; wherein the application utilizes a plurality of processing units, the application having a predetermined processing time requirement, wherein the processing units are connected through a network which applies operators to tuples in a pipe-lined manner, wherein the processing units are organized in a processing unit graph; wherein a tuple-by-tuple operator set movement unit determines whether the processing time for the assigned operators of the selected processing unit exceeds the predetermined processing time requirement and, if said requirement is exceeded, the tuple-by-tuple operator set movement unit selects an operator sub-set and tuple sub-set to be moved to another processing unit; wherein a sub-graph of the processing unit graph is chosen as input and descendant processing units in the sub-graph are selected in an inverse-topological order; wherein a slack for the selected descendant processing unit is determined by determining the difference between an estimated processing time for the processing unit and a processing time requirement; wherein if there is sufficient slack for the selected descendant processing unit at least a portion of the operator sub-set and tuple-sub-set are selected to be moved to the selected descendant processing unit; b. estimating code requirement for potential operators based on processing unit capability; and c. assigning the potential operators to the processing units using a process direction module for moving operators to processing units according to the selection made by the tuple-by-tuple operator set movement unit. - View Dependent Claims (19, 20)
-
Specification