System tools for evaluating operational and financial performance from dispatchers using after the fact analysis
US-9558250-B2 · Jan 31, 2017 · US
US10387202B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10387202-B2 |
| Application number | US-201615277779-A |
| Country | US |
| Kind code | B2 |
| Filing date | Sep 27, 2016 |
| Priority date | Sep 30, 2014 |
| Publication date | Aug 20, 2019 |
| Grant date | Aug 20, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Methods, systems, and computer programs are presented for allocating CPU cycles in a storage system. One method includes operations for receiving requests to be processed, and for associating each request to one task. A foreground task is for processing input/output requests, and the foreground task includes one or more flows. Each flow is associated with a queue and a flow counter value, where each queue is configured to hold requests. The method further includes an operation for selecting one task for processing by the CPU based on an examination of the number of cycles processed by the CPU for each task. When the selected task is the foreground task, the flow having the lowest flow counter is selected. The CPU processes a request from the queue of the selected flow, and the flow counter of the selected flow is increased based on the data consumption of the processed task.
Opening claim text (preview).
What is claimed is: 1. A method for allocating cycles of a CPU (central processing unit) of a storage system, comprising: receiving a plurality of requests to be processed by the CPU; associating each request to one of a plurality of tasks, a first task of the plurality of tasks being for processing input/output (IO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests; selecting one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing; when the selected task is the first task, selecting one of the plurality of flows having a lowest flow counter value among the flow counter values of flows that require processing by the CPU; and processing by the CPU a request from the queue of the selected flow, the flow counter of the selected flow being increased based on a data consumption of the processed request; wherein each flow of the plurality of flows is associated with a respective volume, wherein each volume is configured from one or more storage arrays, and wherein two or more storage arrays are defined as part of a clustered storage array. 2. The method of claim 1 , wherein the flow counter value of the selected flow is increased based on a weight assigned to the flow and the data consumption for the processed task. 3. The method of claim 2 , wherein the weight assigned to each of the plurality of flows is directly proportional to an input/outputs per second (IOPS) delivered for each of the plurality of flows. 4. The method of claim 1 , wherein the requests to be processed are scheduled for processing based on a dual currency that includes (a) a number of CPU cycles used by each task and (b) the flow counter values of the plurality of flows. 5. The method of claim 1 , wherein the data consumption of the processed request is based on a size of a read or write request of the processed request. 6. The method of claim 1 , wherein each request is one of an IO request or a work request for a background task. 7. The method of claim 1 , further including: detecting an activated flow that requires CPU processing, the activated flow having been idle for a period of time greater than a threshold period; and adjusting the flow counter value of the activated flow to be equal to a maximum between a current value of the flow counter value of the activated flow and a minimum flow counter of all active flows. 8. The method of claim 1 , wherein each of the plurality of tasks is assigned a task weight that that is used to increase a task counter value, wherein selecting one of the plurality of tasks further includes: selecting the task with a lowest task counter value among the task counter values of tasks that require processing by the CPU. 9. The method of claim 8 , wherein the task counter value of the selected task is increased based on an amount of CPU cycles consumed by a processed task associated with the selected task and based on the assigned task weight for the selected task. 10. The method of claim 1 , wherein each volume is configured from one or more storage arrays; and wherein a pool is configured for each volume, each volume defined from the storage system defined by one or more storage arrays. 11. The method of claim 1 , wherein a performance metric defined by input/outputs per second (IOPS) is assigned to each of the flows, wherein a weight assigned to each of the flows is directly proportional to the respective TOPS of the flow. 12. The method of claim 11 , wherein the performance metric assigned to each volume is a portion of available performance assignable for processing IO requests to the plurality of flows. 13. The method of claim 11 , wherein each flow of the plurality of flows is associated with a volume to be serviced by the storage system, wherein based on anticipated storage demands by volume the performance metric assigned to the volumes is configurable. 14. The method of claim 13 , wherein performance metrics assigned to specific volumes define a guaranteed amount of reserved IOPS. 15. A storage system comprising: a central processing unit (CPU); a non-volatile memory (NVRAM) for storing incoming write requests; a solid state memory (SSD) configured as a read cache memory; and a hard drive (HDD) for permanent data storage, wherein the CPU: associates requests requiring processing by the CPU to one of a plurality of tasks, a first task of the plurality of tasks being for processing input/output (IO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests; selects one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing; when the selected task is the first task, selects one of the plurality of flows having a lowest flow counter value among the flow counter values of flows that require processing by the CPU; and processes a request from the queue of the selected flow, the flow counter of the selected flow being increased based on a data consumption of the processed request; wherein a weight assigned to each of the plurality of flows is directly proportional to an input/outputs per second (IOPS) delivered for each of the plurality of flows. 16. The storage system of claim 15 , wherein the CPU includes a plurality of cores, wherein the request to be processed is assigned to a thread executing in one of the plurality of cores. 17. The storage system of claim 15 , wherein the CPU further: detects an activated flow that requires CPU processing, the activated flow having been idle for a period of time greater than a threshold period; and adjusts the flow counter value of the activated flow to be equal to a maximum between a current value of the flow counter value of the activated flow and a minimum flow counter of all active flows. 18. The storage system of claim 15 , wherein each of the plurality of tasks is assigned a task weight that that is used to increase a task counter value, wherein to select one of the plurality of tasks, the CPU further: selects the task with a lowest task counter value among the task counter values of tasks that require processing by the CPU. 19. A non-transitory computer-readable storage medium storing a computer program for allocating cycles of a CPU (central processing unit) of a storage system, the computer-readable storage medium comprising: program instructions for receiving a plurality of tasks to be processed by the CPU; program instructions for associating each request to one of a plurality of tasks, a first task of the plurality of tasks being for processing input/output (IO) requests of the storage system, the first task including a plurality of flows and each flow being associated with a queue and a flow counter value, each queue being configured to hold requests; program instructions for selecting one of the plurality of tasks for processing by the CPU based on an examination of a number of cycles processed by the CPU for each task of the plurality of tasks that requires processing; program instructions for, when the selected task is the first task, selecting one of the plurality of flows having a lowest flow counter value among the flow c
Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title
Improving I/O performance · CPC title
Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues · CPC title
considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups) · CPC title
for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS] · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.