Techniques for monitoring and managing wait queues
First Claim
1. A method for managing a wait queue in a system comprising:
- defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values and one or more counters, each of the one or more queue depth values associated with said each bucket representing a possible value for a depth of the wait queue at a point in time indicating a total number of requests in the wait queue waiting to be serviced at said point in time, wherein said defining the plurality of buckets and associating the one or more queue depth values and the one or more counters with each of the plurality of buckets are performed prior to receiving requests for service;
receiving said requests for service; and
for each of said requests for service received, performing;
determining a current depth of the wait queue indicating all requests currently included in the wait queue waiting to be serviced;
selecting a bucket from said plurality of buckets based on the current depth of the wait queue and a first of one or more queue depth values associated with the bucket selected, wherein said bucket selected is associated with one or more queue depth values including the first queue depth value equal to the current depth of the wait queue;
recording information by updating said one or more counters of the bucket selected; and
placing said each request in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue.
9 Assignments
0 Petitions
Accused Products
Abstract
Described are techniques for managing a wait queue in a system. A plurality of buckets associated with the wait queue are defined. Each of the plurality of buckets is associated with one of more queue depth values and one or more counters. For each received request for service, a current depth of the wait queue indicating a number of other requests included in the wait queue waiting to be serviced is determined, a bucket in accordance with the current depth of the wait queue is selected and information is recorded by updating said one or more counters of the bucket selected. The received request is placed in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue.
54 Citations
20 Claims
-
1. A method for managing a wait queue in a system comprising:
-
defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values and one or more counters, each of the one or more queue depth values associated with said each bucket representing a possible value for a depth of the wait queue at a point in time indicating a total number of requests in the wait queue waiting to be serviced at said point in time, wherein said defining the plurality of buckets and associating the one or more queue depth values and the one or more counters with each of the plurality of buckets are performed prior to receiving requests for service; receiving said requests for service; and for each of said requests for service received, performing; determining a current depth of the wait queue indicating all requests currently included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets based on the current depth of the wait queue and a first of one or more queue depth values associated with the bucket selected, wherein said bucket selected is associated with one or more queue depth values including the first queue depth value equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing said each request in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 11)
-
-
10. A method for managing a wait queue in a system comprising:
-
defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values and one or more counters, each of the one or more queue depth values representing a number of requests in the wait queue waiting to be serviced; and for each received request for service, performing; determining a current depth of the wait queue indicating a number of other requests included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets, said bucket being associated with a first of said one or more queue depth values equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing the received request in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue, wherein the system is a data storage system and the wait queue is associated with all incoming I/O requests received by the data storage system, the one or more counters associated with each bucket include an event count and a cumulative queue depth, the event count representing a number of events associated with said each bucket as selected in said selecting step, the cumulative queue depth representing the sum of queue depths recorded for said each bucket in accordance with each received request selecting said each bucket, and wherein said selecting step selects a first bucket and further comprises; incrementing by one the event count associated with the first bucket; and incrementing the cumulative queue depth associated with the first bucket by the current depth of the wait queue; and
wherein the method further comprising;reporting, in accordance with a polling interval, collected data, said collected data including values associated with said one or more counters for each of said plurality of buckets and a value indicating an amount of time the system is busy servicing requests; determining, for each of said plurality of buckets, an average queue depth using the event count and cumulative queue depth associated with said each bucket; determining an average service time for said polling interval, said average service time being determined in accordance with the elapsed time of said polling interval and a total number of requests received during the polling interval, the total number of requests determined by adding the event counts associated with said plurality of buckets; determining, for each of said plurality of buckets, an average response time in accordance with the average queue depth for said each bucket and the average service time for said polling interval; determining, for each of said plurality of buckets, a percentage of requests included in said each bucket in accordance with said event count for said each bucket and the total number of requests; and determining a cumulative percentage value based on a sum of percentages of requests included in two or more buckets representing a range of queue depths associated with the wait queue, a first response time being the average response time associated with a first of said two or more buckets having a maximum queue depth of said range; and monitoring whether said system is performing in accordance with at least one quality of service level associated with a service agreement response time, said monitoring including comparing said cumulative percentage value to said at least one quality of service level associated with said service agreement response time.
-
-
12. A method for monitoring performance of a data storage system comprising:
-
receiving configuration information for a wait queue, said configuration information defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values indicating a number of I/O requests and one or more counters, each of the one or more queue depth values associated with said each bucket representing a possible value for a depth of the wait queue at a point in time indicating a total number of I/O requests in the wait queue waiting to be serviced at said point in time, the wait queue including received I/O requests waiting to be serviced by at least one component of the data storage system; defining the plurality of buckets and associating the one or more queue depth values and the one or more counters with each of the plurality of buckets prior to receiving I/O requests for service; receiving said I/O requests for service; for each of the I/O requests for service received, performing by the data storage system; determining a current depth of the wait queue indicating all I/O requests currently included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets based on the current depth of the wait queue and a first of one or more queue depth values associated with the bucket selected, wherein said bucket that is selected is associated with one or more queue depth values including the first queue depth value equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing said each I/O request in the wait queue if there is another I/O request currently being serviced, or if there is at least one other I/O request currently in the wait queue; reporting, by the data storage system in accordance with a polling interval, collected data to a management system, said collected data including values associated with said one or more counters for each of said plurality of buckets and a value indicating an amount of time the at least component is busy servicing I/O requests; and determining, by the management system for each of said plurality of buckets, an average response time for said polling interval using said collected data for said polling interval.
-
-
13. A method for monitoring performance of a data storage system comprising:
-
receiving configuration information for a wait queue, said configuration information defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values indicating a number of I/O requests in the wait queue waiting to be serviced and one or more counters, the wait queue including received I/O requests waiting to be serviced by at least one component of the data storage system; for each received I/O request to be serviced, performing by the data storage system; determining a current depth of the wait queue indicating a number of other I/O requests included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets, said bucket being associated with a first of said one or more queue depth values equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing the received I/O request in the wait queue if there is another I/O request currently being serviced, or if there is at least one other I/O request currently in the wait queue; reporting, by the data storage system in accordance with a polling interval, collected data to a management system, said collected data including values associated with said one or more counters for each of said plurality of buckets and a value indicating an amount of time the at least component is busy servicing I/O requests; and determining, by the management system for each of said plurality of buckets, an average response time for said polling interval using said collected data for said polling interval; determining a percentage value indicating a percentage of I/O requests included in two or more buckets for said polling interval, said two or more buckets representing a range of queue depth values associated with the wait queue, a first response time being the average response time associated with a first of said two or more buckets having a maximum queue depth of said range; and monitoring whether said at least one component of the data storage system is performing in accordance with at least one quality of service level associated with a service agreement response time, said monitoring including comparing said percentage value to said at least one quality of service level associated with said service agreement response time. - View Dependent Claims (14)
-
-
15. A computer readable medium comprising code stored thereon for managing a wait queue in a data storage system, the computer readable medium comprising code stored thereon for:
-
defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values and one or more counters, each of the one or more queue depth values associated with said each bucket representing a possible value for a depth of the wait queue at a point in time indicating a total number of requests in the wait queue waiting to be serviced at said point in time, wherein said defining the plurality of buckets and associating the one or more queue depth values and the one or more counters with each of the plurality of buckets are performed prior to receiving requests for service; receiving said requests for service; and for each of said requests for service received, performing; determining a current depth of the wait queue indicating all requests currently included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets based on the current depth of the wait queue and a first of one or more queue depth values associated with the bucket selected, wherein said bucket selected is associated with one or more queue depth values including the first queue depth value equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing said each request in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue. - View Dependent Claims (16, 17, 18)
-
-
19. A computer readable medium comprising code stored thereon for managing a wait queue in a data storage system, the computer readable medium comprising code stored thereon for:
-
defining a plurality of buckets associated with the wait queue, each of the plurality of buckets being associated with one or more queue depth values and one or more counters, each of the one or more queue depth values representing a number of requests in the wait queue waiting to be serviced; and for each received request for service, performing; determining a current depth of the wait queue indicating a number of other requests included in the wait queue waiting to be serviced; selecting a bucket from said plurality of buckets, said bucket being associated with a first of said one or more queue depth values equal to the current depth of the wait queue; recording information by updating said one or more counters of the bucket selected; and placing the received request in the wait queue if there is another request currently being serviced or if there is at least one other request currently in the wait queue; reporting, in accordance with a polling interval, collected data, said collected data including values associated with said one or more counters for each of said plurality of buckets and a value indicating an amount of time the system is busy servicing requests; determining, for each of said plurality of buckets, an average queue depth using the event count and cumulative queue depth associated with said each bucket; determining an average service time for said polling interval, said average service time being determined in accordance with the elapsed time of said polling interval and a total number of requests received during the polling interval, the total number of requests determined by adding the event counts associated with said plurality of buckets; and determining, for each of said plurality of buckets, an average response time in accordance with the average queue depth for said each bucket and the average service time for said polling interval. - View Dependent Claims (20)
-
Specification