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.
Legal claims defining the scope of protection, as filed with the USPTO.
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 with a corresponding one of 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 shared memory prior to calling a system call exec( ) and restoring said application state from the shared 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 shared 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 7 , 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 10 , 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 with a corresponding one of 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 shared memory prior to calling a system call exec( ) and restoring said application state from the shared 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 shared memory.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 28, 2012
February 4, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.