Patent ID: 8132173

Claim:
A method for executing an application on a plurality of nodes, comprising: synchronizing a first clock of a first node of the plurality of nodes and a second clock of a second node of the plurality of nodes; configuring a first hypervisor on the first node to execute a first application domain and a first privileged domain, wherein configuring the first hypervisor comprises allocating a first number of cycles of the first clock to the first privileged domain; configuring a second hypervisor on the second node to execute a second application domain and a second privileged domain, wherein configuring the second hypervisor comprising allocating the first number of cycles of the second clock to the second privileged domain, and wherein the first number of cycles of the second clock is a same number of cycles as the first number of cycles of the first clock; and executing the application in the first application domain and the second application domain, wherein executing the application in the first application domain comprises: for each asynchronous input and output (I/O) request from the application: issuing the asynchronous I/O request using a virtual device driver, wherein the virtual device driver sends the asynchronous I/O request to the first privileged domain via the first hypervisor, wherein the first application domain and the second application domain execute synchronously within a margin of error based on the same number of cycles being allocated to the first hypervisor and the second hypervisor, executing the first privileged domain and the second privileged domain, wherein executing the first privileged domain comprises: for each asynchronous I/O request from the application via the first hypervisor: issuing the asynchronous I/O request using a physical device driver to obtain a result; and transmitting the result to the first application domain via the first hypervisor, wherein the first privileged domain and the second privileged domain execute synchronously within the margin of error based on the same number of cycles being allocated to the first privileged domain and the second privileged domain, wherein a first portion of the first application domain executes continuously on a first subset of a first plurality of processing units of the first node, wherein a first portion of the second application domain executes continuously on a first subset of a second plurality of processing units of the second node, wherein a second portion of the first application domain shares a second subset of the first plurality of processing units with the first privileged domain, and wherein a second portion of the second application domain shares a second subset of the second plurality of processing units with the second privileged domain.