Method and system for providing coordinated checkpointing to a group of independent computer applications
AssigneeOpen Invention Network, LLC
InventorsKeith Richard Backensto, Allan Havemose
Life of this patent
Estimating the term…
Abstract
A system and method thereof for performing loss-less migration of an application group. In an exemplary embodiment, the system may include a high-availability services module structured for execution in conjunction with an operating system, and one or more computer nodes of a distributed system upon which at least one independent application can be executed upon. The high-availability services module may be structured to be executable on the one or more computer nodes for loss-less migration of the one or more independent applications, and is operable to perform checkpointing of all state in a transport connection.
Claims18
A system, comprising:
- interceptors configured to intercept fork( ) and exec( );
- a checkpointer structured to checkpoint and restore applications that use fork( ) and exec( ), and structured to incrementally checkpoint and restore applications that write memory pages from kernel space;
- one or more computer nodes of a distributed system upon which one or more applications can be loaded and executed;
- a high-availability services module is structured to be executable on the one or more computer nodes for loss-less migration of the one or more applications, and is operable to perform checkpointing and restoration of all state in a transport connection;
- a shared memory comprising one or more shared memory locations;
- and
- wherein said checkpointer is configured to store in said shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “SystemV shared memory segment ID” table;
- wherein the system is configured to upon issuing an exec call by an application, passing control of the application to the interceptors, calling, by the interceptors, an operating system exec( ), overlaying a new image onto an existing application process, using an environment variable to preserve across exec( ) a number of times a process has exec'ed, and running said interceptors for fork( ) an exec( ) in user-space;
- wherein the system is configured to call the application's entry point to run the application;
- wherein said shared memory is configured to be outside an address space of the applications;
- and
- wherein a custom_init( ) function is preloaded.
A method, comprising:
- migrating without loss an application group comprising one or more independent applications each executing on a primary node from the respective primary nodes of the one or more independent applications to at least one backup node;
- installing interceptors for fork( ) and exec( );
- preloading a custom_init( ) function;
- maintaining transparency to a client connected to an independent application on a primary node over a transport connection;
- restoring the application group, including all of the independent applications, from checkpoints in response to initiating recovery of the application group;
- upon issuing an exec( ) call by an independent application, passing control of the independent application to the interceptors, calling, by the interceptors, an operating system exec( ), overlaying a new image onto an existing independent application process, using an environment variable to preserve across exec( ) a number of times a process has exec'ed, and running said interceptors for fork( ) and exec( ) in user-space;
- and
- calling an independent application's entry point to run the independent application;
- wherein said one or more independent applications can use both fork( ) and exec( );
- wherein said checkpoints store in a shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “SystemV shared memory segment ID” table;
- and
- wherein the shared memory is configured to be outside an address space of the independent applications.
A method, comprising:
- installing interceptors for fork( ) and exec( );
- preloading a custom_init( ) function;
- loading and running an independent application wherein said independent application is a member of an application group comprised of one or more independent applications;
- upon the application issuing a fork call, passing control of the application to the interceptors;
- calling, by the interceptors, an operating system fork( ), creating a new application process from a parent process, passing control of the application back to the interceptors;
- and upon the application issuing an exec call, passing control of the application to the interceptors;
- calling, by the interceptors, an operating system exec( ) overlaying a new application image onto said new application process, passing control of the application back to the interceptors, and running said interceptors for fork( ) and exec( ) in user-space;
- calling an application's entry point to run the application;
- and
- storing in a shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “SystemV shared memory segment ID” table;
- wherein the shared memory is configured to be outside an address space of the independent application.
A method, comprising:
- preloading a custom_init( ) function;
- loading an independent application;
- installing interceptors for fork( ) and exec( );
- storing in shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “System V shared memory segment ID” table;
- and
- calling the independent application's entry point to run the independent application;
- upon the application issuing an exec call, passing control of the application to the interceptors, calling, by the interceptors, an operating system exec( ), overlaying a new application image onto an existing application process, and running said interceptors for fork( ) and exec( ) in user-space;
- wherein the shared memory is configured to be outside an address space of the independent application.
A method, comprising:
- installing interceptors for fork( ) and exec( );
- initializing a new image, restoring all internal state from shared memory, and executing the new image;
- storing in a shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “SystemV shared memory segment ID” table;
- and
- upon issuing an exec call by an independent application, passing control of the application to the interceptors, calling, by the interceptors, an operating system exec( ) overlaying a new image onto an existing application process, and using an environment variable to preserve across exec( ) a number of times a process has exec'ed;
- wherein the shared memory is configured to be outside an address space of the independent application.
A method, comprising:
- installing interceptors for fork( ) and exec( );
- initializing an application image, restoring all internal state from a first shared memory, and executing the application image;
- storing in a second shared memory at least one of a global application state including checkpoint barrier information having a barrier semaphore ID, a Virtual PID table, a Pipe table, a Semaphore ID table, and a “System V shared memory segment ID” table;
- and
- upon an application issuing an exec call, passing control of the application to the interceptors, calling, by the interceptors, an operating system exec( ), overlaying a new image onto an existing application process, and using an environment variable to preserve, across exec, a number of times a process must exec prior to restoring its data;
- wherein said first and second shared memory are configured to be outside an address space of the application;
- and
- wherein said interceptors for fork( ) and exec( ) are configured to operate user-space.
Dependencies are inferred from the claim text.