Storage-side storage request management
First Claim
1. A method comprising:
- receiving, at a storage system, input/output (I/O) requests to read data from or write data to one or more storage devices, the I/O requests including physical characteristics that indicate locations within the one or more storage devices of the data to be read or written;
queuing, within the storage system, a plurality of the I/O requests received by the storage system;
when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests;
wherein the one or more logical characteristics are not the physical characteristics;
wherein the one or more logical characteristics include, for at least a first I/O request of the particular I/O requests, an indication of at least one of;
a database name associated with the first I/0 request, the database name specified by request metadata that accompanies the first I/O request;
a workload type, the workload type categorizing work, performed by a first I/O requestor, for which the first I/O requestor issued the first I/O request;
ora user name associated with a communication session responsive to which the first I/O requestor issued the first I/O request;
processing the particular I/O request in response to the storage server selecting the particular I/O request by reading data from or writing data to a location indicated by particular physical characteristics included in the particular I/O request;
wherein the method is performed by one or more computing devices.
0 Assignments
0 Petitions
Accused Products
Abstract
Techniques are provided for managing, within a storage system, the sequence in which I/O requests are processed by the storage system based, at least in part, on one or more logical characteristics of the I/O requests. The logical characteristics may include, for example, the identity of the user for whom the I/O request was submitted, the service that submitted the I/O request, the database targeted by the I/O request, an indication of a consumer group to which the I/O request maps, the reason why the I/O request was issued, a priority category of the I/O request, etc. Techniques are also provided for automatically establishing a scheduling policy within a storage system, and for dynamically changing the scheduling policy in response to changes in workload.
98 Citations
50 Claims
-
1. A method comprising:
-
receiving, at a storage system, input/output (I/O) requests to read data from or write data to one or more storage devices, the I/O requests including physical characteristics that indicate locations within the one or more storage devices of the data to be read or written; queuing, within the storage system, a plurality of the I/O requests received by the storage system; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; wherein the one or more logical characteristics are not the physical characteristics; wherein the one or more logical characteristics include, for at least a first I/O request of the particular I/O requests, an indication of at least one of; a database name associated with the first I/0 request, the database name specified by request metadata that accompanies the first I/O request; a workload type, the workload type categorizing work, performed by a first I/O requestor, for which the first I/O requestor issued the first I/O request;
ora user name associated with a communication session responsive to which the first I/O requestor issued the first I/O request; processing the particular I/O request in response to the storage server selecting the particular I/O request by reading data from or writing data to a location indicated by particular physical characteristics included in the particular I/O request; wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method comprising:
-
receiving, at a storage system, from one or more database servers, input/output (I/O) requests to read data from or write data to one or more storage devices, the I/O requests indicating locations within the one or more storage devices of the data to be read or written; wherein, for each of a plurality of databases within which the one or more database servers perform database operations, the one or more storage devices store at least some data; wherein the I/O requests are accompanied by request metadata that at least specifies to which database of the plurality of databases that data involved in the I/O requests logically belong; queuing, within the storage system, a plurality of the I/O requests; when the storage system is ready to process a queued I/O request, a storage server within the storage system selecting which queued I/O request to process based on at least a first policy; wherein the first policy distinguishes between I/O requests in part based on the databases to which the data involved in the I/O requests logically belong, as specified by the request metadata; processing the queued I/O request that is selected based on the policy; wherein the method is performed by one or more computing devices. - View Dependent Claims (18, 19, 20, 49)
-
-
21. A method of comprising:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; wherein grouping the plurality of I/O requests comprises grouping a first set of I/O requests in the plurality of I/O requests into a first group based on one or more logical characteristics specified by the database server when issuing the first set of I/O requests, the one or more logical characteristics including at least one of; a database name associated with the first set of I/O requests, the database name specified by request metadata that accompanies the first I/O request; a workload type, the workload type categorizing work, performed by the database server, for which the database server issued the first set of I/O requests; a consumer group, comprising a plurality of consumers, associated with the first set of I/O requests; a user name associated with a communication session responsive to which the database server issued the first set of I/O requests; a service through which the database server issued the first set of I/O requests;
ora purpose for which the database server issued the first set of I/O requests; receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,processing the particular I/O request in response to the storage server selecting the particular I/O request; wherein the method is performed by one or more computing devices.
-
-
22. A method comprising:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; receiving from the database server, with the one or more selection policies, policy-to-phase assignment data indicating how the one or more selection policies are to be applied over a plurality of phases, wherein the one or more selection policies include a plurality of policies; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,wherein selecting the particular I/O request comprises; based at least on the policy-to-phase assignment data, identifying one or more first policies, of the one or more selection policies, to apply during one or more first phases of the plurality of phases; during the one or more first phases, filtering the queued plurality of I/O requests by applying the identified one or more first policies, thereby yielding a filtered set of I/O requests; based at least on the policy-to-phase assignment data, identifying a final policy, of the one or more selection policies, to apply during a final phase of the plurality of phases; and during the final phase of the plurality of phases, based on the policy-to-phase assignment data, selecting a particular I/O request from the filtered set of I/O requests by applying the final policy; processing the particular I/O request in response to the storage server selecting the particular I/O request; wherein the method is performed by one or more computing devices. - View Dependent Claims (23)
-
-
24. A method comprising:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,wherein selecting the particular I/O request comprises; based on the one or more ratios, identifying load usage allocations for a plurality of groups of I/O requests, the plurality of groups including the one or more groups; based on load statistics, identifying actual load usages for the plurality of groups over a period of time; identifying a particular group, of the one or more groups, whose actual load usage is further behind the load usage allocated to the particular group than any other group in the plurality of groups; selecting the particular I/O request from the particular group processing the particular I/O request in response to the storage server selecting the particular I/O request; wherein the method is performed by one or more computing devices.
-
-
25. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices, cause:
-
receiving, at a storage system, input/output (I/O) requests to read data from or write data to one or more storage devices, the I/O requests including physical characteristics that indicate locations within the one or more storage devices of the data to be read or written; queuing, within the storage system, a plurality of the I/O requests received by the storage system; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; wherein the one or more logical characteristics are not the physical characteristics; wherein the one or more logical characteristics include, for at least a first I/O request of the particular I/O requests, an indication of at least one of; a database name associated with the first I/O request, the database name specified by request metadata that accompanies the first I/O request; a workload type, the workload type categorizing work, performed by a first I/O requestor, for which the first I/O requestor issued the first I/O request;
ora user name associated with a communication session responsive to which the first I/O requestor issued the first I/O request; processing the particular I/O request in response to the storage server selecting the particular I/O request by reading data from or writing data to a location indicated by particular physical characteristics included in the particular I/O request; wherein the method is performed by one or more computing devices. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices, cause:
-
receiving, at the storage system, from one or more database servers, input/output (I/O) requests to read data from or write data to one or more storage devices, the I/O requests indicating locations within the one or more storage devices of the data to be read or written; wherein, for each of a plurality of databases within which the one or more database servers perform database operations, the one or more storage devices store at least some data; wherein the I/O requests are accompanied by request metadata that at least specifies to which databases of the plurality of databases the data involved in the I/O requests logically belong; queuing, within the storage system, a plurality of the I/O requests; when the storage system is ready to process a queued I/O request, a storage server within the storage system selecting which queued I/O request to process based on at least a first policy; wherein the first policy distinguishes between I/O requests in part based on the databases to which the data involved in the I/O requests logically belong, as specified by the request metadata; processing the queued I/O request that is selected based on the policy; wherein the method is performed by one or more computing devices. - View Dependent Claims (42, 43, 44, 50)
-
-
45. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices, cause:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; wherein grouping the plurality of I/O requests comprises grouping a first set of I/O requests in the plurality of I/O requests into a first group based on one or more logical characteristics specified by the database server when issuing the first set of I/O requests, the one or more logical characteristics including at least one of; a database name associated with the first set of I/O requests, the database name specified by request metadata that accompanies the first I/O request; a workload type, the workload type categorizing work, performed by the database server, for which the database server issued the first set of I/O requests; a consumer group, comprising a plurality of consumers, associated with the first set of I/O requests; a user name associated with a communication session responsive to which the database server issued the first set of I/O requests; a service through which the database server issued the first set of I/O requests;
ora purpose for which the database server issued the first set of I/O requests receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,processing the particular I/O request in response to the storage server selecting the particular I/O request.
-
-
46. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices, cause:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; receiving from the database server, with the one or more selection policies, policy-to-phase assignment data indicating how the one or more selection policies are to be applied over a plurality of phases, wherein the one or more selection policies include a plurality of policies; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,wherein selecting the particular I/O request comprises; based at least on the policy-to-phase assignment data, identifying one or more first policies, of the one or more selection policies, to apply during one or more first phases of the plurality of phases; during the one or more first phases, filtering the queued plurality of I/O requests by applying the identified one or more first policies, thereby yielding a filtered set of I/O requests; based at least on the policy-to-phase assignment data, identifying a final policy, of the one or more selection policies, to apply during a final phase of the plurality of phases; and during the final phase of the plurality of phases, based on the policy-to-phase assignment data, selecting a particular I/O request from the filtered set of I/O requests by applying the final policy; processing the particular I/O request in response to the storage server selecting the particular I/O request. - View Dependent Claims (47)
-
-
48. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices, cause:
-
receiving, at a storage system, from a database server, input/output (I/O) requests to read data from or write data to one or more storage devices; queuing, within the storage system, a plurality of the I/O requests; grouping the plurality of I/O requests into one or more groups based on one or more logical characteristics associated with particular I/O requests in the plurality of the I/O requests; receiving, at the storage system, one or more selection policies from the database server, the one or more selection policies specifying one or more ratios for the one or more groups; when the storage system is ready to process a pending I/O request that has been queued in the storage system, a storage server within the storage system selecting, from the queued plurality of the I/O requests, a particular I/O request to process based, at least in part, on the one or more ratios and the group to which the particular I/O request belongs;
,wherein selecting the particular I/O request comprises; based on the one or more ratios, identifying load usage allocations for a plurality of groups of I/O requests, the plurality of groups including the one or more groups; based on load statistics, identifying actual load usages for the plurality of groups over a period of time; identifying a particular group, of the one or more groups, whose actual load usage is further behind the load usage allocated to the particular group than any other group in the plurality of groups; selecting the particular I/O request from the particular group; processing the particular I/O request in response to the storage server selecting the particular I/O request.
-
Specification