Transparent consistent semi-active and passive replication of multithreaded application programs
First Claim
1. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
- at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and
at a Backup replica, receiving said messages containing said mutex ordering information which determines the order in which threads in said Backup replica are granted mutexes;
wherein said messages are multicast according to a protocol that delivers messages reliably and in the same order from the Primary replica to said Backup replicas.
5 Assignments
0 Petitions
Accused Products
Abstract
A system and method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein the application program executes under the control of an operating system having a thread library. The method comprises piggybacking mutex ordering information at the Primary replica onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and receiving the multicast messages at a Backup replica containing the mutex ordering information which determines the order in which threads in the Backup replica are granted mutexes. Thread library interpositioning is preferably utilized to intercept calls to functions in the operating system'"'"'s thread library, so that the system and method of the invention may be implemented transparently. The invention enforces strong replica consistency without the need to count instructions, add significant messaging overhead, or modify application code.
-
Citations
118 Claims
-
1. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
-
at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and at a Backup replica, receiving said messages containing said mutex ordering information which determines the order in which threads in said Backup replica are granted mutexes; wherein said messages are multicast according to a protocol that delivers messages reliably and in the same order from the Primary replica to said Backup replicas. - View Dependent Claims (3)
-
-
2. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
-
at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and at a Backup replica, receiving said messages containing said mutex ordering information which determines the order in which threads in said Backup replica are granted mutexes; wherein strong replica consistency is maintained without counting the number of instructions between non-deterministic events, additional messages for claiming, granting and releasing each mutex, and risk that a result might be communicated to a client but the Backup replicas might lack ordering information necessary for reproducing said result.
-
-
4. A method comprising:
- for replicating a multithreaded application program using the semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising;
employing thread library interpositioning to intercept calls to functions in the operating system'"'"'s thread library to render said application program virtually deterministic; at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and at a Backup replica, receiving said messages that determine the order in which threads in said Backup replica are granted mutexes.
- for replicating a multithreaded application program using the semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising;
-
5. A method for replicating a multithreaded application program using the leader-follower strategy of semi-active or passive replication, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
-
at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted mutexes; at a Backup replica, receiving said messages that determine the order in which threads in said Backup replica are to claim mutexes; and employing thread library interpositioning to intercept calls to functions in the operating system'"'"'s thread library for performing said piggybacking and for controlling said order in which threads in said Backup replica are granted their claims to mutexes. - View Dependent Claims (6, 7)
-
-
8. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
-
providing a consistent multithreading library that is interposed ahead of said operating system'"'"'s thread library so that calls to functions of the operating system'"'"'s thread library can be intercepted to render said application program virtually deterministic; said virtual determinism enables strong replica consistency to be maintained; said consistent multithreading library contains wrapper functions for intercepting calls to functions in said operating system'"'"'s thread library; said application program invokes said wrapper functions of said consistent multithreading library instead of the corresponding functions of said operating system'"'"'s thread library; and wherein in response to a Primary replica invoking a function of said consistent multithreading library to claim a mutual exclusion construct (mutex), said function invokes the corresponding function of the operating system'"'"'s thread library to claim said mutex and piggybacks mutex ordering information onto regular messages multicast to Backup replicas. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method for replicating a multithreaded application program using a semi-active or Passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising:
-
providing a consistent multithreading library that is interposed ahead of said operating system'"'"'s thread library so that calls to functions of the operating system'"'"'s thread library can be intercepted to render said application program virtually deterministic; and communicating mutex ordering information as messages from said primary replica to said Backup replica specifying the order in which threads in said Primary replica have been granted mutexes to establish the order in which threads in said Backup replica are to claim mutexes; wherein said message are communicated using a reliable source-ordered multicast group communication protocol; wherein said multicast protocol delivers messages reliably and in the same source-order to the Backup replicas; wherein said mutexes are granted in the same source-order to the threads at said Backup replicas; and wherein said communicating mutex ordering information comprises piggybacking mutex ordering information onto regular multicast messages. - View Dependent Claims (14, 15)
-
-
16. A method of achieving strong replica consistency for a replicated multithreaded application programs using the semi-active or passive replication strategy, comprising:
-
sanitizing multithreaded application programs by masking multithreading as a source of non-determinism to render said replicated multithreaded application program virtually deterministic wherein said sanitizing comprises; piggybacking mutex ordering information onto regular multicast messages from a Primary replica that specifies the order in which threads in the Primary replica have been granted mutexes; and delivering said messages to a Backup replica that determine the order in which threads in said Backup replica are granted the mutexes that they claim. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method of achieving strong replica consistency for a replicated multithreaded application programs using the semi-active or passive replication strategy, comprising:
-
sanitizing multithreaded application programs by masking multithreading as a source of non-determinism to render said replicated multithreaded application program virtually deterministic; wherein if said Primary replica does not have a regular message to multicast, it multicasts a control message containing said mutex ordering information.
-
-
22. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system, said method comprising:
-
using a multicast group communication protocol to render the multithreaded application program virtually deterministic; said virtual determinism enables strong replica consistency to be maintained; intercepting calls to the functions of the operating system'"'"'s thread library; and multicasting ordering information from said Primary replica to said Backup replicas, regarding the order in which threads in the Backup replicas are to be granted their claims to mutexes; wherein said multicasting of ordering information comprises piggybacking said ordering information onto regular messages that are multicast from said Primary replica to said Backup replicas. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29)
-
-
30. A software mechanism, embodied on a computer readable medium, program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the mechanism comprising:
-
control program code; said control program code at a Primary replica, being configured to piggyback mutex ordering information onto regular multicast messages for specifying the order in which threads in the Backup replicas are granted their claims to mutexes; said control program code configured to deliver said control messages using a multicast group communication protocol that delivers the messages in an order that determines the order in which the threads in different replicas are granted their claims to mutexes. - View Dependent Claims (31)
-
-
32. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the mechanism comprising:
-
a consistent multithreading library that is interposed ahead of the operating system'"'"'s thread library so that calls to functions of said operating system'"'"'s thread library can be intercepted to render said application program virtually deterministic; said virtual determinism enables strong replica consistency to be maintained; said consistent multithreading library contains wrapper functions for intercepting calls to functions of said operating system'"'"'s thread library; said application program invokes said wrapper functions of said consistent multithreading library instead of the corresponding functions of said operating system'"'"'s thread library; wherein when a Primary replica invokes a function of the consistent multithreading library to claim a mutex, said consistent multithreading library function invokes the corresponding function of said operating system'"'"'s thread library and subsequently piggybacks ordering information onto the next message that it multicasts. - View Dependent Claims (33, 34, 35, 36, 37, 38)
-
-
39. A software mechanism, embodied on a computer readable medium, achieving strong replica consistency using a semi-active or passive replication strategy for replicating multithreaded application programs, comprising:
-
control program code configured to sanitize multithreaded application programs by masking multithreading as a source of non-determinism; library interpositioning of said control program code to intercept calls to functions of the operating system'"'"'s thread library for sanitizing said multithreaded application programs; wherein when a Primary replica invokes a wrapper function of said consistent multithreading library to claim a mutex, said consistent multithreading library function invokes the corresponding function of said operating system'"'"'s thread library and then piggybacks ordering information onto the next message that it multicasts to the Backup replicas. - View Dependent Claims (40, 41, 42)
-
-
43. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the mechanism, comprising
a consistent multithreading library that is interposed ahead of said operating system'"'"'s thread library; -
said consistent multithreading library contains wrapper functions for functions of said operating system'"'"'s thread library; said wrapper functions ensure that the threads in the replicas are granted their claims to mutexes in the same order, and similarly for releasing mutexes; said application program invokes the wrapper functions of said consistent multithreading library instead of the corresponding functions in said operating system'"'"'s thread library; and wherein when a Primary replica invokes a function of said consistent multithreading library to claim a mutex, said function invokes the claim function of the operating system'"'"'s thread library and subsequently piggybacks mutex ordering information onto the next regular message that it multicasts. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50)
-
-
51. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system, said mechanism comprising:
-
control program code; said control program code configured to use mutex ordering information piggybacked on regular messages multicast by a source-ordered group communication Protocol from the Primary replica, which dictates the order in which the threads in the Backup replicas are granted their claims to mutexes, to render the replicated multithreaded application program virtually deterministic; wherein if said Primary replica does not have a regular message to multicast, it multicasts a control message containing said mutex ordering information.
-
-
52. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system, said mechanism comprising:
-
control program code; said control program code configured to use mutex ordering information piggybacked on regular messages multicast by a source-ordered group communication protocol from the Primary replica, which dictates the order in which the threads in the Backup replicas are granted their claims to mutexes, to render the replicated multithreaded application program virtually deterministic; said control program code is configured to intercept calls to the operating system'"'"'s thread library; wherein strong replica consistency and application transparency are maintained by interpositioning said consistent multithreading library ahead of said operating system'"'"'s thread library and intercepting calls to functions of said operating system'"'"'s thread library; wherein said functions of said operating system'"'"'s thread library are wrapped by functions of said consistent multithreading library; and wherein said application program invokes the wrapper functions of said consistent multithreading library, instead of the corresponding functions of said operating system'"'"'s thread library, thereby maintaining strong replica consistency and application transparency.
-
-
53. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system, said mechanism comprising:
-
control program code; said control program code configured to use mutex ordering information piggybacked on regular messages multicast by a source-ordered group communication protocol from the Primary replica, which dictates the order in which the threads in the Backup replicas are granted their claims to mutexes, to render the replicated multithreaded application program virtually deterministic; wherein said control program code is configured to allow concurrent processing of threads that do not claim the same mutex simultaneously and threads that claim different mutexes; and wherein strong replica consistency is maintained.
-
-
54. A software mechanism, embodied on a computer readable medium, replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system, said mechanism comprising:
-
control program code; said control program code configured to use mutex ordering information piggybacked on regular messages multicast by a source-ordered group communication protocol from the Primary replica, which dictates the order in which the threads in the Backup replicas are granted their claims to mutexes, to render the replicated multithreaded application program virtually deterministic; wherein said control program code is configured to allow threads to communicate with each other by multicasting messages; wherein said control program code is configured to allow threads to use shared resources; and wherein strong replica consistency of the different replicas is maintained.
-
-
55. A system for executing threads that share resources, within a computing environment that supports semi-active or passive replication of multithreaded application programs, comprising:
-
means for identifying requests for accesses to shared resources by threads in the Primary replica; means for communicating to one or more Backup replicas the order in which said requests are granted to threads in said Primary replica; and means for ordering and granting requests for accesses to shared resources by threads in a Backup replica, in response to the order in which corresponding requests were granted to threads in said Primary replica and communicated by said Primary replica to said Backup replica; wherein said means of communicating information, about claims for shared resources by threads in said Primary replica and about the order in which said claims were granted, comprises piggybacking said information on a message, multicast by said Primary replica to its Backup replicas. - View Dependent Claims (58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72)
-
-
56. A system for executing threads that share resources, within a computing environment that supports semi-active or passive replication of multithreaded application programs, comprising:
-
means for identifying requests for accesses to shared resources by threads in the Primary replica; means for communicating to one or more Backup replicas the order in which said requests are granted to threads in said Primary replica; and means for ordering and granting requests for accesses to shared resources by threads in a Backup replica, in response to the order in which corresponding requests were granted to threads in said Primary replica and communicated by said Primary replica to said Backup replica; wherein said means of communicating information comprises piggybacking information, about claims for shared resources by threads in first said Primary replica and about the order in which said claims were granted, on two or more messages, one message multicast by first said Primary replica to the replicas of other processes, objects or components and one message multicast by second Primary replica of said other processes, objects or components to first said Primary replica and its Backup replicas.
-
-
57. A system for executing threads that share resources, within a computing environment that supports semi-active or passive replication of multithreaded application programs, comprising:
-
means for identifying requests for accesses to shared resources by threads in the Primary replica; means for communicating to one or more Backup replicas the order in which said requests are granted to threads in said Primary replica; and means for ordering and granting requests for accesses to shared resources by threads in a Backup replica, in response to the order in which corresponding requests were granted to threads in said Primary replica and communicated by said Primary replica to said Backup replica wherein lacking regular multicast messages on which to piggyback ordering information, said means for communicating is configured to multicast a control message containing information about claims for shared resources by the threads in said Primary replica and about the order in which said claims were granted.
-
-
73. A system for maintaining strong replica consistency of replicas of a multithreaded application program within a computing environment, using semi-active or passive replication, comprising:
-
means for communicating the order in which access to a shared resource is granted to a thread in the Primary replica; and means for ordering and granting access to a shared resource to threads in a Backup replica in response to the order of granting access to a corresponding shared resource by a corresponding thread in said Primary replica; wherein said means for communicating to multiple replicas comprises a computing environment configured for providing reliable source-ordered multicasting of messages to Backup replicas in response to granting of accesses of shared resources by threads in said Primary replica; and wherein said means of communicating information, about accesses to shared resources by threads in said Primary replica and about the order in which said accesses were granted, comprises piggybacking said information on a message, multicast by said Primary replica to its own Backup replicas. - View Dependent Claims (76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
-
-
74. A system for maintaining strong replica consistency of replicas of a multithreaded application program within a computing environment, using semi-active or passive replication, comprising:
-
means for communicating the order in which access to a shared resource is granted to a thread in the Primary replica; and means for ordering and granting access to a shared resource to threads in a Backup replica in response to the order of granting access to a corresponding shared resource by a corresponding thread in said Primary replica; wherein said means for communicating to multiple replicas comprises a computing environment configured for providing reliable source-ordered multicasting of messages to Backup replicas in response to granting of accesses of shared resources by threads in said Primary replica; and wherein said means of communicating said information comprises piggybacking information, about the granting of accesses to shared resources by threads in first said Primary replica and about the order in which said accesses were granted, on two or more messages, one message multicast by first said Primary replica to the replicas of other processes, objects or components and one message multicast by second Primary replica of said other processes, objects or components to first said Primary replica and its Backup replicas.
-
-
75. A system for maintaining strong replica consistency of replicas of a multithreaded application program within a computing environment, using semi-active or passive replication, comprising:
-
means for communicating the order in which access to a shared resource is granted to a thread in the Primary replica; and means for ordering and granting access to a shared resource to threads in a Backup replica in response to the order of granting access to a corresponding shared resource by a corresponding thread in said Primary replica; wherein said means for communicating to multiple replicas comprises a computing environment configured for providing reliable source-ordered multicasting of messages to Backup replicas in response to granting of accesses of shared resources by threads in said Primary replica; and wherein lacking regular multicast messages on which to piggyback ordering information, said means for communicating is configured to multicast a control message containing information about the granting of corresponding accesses to corresponding shared resources by corresponding threads in said Primary replica and about the order in which said accesses were granted.
-
-
101. A system for executing a replicated multithreaded application program within a computing environment, using a semi-active or passive replication strategy, comprising:
-
means for granting access to shared resources to threads in a Backup replica in response to information received about the order in which access to said shared resources was granted to corresponding threads in said Primary replica; and means for communicating the order of granting access of shared resources by the Primary replica to the Backup replicas; wherein said means for communicating information comprises a routine configured for multicasting messages from said Primary replica to said Backup replicas in response to the granting of accesses of shared resources to threads in said Primary replica; wherein said means for communicating information, about the order of granting accesses to shared resources, by said Primary replica to said Backup replicas, comprises piggybacking said information on a message, multicast by said Primary replica to its Backup replicas. - View Dependent Claims (102, 104, 105, 106, 107, 108)
-
-
103. A system for executing a replicated multithreaded application program within a computing environment, using a semi-active or passive replication strategy, comprising:
-
means for granting access to shared resources to threads in a Backup replica in response to information received about the order in which access to said shared resources was granted to corresponding threads in said Primary replica; and means for communicating the order of granting access of shared resources by the Primary replica to the Backup replicas; wherein said means for communicating information comprises a routine configured for multicasting messages from said Primary replica to said Backup replicas in response to the granting of accesses of shared resources to threads in said Primary replica; wherein said means of communicating information, about the order of granting accesses to shared resources by first said Primary replica to said Backup replicas, comprises piggybacking said information on two or more messages, one message multicast by first said Primary replica to the replicas of other processes, objects or components and one message multicast by second Primary replica of said other processes, objects or components to first said Primary replica and its Backup replicas.
-
-
109. A method of maintaining strong replica consistency for a replicated multithreaded application program, using the semi-active or passive replication strategy, comprising:
-
granting access requests for shared resources to threads in the Backup replicas in response to the order in which corresponding requests were granted to corresponding threads in the Primary replica; wherein said granting of access requests is performed by employing library interpositioning to intercept calls to functions of the operating system'"'"'s thread library; wherein said shared resources are accessed using a mutual exclusion construct; wherein said granting of access requests comprises; piggybacking information, about the order of granting mutual exclusion constructs to threads in said Primary replica, onto regular messages that are multicast from said Primary replica to said Backup replicas, and delivering said messages to said Backup replicas, that determine the order in which threads in said Backup replica are granted their claims to mutual exclusion constructs; wherein said piggybacking of information comprises piggybacking information about claims for shared resources by threads in first said Primary replica and about the order in which said claims were granted, on two or more messages, one message multicast by first said Primary replica to the replicas of other processes, objects or components and one message multicast by second Primary replica of said other processes, objects or components to first said Primary replica and its Backup replicas.
-
-
110. A method of maintaining strong replica consistency for a replicated multithreaded application program, using the semi-active or passive replication strategy, comprising:
-
granting access requests for shared resources to threads in the Backup replicas in response to the order in which corresponding requests were granted to corresponding threads in the Primary replica; wherein said granting of access requests is performed by employing library interpositioning to intercept calls to functions of the operating system'"'"'s thread library; wherein said shared resources are accessed using a mutual exclusion construct; wherein said granting of access requests comprises; piggybacking information, about the order of granting mutual exclusion constructs to threads in said Primary replica, onto regular messages that are multicast from said Primary replica to said Backup replicas, and delivering said messages to said Backup replicas, that determine the order in which threads in said Backup replica are granted their claims to mutual exclusion constructs; wherein if said Primary replica does not have a regular message to multicast, it multicasts a control message containing said information to said Backup replica. - View Dependent Claims (111)
-
-
112. A method of replicating multithreaded application programs in which threads access shared resources, within a computing environment that uses semi-active or passive replication, comprising:
-
claiming shared resources by a thread in the Primary replica; granting said claim to said thread in said Primary replica; communicating to the Backup replicas the order of granting said claim; and granting the corresponding claim of a shared resource to a corresponding thread in each Backup replica, as determined by the order in which corresponding claims to shared resources were granted to corresponding threads in said Primary replica; wherein said claiming, said communicating, and said granting are controlled by the functions of a consistent multithreading library that is interposed ahead of said operating system'"'"'s thread library so that calls to functions of the operating system'"'"'s thread library are intercepted to render said application program virtually deterministic; wherein said communicating of said claim comprises piggybacking information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to said mutual exclusion constructs. - View Dependent Claims (113, 114, 116)
-
-
115. A method of replicating multithreaded application programs in which threads access shared resources, within a computing environment that uses semi-active or passive replication, comprising:
-
claiming shared resources by a thread in the Primary replica; granting said claim to said thread in said Primary replica; communicating to the Backup replicas the order of granting said claim; and granting the corresponding claim of a shared resource to a corresponding thread in each Backup replica, as determined by the order in which corresponding claims to shared resources were granted to corresponding threads in said Primary replica; wherein said claiming, said communicating, and said granting are controlled by the functions of a consistent multithreading library that is interposed ahead of said operating system'"'"'s thread library so that calls to functions of the operating system'"'"'s thread library are intercepted to render said application program virtually deterministic; wherein when said thread T of said Primary replica has been granted a mutual exclusion construct M for its Nth claim of any mutual exclusion construct, a message is multicast that contains the ordering information (T, M, N); and wherein said granting in said Backup replica comprises granting the corresponding mutual exclusion construct M to the corresponding thread T in said Backup replica for the corresponding claim N, only if said ordering information (T, M, N) from said Primary replica has been delivered to, and received by, said Backup replica. - View Dependent Claims (117, 118)
-
Specification