Claims
- 1. A method for performing a direct memory access operation, the method comprising the following steps performed on a first machine:
performing a read operation to read data from a first buffer that has a particular capacity, wherein the data was written into the first buffer by a DMA mechanism in response to the data being written into a second buffer at a second machine; based on a set of one or more factors, determining whether to respond to performance of said read operation by transmitting, to the second machine, an explicit acknowledgement that the data was read from the first buffer; wherein said set of one or more factors includes at least one of
whether the read operation was a partial read in which less data was read than the particular capacity of said first buffer; and whether acknowledgements have not yet been sent for more than a threshold number of previously read buffers.
- 2. The method of claim 1, wherein:
the set of one or more factors includes whether the read operation was a partial read; and the method further comprises, after determining that the data represents a partial read, refraining from sending an explicit acknowledgement in response to said read operation in order to see if an implicit acknowledgment can be sent before a subsequent read operation.
- 3. The method of claim 2, further comprising sending an implicit acknowledgement to the second machine that the data was read from the first buffer by the first machine, wherein the step of sending an implicit acknowledgement includes piggybacking acknowledgement information to a message that is being sent from said first machine to said second machine.
- 4. The method of claim 2, wherein the data read from the first buffer is a first set of data, and further comprising:
if an implicit acknowledgement has not been sent before said subsequent read operation, then sending an explicit acknowledgement in response to said subsequent read operation.
- 5. The method of claim 4, wherein:
the first read operation reads a first set of data; the subsequent read operation reads a second set of data; and the explicit acknowledgement acknowledges that the first machine has read both the first set of data and the second set of data.
- 6. The method of claim 1, wherein the set of one or more factors includes whether acknowledgements have not yet been sent for more than a threshold number of previously read buffers.
- 7. The method of claim 6, wherein:
the set of one or more factors also includes whether the read operation was a partial read; and if acknowledgements have not yet been sent for more than a threshold number of previously read buffers, and the read operation was a partial read, then responding to said read operation by sending an explicit acknowledgement to the second machine; and said explicit acknowledgement including acknowledgement for said previously read buffers for which acknowledgements had not yet been sent.
- 8. The method of claim 6, wherein the threshold quantity is equal to half the number of buffers at the first machine that have been allocated for DMA operations with said second machine.
- 9. A method for performing a direct memory access operation, the method comprising the following steps performed on a first machine:
reading data from a first buffer, wherein the data was written into the first buffer by a DMA mechanism in response to the data being written into a second buffer on a second machine; and based on whether the amount of unacknowledged data received by the first machine from the second machine exceeds a threshold quantity, determining whether to transmit, in response to the data being read from the first buffer, any acknowledgement that the data was read from the first buffer.
- 10. The method of claim 9, further comprising:
if the amount of unacknowledged data received by the first machine from the second machine does not exceed a threshold quantity, then sending no acknowledgement in response to the data being read from the first buffer.
- 11. The method of claim 9, further comprising the steps of:
determining whether a set of one of more conditions are satisfied, wherein the set of one or more conditions includes whether the amount of unacknowledged data exceeds said threshold quantity; and if the set of one or more conditions is satisfied, then sending a single acknowledgement message that acknowledges that the first machine has performed a plurality of read operations on a plurality of buffers that are being used to exchange data between the first machine and the second machine.
- 12. The method of claim 9, further comprising:
if the amount of unacknowledged data received by the first machine from the second machine does exceed a threshold quantity, then determining whether the data represents a partial read.
- 13. The method of claim 12, further comprising:
after determining that the data represents a partial read, refraining from sending an explicit acknowledgement in response to said read operation in order to see if an implicit acknowledgment can be sent before a subsequent read operation.
- 14. The method of claim 13, wherein the data is a first set of data, and further comprising:
performing a read operation to read a second set of data from a third buffer that has a particular capacity, wherein the second set of data was written into the third buffer by a DMA mechanism in response to the second set of data being written into a fourth buffer at the second machine; and if a partial read has been encountered since the last explicit acknowledgement sent to the second machine, then sending an explicit acknowledgement to the second machine that first set of data and the second set of data have been read by the first machine.
- 15. The method of claim 12, further comprising:
if the data does not represent a partial read, then sending an explicit acknowledgement to the second machine that the data was read from the first buffer.
- 16. The method of claim 9, wherein the threshold quantity is equal to half the number of buffers located at the first machine.
- 17. A method for performing a database operation between a database client and a database server, the method comprising the steps of:
performing a read operation associated with one of an UPDATE statement and a SELECT statement by
the database client and the database server machine both allocate a segment of memory for the other machine, the client machine sends a bid to database server machine, wherein the bid contains an address to the segment of memory allocated on the client machine, the database server machine writes data to the segment of memory allocated at the database server machine in order to cause the data to be written to the segment of memory allocated on the database client, and the data is received and buffered in the segment of memory allocated on the database client.
- 18. A computer-readable medium carrying one or more sequences of instructions for performing a direct memory access operation, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
performing a read operation to read data from a first buffer that has a particular capacity, wherein the data was written into the first buffer by a DMA mechanism in response to the data being written into a second buffer at a second machine; based on a set of one or more factors, determining whether to respond to performance of said read operation by transmitting, to the second machine, an explicit acknowledgement that the data was read from the first buffer; wherein said set of one or more factors includes at least one of
whether the read operation was a partial read in which less data was read than the particular capacity of said first buffer; and whether acknowledgements have not yet been sent for more than a threshold number of previously read buffers.
- 19. The computer-readable medium of claim 18, wherein:
the set of one or more factors includes whether the read operation was a partial read; and wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of, after determining that the data represents a partial read, refraining from sending an explicit acknowledgement in response to said read operation in order to see if an implicit acknowledgment can be sent before a subsequent read operation.
- 20. The computer-readable medium of claim 19, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of sending an implicit acknowledgement to the second machine that the data was read from the first buffer by the first machine, wherein the step of sending an implicit acknowledgement includes piggybacking acknowledgement information to a message that is being sent from said first machine to said second machine.
- 21. The computer-readable medium of claim 19, wherein the data read from the first buffer is a first set of data, and wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:
if an implicit acknowledgement has not been sent before said subsequent read operation, then sending an explicit acknowledgement in response to said subsequent read operation.
- 22. The computer-readable medium of claim 21, wherein:
the first read operation reads a first set of data; the subsequent read operation reads a second set of data; and the explicit acknowledgement acknowledges that the first machine has read both the first set of data and the second set of data.
- 23. The computer-readable medium of claim 18, wherein the set of one or more factors includes whether acknowledgements have not yet been sent for more than a threshold number of previously read buffers.
- 24. The computer-readable medium of claim 23, wherein:
the set of one or more factors also includes whether the read operation was a partial read; and if acknowledgements have not yet been sent for more than a threshold number of previously read buffers, and the read operation was a partial read, then responding to said read operation by sending an explicit acknowledgement to the second machine; and said explicit acknowledgement including acknowledgement for said previously read buffers for which acknowledgements had not yet been sent.
- 25. The computer-readable medium of claim 23, wherein the threshold quantity is equal to half the number of buffers at the first machine that have been allocated for DMA operations with said second machine.
- 26. A computer-readable medium carrying one or more sequences of instructions for performing a direct memory access operation, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
reading data from a first buffer, wherein the data was written into the first buffer by a DMA mechanism in response to the data being written into a second buffer on a second machine; and based on whether the amount of unacknowledged data received by the first machine from the second machine exceeds a threshold quantity, determining whether to transmit, in response to the data being read from the first buffer, any acknowledgement that the data was read from the first buffer.
- 27. The computer-readable medium of claim 26, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:
if the amount of unacknowledged data received by the first machine from the second machine does not exceed a threshold quantity, then sending no acknowledgement in response to the data being read from the first buffer.
- 28. The computer-readable medium of claim 26, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the steps of:
determining whether a set of one of more conditions are satisfied, wherein the set of one or more conditions includes whether the amount of unacknowledged data exceeds said threshold quantity; and if the set of one or more conditions is satisfied, then sending a single acknowledgement message that acknowledges that the first machine has performed a plurality of read operations on a plurality of buffers that are being used to exchange data between the first machine and the second machine.
- 29. The computer-readable medium of claim 26, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:
if the amount of unacknowledged data received by the first machine from the second machine does exceed a threshold quantity, then determining whether the data represents a partial read.
- 30. The computer-readable medium of claim 29, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:
after determining that the data represents a partial read, refraining from sending an explicit acknowledgement in response to said read operation in order to see if an implicit acknowledgment can be sent before a subsequent read operation.
- 31. The computer-readable medium of claim 30, wherein the data is a first set of data, and wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the steps of:
performing a read operation to read a second set of data from a third buffer that has a particular capacity, wherein the second set of data was written into the third buffer by a DMA mechanism in response to the second set of data being written into a fourth buffer at the second machine; and if a partial read has been encountered since the last explicit acknowledgement sent to the second machine, then sending an explicit acknowledgement to the second machine that first set of data and the second set of data have been read by the first machine.
- 32. The computer-readable medium of claim 29, wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:
if the data does not represent a partial read, then sending an explicit acknowledgement to the second machine that the data was read from the first buffer.
- 33. The computer-readable medium of claim 26, wherein the threshold quantity is equal to half the number of buffers located at the first machine.
- 34. A computer-readable medium carrying one or more sequences of instructions for performing a database operation between a database client and a database server, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
performing a read operation associated with one of an UPDATE statement and a SELECT statement by
the database client and the database server machine both allocate a segment of memory for the other machine, the client machine sends a bid to database server machine, wherein the bid contains an address to the segment of memory allocated on the client machine, the database server machine writes data to the segment of memory allocated at the database server machine in order to cause the data to be written to the segment of memory allocated on the database client, and the data is received and buffered in the segment of memory allocated on the database client.
CROSS REFERENCE TO RELATED APPLICATION
[0001] This application is a continuation-in-part application that claims the benefit of United States non-provisional patent application Ser. No. 10/323,561, filed Dec. 17, 2002, the entire contents of which is hereby incorporated by reference as if fully set forth herein.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10323561 |
Dec 2002 |
US |
Child |
10641513 |
Aug 2003 |
US |