ALLOCATING OPERATORS OF A STREAMING APPLICATION TO VIRTUAL MACHINES BASED ON MONITORED PERFORMANCE
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
15 Claims
-
1-7. -7. (canceled)
-
8. A computer-implemented method executed by at least one processor for running a streaming application, the method comprising:
-
deploying a streaming application that comprises a flow graph that includes a plurality of operators that process a plurality of data tuples on at least one virtual machine (VM); defining a plurality of performance thresholds for the plurality of operators in the flow graph; 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, determining 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, coalescing the first portion and the second portion to run on a single VM. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer-implemented method executed by at least one processor for running a streaming application, the method comprising:
-
deploying a streaming application that comprises a flow graph that includes a plurality of operators that process a plurality of data tuples on a single virtual machine (VM) by requesting a cloud manager provision the single VM, and after the cloud manager provisions the single VM, the streams manager deploys the flow graph to the single VM; defining a plurality of performance thresholds for the plurality of operators in the flow graph, wherein the plurality of performance thresholds includes at least one threshold that indicates when at least one operator in the flow graph is underperforming and at least one threshold that indicates when at least one operator in the flow graph is overperforming; monitoring performance of the streaming application; when performance of the streaming application in the single VM does not satisfy at least one of the plurality of performance thresholds, determining when the streaming application in the single VM is underperforming, and when the streaming application in the single VM is underperforming, splitting the streaming application in the single VM into first and second portions of the streaming application that are deployed to first and second VMs by requesting the cloud manager provision the first and second VMs; when performance of the first portion of the streaming application in the first VM does not satisfy at least one of the plurality of performance thresholds, determining when the first portion of the streaming application in the first VM is underperforming, and when the first portion of the streaming application in the first VM is underperforming, splitting the first portion of the streaming application in the first VM into third and fourth portions of the streaming application that are deployed to respective third and fourth VMs by requesting the cloud manager provision the third and fourth VMs; when performance of the second portion of the streaming application in the second VM does not satisfy at least one of the plurality of performance thresholds, determining when the second portion of the streaming application in the second VM is underperforming, and when the second portion of the streaming application in the second VM is underperforming, splitting the second portion of the streaming application in the second VM into fifth and sixth portions of the streaming application that are deployed to respective fifth and sixth VMs; when performance of the first portion of the streaming application in the first VM does not satisfy the at least one of the plurality of performance thresholds, determining when the first portion of the streaming application in the first VM is overperforming, and when the first portion of the streaming application in the first VM is overperforming and when a different VM that has an operator in a seventh 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, coalescing the first portion and the seventh portion to run on a single VM; and continuously monitoring performance of all portions of the flow graph and dynamically changing allocation of portions of the flow graph that are underperforming by splitting at least one portion of the flow graph to different VMs and changing allocation of portions of the flow graph that are overperforming by coalescing at least one portion of the flow graph to a single VM.
-
Specification