IP Library Granted Patent US 11,899,546
Granted Patent B2
US 11,899,546 · App. 17/804,230 · Granted Feb 13, 2024

Portability of checkpoints of an application using central processing unit (CPU)-specific functions

Inventors: Ashutosh Mehra (Toronto, CA); Daniel Heidinga (Toronto, CA)
Assignee: Red Hat, Inc.
G06F11/1469G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,899,546
App. No.
17/804,230
Granted
Feb 13, 2024
Kind
B2
Abstract

Systems and methods are described for improving portability of checkpoints of an application using central processing unit (CPU)-specific features. In an example, a system includes a source computing system and a destination computing system. The source computing system may be configured to: cause a first execution of an application that includes a function associated with a plurality of implementations; receive a request to resolve an implementation decision for the function; select, based on a set of source CPU-specific features, a source-specific implementation for the first execution of the function; patch, by rendering a resolved callsite table, a call site associated with the function with an address of the source-specific implementation; and send, to a destination computing system, a checkpoint of the application that includes the resolved callsite table. The destination computing system is configured to restore the application by changing the implementation decision based on a set of destination CPU-specific features.

Claims (58)

1. A method for improving portability of checkpoints of an application, the method comprising:

initiating, by a computing system, a restoration of an application previously running on a source computing system, wherein the application includes a function;

identifying, by the computing system, based on the function, a plurality of implementations associated with the function;

rendering, as unresolved, an implementation decision of the function, wherein the implementation decision is associated with selecting an implementation among the plurality of implementations;

determining, by the computing system, based on a query of a central processing unit associated with the computing system, a destination set of CPU-specific features associated with the computing system; and

selecting, based on the set of destination CPU-specific features, a destination-specific implementation of the plurality of implementations for the function.

2. The method of claim 1 , wherein the identifying the plurality of implementations associated with the function comprises:

identifying, within a resolved callsite table associated with the application, a plurality of addresses of a plurality of respective call sites associated with a plurality of respective functions included in the application; and

identifying, among the plurality of respective functions included in the application, the function as having the plurality of implementations.

3. The method of claim 2 , wherein, prior to the rendering, each of the plurality of addresses stored within the resolved callsite table is marked as having a resolved state for the respective plurality of functions.

4. The method of claim 3 , wherein rendering, as unresolved, the implementation decision of the function further comprises:

for each address of each respective call site stored in the resolved callsite table, unresolving the callsite by removing the resolved state for the respective function call.

5. The method of claim 1 , wherein, prior to the rendering, the source computing system resolved the function to be implemented under a source-specific implementation.

6. The method of claim 5 , wherein the source computing system resolved the function to be implemented under a source-specific implementation based on a set of source CPU-specific features associated with the source computing system, wherein the set of destination CPU-specific features is different from the set of source CPU-specific features.

7. The method of claim 1 , further comprising:

patching, by the computing system, a call site associated with the function with the destination-specific implementation.

8. The method of claim 1 , further comprising:

rendering, as resolved, and based on the selection of the destination-specific implementation, the implementation decision of the function.

9. The method of claim 1 , further comprising, prior to initiating the restoration, receiving, by the computing system, a checkpoint of the application from the source computing system.

10. A method for improving portability of checkpoints of an application, the method comprising:

receiving, by a computing system, a request to resolve a function during a first execution of the function, wherein the function is associated with a plurality of implementations;

determining based on a query of a central processing unit (CPU) associated with the computing system, a set of source CPU-specific features associated with the computing system;

selecting, based on the set of source CPU-specific features, a source-specific implementation of the plurality of implementations for the first execution of the function;

patching a callsite associated with the function with an address of the source-specific implementation; and

causing, based on a set of destination CPU-specific features associated with a destination computing system, a re-resolution of the function during a restoration of a checkpoint of the application on the destination computing system.

11. The method of claim 10 , wherein the re-resolution causes a selection of a destination-specific implementation of the plurality of implementation.

12. The method of claim 10 , wherein patching the callsite with the address of the source-specific implementation renders a resolved callsite table.

13. The method of claim 12 , wherein patching the callsite with the address of the source-specific implementation renders a resolved state for the function, wherein the resolved callsite table stores a plurality of addresses of a plurality of respective call sites associated with a plurality of respective functions.

14. The method of claim 13 , wherein the re-resolution of the function comprises:

for one or more addresses corresponding to one or more respective call sites stored in the resolved callsite table, unresolving the respective one or more functions by removing the resolved states for the one or more respective functions.

15. A system for improving portability of checkpoints of an application, the system comprising:

a source computing system comprising:

a source memory, and

a source processor;

wherein the source memory stores instructions that, when executed by the source processor, causes the source computing system to:

cause a first execution of an application, wherein the application includes a function associated with a plurality of implementations;

receive a request to resolve an implementation decision for the function during the first execution, wherein resolving the implementation decision comprises selecting an implementation among the plurality of implementations;

determine, based on a query of a central processing unit (CPU) associated with the source computing system, a set of source CPU-specific features associated with the source computing system;

select, based on the set of source CPU-specific features, a source-specific implementation of the plurality of implementations for the first execution of the function;

patch, by rendering a resolved callsite table, a call site associated with the function with an address of the source-specific implementation;

send, to a destination computing system, a checkpoint of the application, wherein the checkpoint includes the resolved callsite table; and

cause, during a restoration of the application, based on a set of destination CPU-specific features associated with the destination computing system, the destination computing system to change the implementation decision.

16. The system of claim 15 , further comprising:

the destination computing system comprising a destination memory and a destination processor;

wherein the destination memory stores instructions that, when executed by the destination processor, causes the destination computing system to:

initiate a restoration of the application;

identify, by tracing the address of the call site associated with the function, the plurality of implementations associated with the function;

render, as unresolved, the implementation decision for the function;

determine based on a query of a central processing unit (CPU) associated with the destination computing system, the set of destination CPU-specific features associated with the destination computing system; and

select, based on the set of destination CPU-specific features, a destination-specific implementation of the plurality of implementations for a second execution of the restored application.

17. The system of claim 16 , wherein the destination memory stores instructions that, when executed by the destination processor, causes the destination computing system to identify the plurality of implementations associated with the function by:

identifying, within the resolved callsite table associated with the application, a plurality of addresses of a plurality of respective call sites associated with a plurality of respective functions of the application; and

identifying, among the plurality of respective functions of the application, the function as having the plurality of implementations.

18. The system of claim 17 , wherein, prior to rendering the implementation decision as unresolved, each of the plurality of addresses stored within the resolved callsite table is marked as having a resolved state for the respective plurality of functions.

19. The system of claim 18 , wherein the destination memory stores instructions that, when executed by the destination processor, causes the destination computing system to render, as unresolved, the implementation decision of the function by:

for each address of each respective call site stored in the resolved callsite table, unresolving the respective function by removing the resolved state for the respective function.

20. The system of claim 19 , wherein the destination memory stores instructions that, when executed by the destination processor, further causes the destination system to:

patch the call site associated with the function with an address of the destination-specific implementation.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2022
From: MEHRA, ASHUTOSH; HEIDINGA, DANIEL
To: RED HAT, INC.
Reel/Frame 060626/0911 →
Continuity (1)
Related Publication 20230385162A1 · Nov 30, 2023