Distributed Program Execution State Management
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Managing large-scale computing resources in data centers has become increasingly complex due to the scale and scope of operations, and existing virtualization technologies do not effectively handle the distribution and resilience of program execution across multiple computing nodes.
Innovation Solution
The described techniques involve decomposing program execution into multiple jobs that can be executed in parallel or distributed manner across distinct computing nodes, with the ability to temporarily terminate and resume execution jobs by persistently storing intermediate states, and using a Distributed Program Execution Service System Manager to manage these processes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If program execution is distributed across multiple computing nodes, then resource utilization and scalability are improved, but system complexity and difficulty of managing execution state increase
Solution Approach 1:
The patent segments program execution into multiple independent execution jobs that can be distributed across different computing nodes. Each execution job maintains its own state independently, allowing the system to manage complexity by breaking down the overall execution into manageable units that can be orchestrated by the system manager
Solution Approach 2:
The system manager acts as an intermediary between execution jobs and computing nodes. It maintains a registry of execution jobs, tracks their states, and coordinates their distribution across nodes. This intermediary layer abstracts the complexity of distributed state management from individual execution jobs
2Adaptability or versatility
If execution jobs can be temporarily terminated and resumed, then system flexibility and resource allocation are improved, but reliability of maintaining execution state is challenged
Solution Approach 1:
The system performs preliminary actions by persistently storing the state of execution jobs before termination. The system manager saves execution state to durable storage mechanisms, ensuring that when jobs are resumed, their state is reliably restored without loss, thus maintaining reliability while enabling flexibility
Solution Approach 2:
The system creates copies of execution job states and stores them in a registry maintained by the system manager. This copying mechanism ensures that the original execution state is preserved and can be restored if needed, maintaining reliability while allowing the original execution to be terminated or moved
3Loss of time
If intermediate execution states are persistently stored, then resumption capability is improved, but storage requirements and system overhead increase
Solution Approach 1:
The patent applies local quality by storing execution state information locally within the system manager's registry rather than requiring centralized persistent storage for all jobs. Each execution job's state is stored only where it is actively managed, reducing overall storage requirements while maintaining resumption capability for active and recently terminated jobs
Data Source
AI summary
Techniques are described for managing distributed execution of programs. In at least some situations, the techniques include decomposing or otherwise separating the execution of a program into multiple distinct execution jobs that may each be executed on a distinct computing node, such as in a parallel manner with each execution job using a distinct subset of input data for the program. In addition, the techniques may include temporarily terminating and later resuming execution of at least some execution jobs, such as by persistently storing an intermediate state of the partial execution of an execution job, and later retrieving and using the stored intermediate state to resume execution of the execution job from the intermediate state. Furthermore, the techniques may be used in conjunction with a distributed program execution service that executes multiple programs on behalf of multiple customers or other users of the service.


