Dynamic Virtual Machine Allocation for Streaming Flow Graphs
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Streaming applications face challenges in efficiently allocating computer resources due to varying workloads, leading to idle resources during low demand and potential overload during peak demand, as traditional methods require fixed hardware allocations that do not adapt dynamically to changing usage patterns.
Innovation Solution
A streams manager dynamically adjusts the allocation of virtual machines (VMs) by monitoring performance thresholds for operators in a flow graph, splitting underperforming portions into multiple VMs and coalescing overperforming VMs into a single VM, allowing for real-time resource optimization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If computer resources are allocated permanently to assure streaming application performance during peak demand, then the streaming application can always function as desired, but many resources will sit idle when the workload is significantly less than maximum
Solution Approach 1:
The patent implements dynamic resource allocation by continuously monitoring streaming application performance metrics and automatically adjusting the number of active virtual machines based on current workload demands. This replaces static permanent allocation with adaptive dynamic allocation, allowing the system to scale resources up during peak demand and scale down during low demand periods, thus maintaining performance reliability while eliminating idle resource waste
Solution Approach 2:
The system employs performance monitoring that continuously feeds back workload metrics to the resource allocation mechanism. This feedback loop enables the system to detect when performance thresholds are met or exceeded, triggering automatic reduction of allocated resources, and to detect when performance degradation occurs, triggering automatic resource scaling. This closed-loop control resolves the contradiction by aligning resource allocation with actual performance needs
2Productivity
If hardware resources are increased to meet increased demand, then the streaming application can handle higher workload, but the system requires corresponding increase in hardware resources
Solution Approach 1:
The patent segments the streaming application into multiple independent virtual machines that can be dynamically provisioned and deprovisioned. Each virtual machine handles a portion of the workload, allowing the system to scale productivity by adding or removing individual VM instances rather than requiring proportional increases in physical hardware infrastructure. This segmentation enables flexible resource utilization and reduces overall device complexity
Solution Approach 2:
The virtualized infrastructure creates universal computing resources that can serve multiple streaming applications and workloads. A single pool of physical hardware resources can be dynamically allocated to different virtual machines based on demand, allowing the same hardware to handle varying workload capacities over time. This multi-functionality eliminates the need for dedicated hardware increases for each productivity requirement
3Reliability
If virtual machines are split to improve performance, then underperforming portions can be distributed to multiple VMs, but the system complexity increases
Solution Approach 1:
The patent implements self-service automation where the system automatically monitors performance metrics, determines when splitting is needed, executes the splitting operation, and manages the redistribution of workload across multiple virtual machines. This automated self-service approach resolves the complexity issue by eliminating the need for manual VM management, allowing performance threshold satisfaction to be maintained through automatic adaptive splitting without proportionally increasing operational complexity
Data Source
AI summary
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.


