Accelerating a distributed component architecture over a network using a direct marshaling
First Claim
1. A method of communication between a first object located on a first computer having a first memory location and a Remote Procedure Call run-time layer, wherein the RPC run-time layer has access to an RPC buffer, and a second object located on a second computer, the first and second computers connected by a network, accessed by the first computer through a network interface card on the first computer, the method comprising:
- calling an interface of the second object with the first object;
placing in the RPC buffer a first pointer to a first parameter, wherein the first parameter is used in the calling of the interface of the second object and wherein the first pointer points to the first parameter in the first memory location;
treating, in the RPC run-time layer, the first pointer as a scatter-gather entry; and
transmitting, by the network interface card, the first parameter pointed to by the first pointer by reading the first parameter out of the first memory location.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for improving the performance of a distributed object model over a network is disclosed. A client computer contains a client object which can call an interface on a server object located on a server computer. Rather than copying all of the call parameters into an RPC buffer for transmission across the network, a network interface card with scatter-gather capability can be used. The RPC data can contain only a list of pointers into the client memory and a size of each parameter. The network interface card can then grab the parameters directly from the client memory using the list in the RPC buffer without the need to copy the data itself. At the server side, the network interface card can place the parameters into an RPC buffer, or if the size is known beforehand, directly into the server memory. The server can also access the parameters directly from the RPC buffer. On the return, the server can use a callback function to indicate when its network interface card has finished sending the response data so that the server does not clear its memory prematurely. At the client side, if the size of the response is not known, and the data is placed into the RPC buffers, it can be copied from the RPC buffer into the client memory.
-
Citations
26 Claims
-
1. A method of communication between a first object located on a first computer having a first memory location and a Remote Procedure Call run-time layer, wherein the RPC run-time layer has access to an RPC buffer, and a second object located on a second computer, the first and second computers connected by a network, accessed by the first computer through a network interface card on the first computer, the method comprising:
-
calling an interface of the second object with the first object;
placing in the RPC buffer a first pointer to a first parameter, wherein the first parameter is used in the calling of the interface of the second object and wherein the first pointer points to the first parameter in the first memory location;
treating, in the RPC run-time layer, the first pointer as a scatter-gather entry; and
transmitting, by the network interface card, the first parameter pointed to by the first pointer by reading the first parameter out of the first memory location.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
placing in the RPC buffer the first pointer to the first parameter and a second pointer to a second parameter, wherein the second parameter is used in the calling of the interface of the second object and wherein the second pointer points to the second parameter in a second memory location on the first computer;
treating, in the RPC run-time layer, the second pointer as another scatter-gather entry; and
transmitting, by the network interface card, the first parameter pointed to by the first pointer by reading the first parameter out of the first memory location and the second parameter pointed to by the second pointer by reading the second parameter out of the second memory location.
-
-
5. The method of claim 4 further comprising issuing a first notification on the first computer after the network interface card has finished reading the first parameter out of the first memory location and issuing a second notification on the first computer after the network interface card has finished reading the second parameter out of the second memory location.
-
6. The method of claim 5 further comprising reclaiming the first memory location after receiving the first notification.
-
7. The method of claim 6 further comprising reclaiming the second memory location after receiving the second notification.
-
8. The method of claim 1 wherein the transmitting comprises:
-
posting, on the first computer, a first send buffer and a first receive buffer prior to sending a first data to the second computer, wherein the first receive buffer will receive a second data from the second computer, and wherein the first receive buffer is posted to be of sufficient size to accept the second data; and
sending the first data to the second computer via the first send buffer.
-
-
9. The method of claim 8 wherein the transmitting further comprises:
- cleaning up, on the first computer, a second receive buffer after sending the first data to the second computer and prior to receiving the second data from the second computer.
-
10. The method of claim 9 wherein the second receive buffer was posted prior to the first receive buffer.
-
11. The method of claim 8 wherein the transmitting further comprises:
cleaning up, on the first computer, a second send buffer after sending the first data to the second computer and prior to receiving the second data from the second computer.
-
12. The method of claim 11 wherein the second send buffer was used to send the first data to the second computer.
-
13. The method of claim 8 wherein the second data from the second computer is in response to the first data from the first computer.
-
14. A computer-readable medium having computer-executable instructions for performing steps for communicating between a first object located on a first computer having a first memory location and a Remote Procedure Call run-time layer, wherein the RPC run-time layer has access to an RPC buffer, and a second object located on a second computer, the first and second computers connected by a network, accessed by the first computer through a network interface card on the first computer, the steps comprising:
-
calling an interface of the second object with the first object;
placing in the RPC buffer a first pointer to a first parameter, wherein the first parameter is used in the calling of the interface of the second object and wherein the first pointer points to the first parameter in the first memory location;
treating, in the RPC run-time layer, the first pointer as a scatter-gather entry; and
transmitting, by the network interface card, the first parameter pointed to by the first pointer by reading the first parameter out of the first memory location. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
placing in the RPC buffer the first pointer to the first parameter and a second pointer to a second parameter, wherein the second parameters is used in the calling of the interface of the second object and wherein the second pointer points to the second parameter in a second memory location on the first computer;
treating, in the RPC run-time layer, the second pointer as another scatter-gather entry; and
transmitting, by the network interface card, the first parameter pointed to by the first pointer by reading the first parameter out of the first memory location and the second parameter pointed to by the second pointer by reading the second parameter out of the second memory location.
-
-
18. The computer-readable medium of claim 17 having further computer-executable instructions for performing steps comprising:
- issuing a first notification on the first computer after the network interface card has finished reading the first parameter out of the first memory location and issuing a second notification on the first computer after the network interface card has finished reading the second parameter out of the second memory location.
-
19. The computer-readable medium of claim 18 having further computer-executable instructions for performing steps comprising:
- reclaiming the first memory location after receiving the first notification.
-
20. The computer-readable medium of claim 19 having further computer-executable instructions for performing steps comprising:
- reclaiming the second memory location after receiving the second notification.
-
21. The computer-readable medium of claim 14 wherein the transmitting comprises:
-
posting, on the first computer, a first send buffer and a first receive buffer prior to sending a first data to the second computer, wherein the first receive buffer will receive a second data from the second computer, and wherein the first receive buffer is posted to be of sufficient size to accept the second data; and
sending the first data to the second computer via the first send buffer.
-
-
22. The computer-readable medium of claim 21 wherein the transmitting further comprises:
- cleaning up, on the first computer, a second receive buffer after sending the first data to the second computer and prior to receiving the second data from the second computer.
-
23. The computer-readable medium of claim 22 wherein the second receive buffer was posted prior to the first receive buffer.
-
24. The computer-readable medium of claim 21 wherein the transmitting further comprises:
- cleaning up, on the first computer, a second send buffer after sending the first data to the second computer and prior to receiving the second data from the second computer.
-
25. The computer-readable medium of claim 24 wherein the second send buffer was used to send the first data to the second computer.
-
26. The computer-readable medium of claim 21 wherein the second data from the second computer is in response to the first data from the first computer.
Specification