Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for managing data in a computing environment including one or more host computing devices coupled to a storage system comprising a server and storage elements via a network, said method comprising: registering a plurality of buffers with a work queue in the server; assigning ownership of each of the plurality of buffers to a different working thread in a plurality of working threads such that each working thread is assigned ownership of, and therefore performs only work requests associated with, a respective associated buffer, the buffer comprising a specific region of physical memory in the server; continuously polling in lieu of polling at predetermined intervals, by a polling thread in the server, the work queue to determine when the work requests are received by the work queue; upon receipt of each work request, determining which buffer among the plurality of buffers each work request is associated by extracting identifying elements from each work request by the polling thread to identify flail the respective associated buffer each work request is addressed to; and performing each work request on each respective associated buffer by a working thread among the plurality of working threads that owns each respective associated buffer.
2. The method of claim 1 , further comprising: retrieving a conditional variable (condvar) associated with a particular working thread that owns the identified respective associated buffer; and modifying the condvar a first time to awaken the particular working thread from a sleep condition so that the particular working thread is able to perform the work request.
3. The method of claim 2 , further comprising: modifying the condvar a second time subsequent to the particular thread performing the work request to return the particular thread to the sleep condition; and reregistering the identified respective associated buffer with the work queue.
4. The method of claim 3 , further comprising sending a completion notice, via a completion queue in the server, to an entity that transmitted the work request.
5. The method of claim 1 , wherein extracting identifying elements comprises extracting scatter/gather elements for the respective associated buffer.
6. The method of claim 1 , wherein: the work queue is a queue pair comprising a send queue and a receive queue, and continuously polling comprises continuously polling the receive queue for Remote Direct Memory Access (RDMA) read requests and RDMA write requests.
7. A system for managing data in a computing environment, comprising: one or more host computing devices; and a storage system comprising a server and storage elements coupled to each of the host computing devices via a network, the server comprising a plurality of buffers and a work queue coupled to a processor, the processor configured for: registering the plurality of buffers with the work queue in the server, assigning ownership of each of the plurality of buffers to a different working thread in a plurality of working threads such that each working thread is assigned ownership of, and therefore performs only work requests associated with, a respective associated buffer, the buffer comprising a specific region of physical memory in the server, continuously polling in lieu of polling at predetermined intervals, by a polling thread, the work queue to determine when the work requests are received by the work queue, upon receipt of each work request, determining which buffer among the plurality of buffers each work request is associated by extracting identifying elements from each work request by the polling thread to identify flail the respective associated buffer each work request is addressed to, and performing each work request on each respective associated buffer by a working thread among the plurality of working threads that owns each respective associated buffer.
8. The system of claim 7 , wherein the processor is further configured for: retrieving a conditional variable (condvar) associated with a particular working thread that owns the identified respective associated buffer; and modifying the condvar a first time to awaken the particular working thread from a sleep condition so that the particular working thread is able to perform the work request.
9. The system of claim 8 , wherein the processor is further configured for: modifying the condvar a second time subsequent to the particular thread performing the work request to return the particular thread to the sleep condition; and reregistering the identified respective associated buffer with the work queue.
10. The system of claim 9 , wherein the processor is further configured for sending a completion notice, via a completion queue in the server, to an entity that transmitted the work request.
11. The system of claim 7 , wherein, when extracting the identifying elements, the processor is configured for extracting scatter/gather elements for the respective associated buffer.
12. The system of claim 7 , wherein: the work queue is a queue pair comprising a send queue and a receive queue, and when continuously polling, the processor is configured for continuously polling the receive queue for Remote Direct Memory Access (RDMA) read requests and RDMA write requests.
13. A physical computer storage medium comprising a computer program product for managing data in a computing environment including one or more host computing devices coupled to a storage system comprising a server and storage elements via a network, said physical computer storage medium comprising: computer code for registering a plurality of buffers with a work queue in the server; computer code for assigning ownership of each of the plurality of buffers to a different working thread in a plurality of working threads such that each working thread is assigned ownership of, and therefore performs only work requests associated with, a respective associated buffer, the buffer comprising a specific region of physical memory in the server; computer code for continuously polling in lieu of polling at predetermined intervals, by a polling thread in the server, the work queue to determine when the work requests are received by the work queue; computer code for, upon receipt of each work request, determining which buffer among the plurality of buffers each work request is associated by extracting identifying elements from each work request by the polling thread to identify the respective associated buffer each work request is addressed to; and computer code for performing each work request on each respective associated buffer by a working thread among the plurality of working threads that owns each respective associated buffer.
14. The physical computer storage medium of claim 13 , wherein the computer code for determining which buffer among the plurality of buffers each work request is associated comprises computer code for extracting scatter/gather elements from each work request to identify the respective associated buffer.
15. The physical computer storage medium of claim 14 , further comprising: computer code for retrieving a conditional variable (condvar) associated with a particular working thread that owns the identified respective associated buffer; and computer code for modifying the condvar a first time to awaken the particular working thread from a sleep condition so that the particular working thread is able to perform the work request.
16. The physical computer storage medium of claim 15 , further comprising: computer code for modifying the condvar a second time subsequent to the particular thread performing the work request to return the particular thread to the sleep condition; and computer code for reregistering the identified respective associated buffer with the work queue.
17. The physical computer storage medium of claim 16 , further comprising computer code for sending a completion notice, via a completion queue in the server, to an entity that transmitted the work request.
18. The physical computer storage medium of claim 13 , wherein the work queue is a queue pair comprising a send queue and a receive queue, and wherein the computer code for continuously polling comprises computer code for continuously polling the receive queue for Remote Direct Memory Access (RDMA) read requests and RDMA write requests.
Unknown
April 24, 2018
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.