Method and system for providing checkpointing to windows application groups
First Claim
1. A method comprising:
- creating at least one full checkpoint for an application group, wherein each of said at least one full checkpoint is comprised of a full checkpoint for each application in said application group, and at least one incremental checkpoint for each application in said application group;
merging each of said at least one incremental checkpoint for each application in said application group against a corresponding application full checkpoint;
creating an application group checkpointing thread and a checkpointing thread for each of the one or more applications comprising the application group;
triggering the application group'"'"'s checkpointer thread using asynchronous procedure calls (APC), wherein the application group'"'"'s checkpointer thread further triggers the checkpointing threads for each of the one of more applications using APC;
creating a shared barrier synchronization barrier accessible by the one or more applications comprising the application group, wherein said application group checkpointer thread releases each application'"'"'s checkpointer thread from the shared barrier synchronization barrier to checkpoint each individual application; and
creating, for each application in said application group, a buffer filled with machine-executable instructions to load a checkpoint library, call the checkpoint library'"'"'s initialization function, and jump to the application'"'"'s original entry point, wherein the buffer filled with machine-executable instructions for an application is inserted into the address space of said application and the application'"'"'s entry point is changed to begin execution at the first instruction in said buffer;
wherein said application group is comprised of one or more applications, each application is comprised of one or more processes, and each process comprised of one or more threads; and
wherein checkpoints are comprised of at least one or more of thread stacks, code segments, data segments, dynamically allocated segments, heaps, APC queues, CPU registers, instruction pointer, and kernel attributes.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system of checkpointing multi-threaded applications, and multi-process application groups on WINDOWS® operating systems. 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. Further, checkpointing may be configured to perform live migration. In the exemplary embodiment, checkpoints are triggered asynchronously using Asynchronous Procedure Calls (APC).
-
Citations
22 Claims
-
1. A method comprising:
-
creating at least one full checkpoint for an application group, wherein each of said at least one full checkpoint is comprised of a full checkpoint for each application in said application group, and at least one incremental checkpoint for each application in said application group; merging each of said at least one incremental checkpoint for each application in said application group against a corresponding application full checkpoint; creating an application group checkpointing thread and a checkpointing thread for each of the one or more applications comprising the application group; triggering the application group'"'"'s checkpointer thread using asynchronous procedure calls (APC), wherein the application group'"'"'s checkpointer thread further triggers the checkpointing threads for each of the one of more applications using APC; creating a shared barrier synchronization barrier accessible by the one or more applications comprising the application group, wherein said application group checkpointer thread releases each application'"'"'s checkpointer thread from the shared barrier synchronization barrier to checkpoint each individual application; and creating, for each application in said application group, a buffer filled with machine-executable instructions to load a checkpoint library, call the checkpoint library'"'"'s initialization function, and jump to the application'"'"'s original entry point, wherein the buffer filled with machine-executable instructions for an application is inserted into the address space of said application and the application'"'"'s entry point is changed to begin execution at the first instruction in said buffer; wherein said application group is comprised of one or more applications, each application is comprised of one or more processes, and each process comprised of one or more threads; and wherein checkpoints are comprised of at least one or more of thread stacks, code segments, data segments, dynamically allocated segments, heaps, APC queues, CPU registers, instruction pointer, and kernel attributes. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method for achieving transparent integration of an application group comprised of one or more applications with a high-availability protection program, the method comprising:
-
injecting registration code into each application of the application group when applications are launched and registering each application of application group with the high-availability protection program; constructing an in-memory buffer with machine executable instructions to load a checkpoint library into each newly launched application and call the checkpoint library'"'"'s initialization function directly, wherein the buffer filled with machine-executable instructions for an application is inserted into the address space of said application and the application'"'"'s entry point is changed to begin execution at the first instruction in said buffer; creating a coordinator checkpointer thread and a checkpointer lock; detecting a failure in execution of the application group or any of the applications within the group; and restoring the application group and the applications within the application group from its most recent checkpoint on a backup node in response to said detecting a failure, wherein kernel attributes of each application process are restored individually, addresses of objects references an EPROCESS are changed to reflect their new memory addresses, and restoration of memory segments include one or more of thread stacks, code segments, data segments, dynamic segments, heaps, APC queues, and file mapped segments wherein each of the one or more applications are comprised of one or more processes, and each of the one or more processes comprised of one or more threads; wherein the coordinator'"'"'s checkpointer thread acquires the checkpointer lock and waits for each application in said application group to restore from a checkpoint before releasing said checkpointer lock. - View Dependent Claims (22)
-
Specification