IP Library Granted Patent US 7,155,727
Granted Patent B2
US 7,155,727 · App. 09/885,632 · Granted Dec 26, 2006

Efficient data buffering in a multithreaded environment

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,155,727
App. No.
09/885,632
Granted
Dec 26, 2006
Kind
B2
Abstract

A method and apparatus for buffering data in a multithreaded environment is provided. According to one aspect of the invention, log data is generated in response to a request for accessing a resource. A data management structure that is associated with a plurality of data buffers is identified and a reference value that is associated with the buffer management structure is read. The reference value provides information that identifies a particular data buffer that is likely available for buffering data. Based on the reference value a particular data buffer that is associated with said data management structure is selected for buffering the log data.

Claims (63)

1. A computer-implemented method for buffering data in a multithreaded environment, comprising:

reading a buffer index value that identifies a data buffer that was last used for buffering data;

incrementing the buffer index value;

locating a buffer array entry that is associated with the buffer index value;

determining, at a particular time, whether the buffer array entry indicates a particular value;

if the buffer array entry does not indicate the particular value at the particular time, then, in response to a determination at the particular time that the buffer array entry does not indicate the particular value, attempting to obtain a lock on a particular data buffer that is associated with the buffer array entry; and

if the buffer array entry indicates the particular value at the particular time, then, in response to a determination at the particular time that the buffer array entry indicates the particular value, incrementing the buffer index value without attempting to obtain a lock on the particular data buffer.

2. The method of claim 1 , further comprising:

if the attempt to obtain the lock on the particular data buffer succeeds, then updating the buffer array entry to indicate the particular value.

3. The method of claim 1 , further comprising:

receiving a connection request from a client;

assigning a thread of execution to process said connection request; and

selecting a particular buffer management structure from a plurality of buffer management structures, wherein said plurality of buffer management structures are each associated with a set of data buffers that are used for buffering data to a physical memory unit;

wherein the buffer index value is associated with the particular buffer management structure.

4. The method of claim 1 , further comprising:

generating log data in response to a request for accessing a resource, wherein said resource represents one or more sets of content that are associated with a network server; and

selecting a buffer management structure based on one or more addresses in which said one or more sets of content are stored on said network server.

5. The method of claim 1 , further comprising the step of writing log data into said particular data buffer.

6. The method of claim 1 , further comprising:

maintaining a plurality of data buffers as an array of available buffers; and

in response to detecting that the particular data buffer contains a particular limited amount of free data space, removing said particular data buffer from said array of available buffers.

7. The method of claim 6 , wherein the step of removing said particular data buffer from said array of available buffers further comprises linking said particular data buffer into a list of ready-to-write data buffers.

8. The method of claim 7 , further comprising:

removing said particular data buffer from said array of available buffers; and

storing on a non-volatile storage unit information contained in said particular data buffer.

9. The method of claim 1 , further comprising:

maintaining a plurality of data buffers as an array of available buffers; and

in response to determining that no data buffer is available in said array of available buffers for storing said log data, requesting a free data buffer from a global list of free data buffers.

10. A tangible computer-readable medium carrying one or more sequences of instructions for buffering data in a multithreaded environment, 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 a buffer index value that identifies a data buffer that was last used for buffering data;

incrementing the buffer index value;

locating a buffer array entry that is associated with the buffer index value;

determining, at a particular time, whether the buffer array entry indicates a particular value;

if the buffer array entry does not indicate the particular value at the particular time, then, in response to a determination at the particular time that the buffer array entry does not indicate the particular value, attempting to obtain a lock on a particular data buffer that is associated with the buffer array entry; and

if the buffer array entry indicates the particular value at the particular time, then, in response to a determination at the particular time that the buffer array entry indicates the particular value, incrementing the buffer index value without attempting to obtain a lock on the particular data buffer.

11. The computer-readable medium of claim 10 , further comprising instructions for performing the steps of:

if the attempt to obtain the lock on the particular data buffer succeeds, then updating the buffer array entry to indicate the particular value.

12. The computer-readable medium of claim 10 , further comprising instructions for performing the steps of:

receiving a connection request from a client;

assigning a thread of execution to process said connection request; and

selecting a particular buffer management structure from a plurality of buffer management structures, wherein said plurality of buffer management structures are each associated with a set of data buffers that are used for buffering data to a physical memory unit;

wherein the buffer index value is associated with the particular buffer management structure.

13. The computer-readable medium of claim 10 , further comprising instructions for performing the steps of:

generating log data in response to a request for accessing a resource, wherein said resource represents one or more sets of content that are associated with a network server; and

selecting a buffer management structure based on one or more addresses in which said one or more sets of content are stored on said network server.

14. The computer-readable medium of claim 10 , further comprising instructions for performing the step of writing log data into said particular data buffer.

15. The computer-readable medium of claim 10 , further comprising instructions for performing the steps of:

maintaining a plurality of data buffers as an array of available buffers; and

in response to detecting that the particular data buffer contains a particular limited amount of free data space, removing said particular data buffer from said array of available buffers.

16. The computer-readable medium of claim 15 , wherein the step of removing said particular data buffer from said array of available buffers further comprises linking said particular data buffer into a list of ready-to-write data buffers.

17. The computer-readable medium of claim 16 , further comprising instructions for performing the steps of:

removing said particular data buffer from said array of available buffers; and

storing on a non-volatile storage unit information contained in said particular data buffer.

18. The computer-readable medium of claim 10 , further comprising instructions for performing the steps of:

maintaining a plurality of data buffers as an array of available buffers; and

in response to determining that no data buffer is available in said array of available buffers for storing said log data, requesting a free data buffer from a global list of free data buffers.

19. A computer system, comprising:

means for reading a buffer index value that identifies a data buffer that was last used for buffering data;

means for incrementing the buffer index value;

means for locating a buffer array entry that is associated with the buffer index value;

means for determining, at a particular time, whether the buffer array entry indicates a particular value;

means for attempting to obtain a lock on a particular data buffer that is associated with the buffer array entry in response to a determination that the buffer array entry does not indicate the particular value at the particular time; and

means for incrementing the buffer index value without attempting to obtain a lock on the particular data buffer in response to a determination that the buffer array entry indicates the particular value at the particular time.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0683 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2001
From: ELVING, CHRISTOPHER H.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 011931/0158 →