VM Checkpoint Portability Through Selective JIT Code Decompilation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Virtual machine-based applications face challenges in seamless migration across computing systems with dissimilar CPU-specific features, leading to potential performance compromises and fatal errors during restoration.
Innovation Solution
A method and system that tracks non-portable units of applications using CPU-specific features, designates them as non-entrant compiled code, and decompiles stack frames to ensure compatibility across systems, allowing dynamic recompilation based on destination system capabilities.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the application is JIT compiled to utilize CPU-specific features of the source system, then performance is optimized, but portability to destination systems with different CPU features is compromised
Solution Approach 1:
The application code is divided into portable and non-portable units based on CPU-specific feature dependencies. The JIT compiler identifies and separates code segments that rely on source system CPU features from those that are universally compatible, allowing selective handling during checkpoint migration.
Solution Approach 2:
The system performs preliminary analysis of JIT-compiled code to identify non-portable units before checkpoint creation. Stack frames associated with non-portable units are decompiled in advance, and these units are designated as non-entrant compiled code, preparing the application for successful restoration on destination systems with different CPU features.
2Productivity
If non-portable units are executed on the destination system, then performance optimization is maintained, but fatal errors may occur due to incompatible CPU features
Solution Approach 1:
The system applies preliminary anti-action by decompiling stack frames associated with non-portable units and designating them as non-entrant compiled code before checkpoint restoration. This prevents execution of code that would cause fatal errors on destination systems with incompatible CPU features, while still allowing the application to function using portable code paths.
3Adaptability or versatility
If all code is decompiled to ensure portability, then compatibility across systems is achieved, but performance optimization from JIT compilation is lost
Solution Approach 1:
The system applies local quality by treating different code units differently based on their portability characteristics. Portable units retain JIT compilation for performance optimization, while only non-portable units are decompiled and designated as non-entrant. This selective approach maintains performance where possible while ensuring portability where needed.
Data Source
AI summary
Systems and methods are described for improving portability of virtual machine checkpoints without affecting system performance. In an example, a method includes determining, by a source computing system having a processor, via a virtual machine, and based on a runtime of an application on the virtual machine, one or more units of the application to compile as one or more non-portable units of the application; designating, as a non-entrant compiled code, the one or more non-portable units of the application, wherein the designation prevents execution of the one or more non-portable units; decompiling, by the source computing system, one or more stack frames associated with the one or more non-portable units of the application; sending, by the source computing system to a destination computing system, a checkpoint for the application; restoring, by the destination computing system via the virtual machine, from the checkpoint for the application, the runtime of the application.


