Allocating operators of a streaming application to virtual machines based on monitored performance
First Claim
1. An apparatus comprising:
- at least one processor;
a memory coupled to the at least one processor;
a streaming application residing in the memory and executed by the at least one processor, the streaming application comprising a flow graph that includes a plurality of operators that process a plurality of data tuples;
a plurality of performance thresholds residing in the memory for the plurality of operators in the flow graph; and
a streams manager residing in the memory and executed by the at least one processor, the streams manager deploying the flow graph on at least one virtual machine (VM), monitoring performance of the streaming application, and when performance of a first portion of the streaming application in a selected VM does not satisfy at least one of the plurality of performance thresholds, the streams manager determines when the first portion of the streaming application in the selected VM is overperforming, and when the first portion of the streaming application in the selected VM is overperforming and when a second VM that has an operator in a second portion of the flow graph that communicates with an operator in the first portion of the streaming application in the selected VM is also overperforming, the streams manager coalesces the first portion and the second portion to run on a single VM, wherein the streams manager continuously monitors performance of all portions of the flow graph and dynamically changes allocation of portions of the flow graph that are underperforming by splitting at least one portion of the flow graph to different VMs and changes allocation of portions of the flow graph that are overperforming by coalescing at least one portion of the flow graph to a single VM.
1 Assignment
0 Petitions
Accused Products
Abstract
Performance thresholds are defined for operators in a flow graph for a streaming application. A streams manager deploys the flow graph to one or more virtual machines (VMs). The performance of each portion of the flow graph on each VM is monitored. A VM is selected. When the performance of the portion of the flow graph in the selected VM does not satisfy the defined performance threshold(s), a determination is made regarding whether the portion of the flow graph is underperforming or overperforming. When the portion of the flow graph is underperforming, the portion of the flow graph is split into multiple portions that are implemented on multiple VMs. When the portion of the flow graph is overperforming, a determination is made of whether a neighbor VM is also overperforming. When a neighbor VM is also overperforming, the two VMs may be coalesced into a single VM.
-
Citations
6 Claims
-
1. An apparatus comprising:
-
at least one processor; a memory coupled to the at least one processor; a streaming application residing in the memory and executed by the at least one processor, the streaming application comprising a flow graph that includes a plurality of operators that process a plurality of data tuples; a plurality of performance thresholds residing in the memory for the plurality of operators in the flow graph; and a streams manager residing in the memory and executed by the at least one processor, the streams manager deploying the flow graph on at least one virtual machine (VM), monitoring performance of the streaming application, and when performance of a first portion of the streaming application in a selected VM does not satisfy at least one of the plurality of performance thresholds, the streams manager determines when the first portion of the streaming application in the selected VM is overperforming, and when the first portion of the streaming application in the selected VM is overperforming and when a second VM that has an operator in a second portion of the flow graph that communicates with an operator in the first portion of the streaming application in the selected VM is also overperforming, the streams manager coalesces the first portion and the second portion to run on a single VM, wherein the streams manager continuously monitors performance of all portions of the flow graph and dynamically changes allocation of portions of the flow graph that are underperforming by splitting at least one portion of the flow graph to different VMs and changes allocation of portions of the flow graph that are overperforming by coalescing at least one portion of the flow graph to a single VM. - View Dependent Claims (2, 3, 4, 5, 6)
-
Specification