Accelerating data intensive computing applications by reducing overhead associated with communication protocols
First Claim
1. A method for accelerating communication between a first guest application and a second guest application executing on at least one data storage node, comprising:
- generating a first virtual machine for the first guest application and a second virtual machine for the second guest application, wherein each virtual machine includes at least a virtual memory and a multiple layer communication protocol stack based at least in part on a plurality of layers of the Open Systems Interconnect model;
if the first guest application and the second guest application are determined to be co-resident on a data storage node, bypassing each lower layer of the communication protocol stack to directly communicate a request for data from the first guest application to the second guest application at a highest layer of the corresponding communication protocol stacks of their virtual machines, wherein the highest layer is an application layer that enables communication independent of a TCP/IP layer socket number;
determining a pointer to data requested by the first guest application, wherein the data resides in at least one physical page of memory at the data storage node and is controlled by the second guest application, wherein the first guest application maps the at least physical page into its virtual memory and the second guest application releases the at least one physical page for use by the first guest application;
providing the pointer to the first guest application to access the data in the at least one physical page of memory at the data storage node; and
if the first guest application and the second guest application are determined to be co-resident in a cluster on separate data storage nodes, employing a first network coupled between the separate data storage nodes for communication between the first and second guest applications, wherein the first network is a high bandwidth network.
9 Assignments
0 Petitions
Accused Products
Abstract
Various embodiments are directed toward improving Virtual Machine performance by reducing the amount of communication protocol processing performed between co-resident Virtual Machine guest applications executing on the same physical machine. Overhead can be reduced by short-circuiting the full communication protocol stack when a plurality of Virtual Machine guest applications are hosted and executing on the same physical machine such as a data storage node or a compute accelerator node. Improvements may also be realized by enabling the sharing in virtual memory of physical memory pages between co-resident Virtual Machine guest applications, and employing a low latency high bandwidth network for enabling guest applications to communicate with each other that are located in different nodes in a data storage cluster.
20 Citations
12 Claims
-
1. A method for accelerating communication between a first guest application and a second guest application executing on at least one data storage node, comprising:
-
generating a first virtual machine for the first guest application and a second virtual machine for the second guest application, wherein each virtual machine includes at least a virtual memory and a multiple layer communication protocol stack based at least in part on a plurality of layers of the Open Systems Interconnect model; if the first guest application and the second guest application are determined to be co-resident on a data storage node, bypassing each lower layer of the communication protocol stack to directly communicate a request for data from the first guest application to the second guest application at a highest layer of the corresponding communication protocol stacks of their virtual machines, wherein the highest layer is an application layer that enables communication independent of a TCP/IP layer socket number; determining a pointer to data requested by the first guest application, wherein the data resides in at least one physical page of memory at the data storage node and is controlled by the second guest application, wherein the first guest application maps the at least physical page into its virtual memory and the second guest application releases the at least one physical page for use by the first guest application; providing the pointer to the first guest application to access the data in the at least one physical page of memory at the data storage node; and if the first guest application and the second guest application are determined to be co-resident in a cluster on separate data storage nodes, employing a first network coupled between the separate data storage nodes for communication between the first and second guest applications, wherein the first network is a high bandwidth network. - View Dependent Claims (2, 3, 4)
-
-
5. A data storage node apparatus for accelerating communication between a first guest application and a second guest application, comprising:
-
a physical memory for storing data and instructions; a data storage device for storing data and instructions; and a processor for executing instructions that perform actions, including; enabling generating a first virtual machine for the first guest application and a second virtual machine for the second guest application, wherein each virtual machine includes at least a virtual memory and a multiple layer communication protocol stack based at least in part on a plurality of layers of the Open Systems Interconnect model; if the first guest application and the second guest application are determined to be co-resident on a data storage node, bypassing each lower layer of the communication protocol stack to directly communicate a request for data from the first guest application to the second guest application at a highest layer of the corresponding communication protocol stacks of their virtual machines, wherein the highest layer is an application layer that enables communication independent of a TCP/IP layer socket number; determining a pointer to data requested by the first guest application, wherein the data resides in at least one physical page of memory at the data storage node and is controlled by the second guest application, wherein the first guest application maps the at least physical page into its virtual memory and the second guest application releases the at least one physical page for use by the first guest application; providing the pointer to the first guest application to access the data in the at least one physical page of memory at the data storage node; and if the first guest application and the second guest application are determined to be co-resident in a cluster on separate data storage nodes, employing a first network coupled between the separate data storage nodes for communication between the first and second applications, wherein the first network is a high bandwidth network. - View Dependent Claims (6, 7, 8)
-
-
9. A processor readable non-volatile hardware storage media that includes instructions for accelerating communication between a first guest application and a second guest application executing on at least one data storage node, wherein the execution of the instructions causes actions, comprising:
-
generating a first virtual machine for the first guest application and a second virtual machine for the second guest application, wherein each virtual machine includes at least a virtual memory and a multiple layer communication protocol stack based at least in part on a plurality of layers of the Open Systems Interconnect model; if the first guest application and the second guest application are determined to be co-resident on a data storage node, bypassing each lower layer of the communication protocol stack to directly communicate a request for data from the first guest application to the second guest application at a highest layer of the corresponding communication protocol stacks of their virtual machines, wherein the highest layer is an application layer that enables communication independent of a TCP/IP layer socket number; determining a pointer to data requested by the first guest application, wherein the data resides in at least one physical page of memory at the data storage node and is controlled by the second guest application, wherein the first guest application maps the at least physical page into its virtual memory and the second guest application releases the at least one physical page for use by the first guest application; providing the pointer to the first guest application to access the data in the at least one physical page of memory at the data storage node; and if the first guest application and the second guest application are determined to be co-resident in a cluster on separate data storage nodes, employing a first network coupled between the separate data storage nodes for communication between the first and second guest applications, wherein the first network is a high bandwidth network. - View Dependent Claims (10, 11, 12)
-
Specification