IP Library Granted Patent US 9,003,229
Granted Patent B1
US 9,003,229 · App. 14/170,774 · Granted Apr 7, 2015

Method and system for providing coordinated checkpointing to a group of independent computer applications

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 9,003,229
App. No.
14/170,774
Granted
Apr 7, 2015
Kind
B1
Abstract

A method and system of checkpointing single process application groups and multi-process application groups. In an exemplary embodiment, the method may include creating at least one full checkpoint for each application in an application group, and creating at least one incremental application checkpoint for each application in the application group. Further, each of the at least one incremental application checkpoint may be automatically merged against a corresponding full application checkpoint. Further, checkpointing may be synchronized across all applications in the application group. In the exemplary embodiment, each application may use both fork( ) and exec( ) in any combination.

Claims (43)

1. A method, comprising:

creating at least one full application checkpoint for one or more applications;

creating at least one incremental application checkpoint for the one or more applications;

merging the at least one incremental application checkpoint and the at least one full application checkpoint;

synchronizing checkpointing across the one or more applications; and

preloading interceptors for fork( ) and exec( );

wherein said interceptor for exec( ) preserves existing application state by storing said application state in memory prior to calling a system call exec( ) and restoring said application state from the memory after the system call exec( ) returns.

2. The method according to claim 1 , wherein the one or more applications in the application group are started from one binary and said one binary is a root application loading said one or more applications.

3. The method according to claim 1 , wherein the one or more applications in the application group are independently started and said one or more applications join said application group upon loading.

4. The method according to claim 1 , wherein the one or more applications in the application group comprise a shell script.

5. The method according to claim 1 , further comprising using an environment variable to store a number of times a process has exec( )'ed across exec( ).

6. The method according to claim 1 , further comprising using incremental checkpointing across fork( ) without requiring an additional full checkpoint.

7. The method according to claim 1 , further comprising passing information across an exec( ) call using environment variables combined with the memory.

8. The method according to claim 1 , wherein creating the at least one incremental application checkpoint includes using memory pages written from kernel space.

9. The method according to claim 8 , wherein error messages are handled if caused by the checkpointer, or propagated to the application if not caused by the checkpointer.

10. The method according to claim 1 , wherein the checkpointing does not modify the individual applications in the application group.

11. The method according to claim 1 , further comprising restoring the application group in its entirety from application group checkpoints.

12. The method according to claim 11 , further comprising:

performing storage checkpointing of associated files; and

performing restoration of storage checkpoints when restoring the application group checkpoints.

13. The method according to claim 1 , further comprising using an environment variable to preserve, across exec, the number of times a process must exec prior to restoring its data.

14. The method according to claim 1 , further comprising using a customized system library.

15. The method according to claim 1 , wherein standard system libraries are used, and customization is done using interception.

16. A non-transitory computer readable storage medium comprising instructions for:

creating at least one full application checkpoint for one or more applications;

creating at least one incremental application checkpoint for the one or more applications;

merging the at least one incremental application checkpoint and the at least one full application checkpoint;

synchronizing checkpointing across the one or more applications; and

preloading interceptors for fork( ) and exec( );

wherein said interceptor for exec( ) preserves existing application state by storing said application state in memory prior to calling a system call exec( ) and restoring said application state from the memory after the system call exec( ) returns.

17. The non-transitory computer readable storage medium of claim 16 comprising instructions for using an environment variable to store a number of times a process has exec( )'ed across exec( ).

18. The non-transitory computer readable storage medium of claim 16 comprising instructions for using incremental checkpointing across fork( ) without requiring an additional full checkpoint.

19. The non-transitory computer readable storage medium of claim 16 comprising instructions for passing information across an exec( ) call using environment variables combined with the memory.

20. A system, comprising:

a processor; and

memory;

wherein the processor is configured to:

create at least one full application checkpoint for one or more applications;

create at least one incremental application checkpoint for the one or more applications;

merge the at least one incremental application checkpoint and the at least one full application checkpoint;

synchronize checkpointing across the one or more applications; and

preload interceptors for fork( ) and exec( );

wherein said interceptor for exec( ) preserves existing application state when said application state is stored in memory prior to calling a system call exec( ) and said application state is restored from the memory after the system call exec( ) returns.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2023
From: OPEN INVENTION NETWORK LLC
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 062401/0512 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2022
From: BACKENSTO, KEITH RICHARD; HAVEMOSE, ALLAN
To: OPEN INVENTION NETWORK LLC
Reel/Frame 059216/0340 →