Congestion avoidance in network storage device using dynamic weights

US9600337B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9600337-B2
Application numberUS-201514927868-A
CountryUS
Kind codeB2
Filing dateOct 30, 2015
Priority dateSep 30, 2014
Publication dateMar 21, 2017
Grant dateMar 21, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Methods, systems, and computer programs are presented for allocating CPU cycles and disk Input/Output's (IOs) to resource-creating processes based on dynamic weights that change according to the current percentage of resource utilization in the storage device. One method includes operations for assigning a first weight to a processing task that increases resource utilization of a resource for processing incoming input/output (IO) requests, and for assigning a second weight to a generating task that decreases the resource utilization of the resource. Further, the method includes an operation for dynamically adjusting the second weight based on the current resource utilization in the storage system. Additionally, the method includes an operation for allocating the CPU cycles and disk IOs to the processing task and to the generating task based on their respective first weight and second weight.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for allocating CPU (central processing unit) cycles and disk IOs of a storage system, the method comprising: assigning a first weight to a processing task that increases resource utilization of a resource for processing incoming input/output (IO) requests; assigning a second weight to a generating task that decreases the resource utilization of the resource; dynamically adjusting the second weight based on a current resource utilization in the storage system, wherein, when the current resource utilization in the storage system is less than a first predetermined threshold, the second weight has a first value; when the current resource utilization in the storage system is greater than a second predetermined threshold, which is greater than the first predetermined threshold, the second weight has a second value that is greater than the first value; and when the current resource utilization in the storage system is between the first predetermined threshold and the second predetermined threshold, the second weight has a variable value between the first value and the second value, wherein the variable value grows as the current resource utilization grows; and allocating the CPU cycles and disk IOs to the processing task and to the generating task based on their respective first weight and second weight. 2. The method as recited in claim 1 , wherein the variable value grows linearly from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 3. The method as recited in claim 1 , wherein the variable value grows exponentially from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 4. The method as recited in claim 1 , wherein the variable value grows in a step function from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 5. The method as recited in claim 1 , wherein the resource is non-volatile memory for storing the data of write IO requests, wherein the generating task increases an available amount of non-volatile memory by transferring data from the memory to permanent storage. 6. The method as recited in claim 1 , wherein the resource is disk space for storing the data and meta data of a write IO request, wherein the generating task performs garbage collection to increase an available amount of disk space. 7. The method as recited in claim 1 , wherein the resource is non-volatile memory for storing metadata for managing data of write IO requests, wherein the generating task increases an available amount of non-volatile memory for metadata by transferring data from the memory to permanent storage or by consolidating metadata information. 8. The method as recited in claim 1 , further including: throttling processing of the incoming IO requests when the current resource utilization is between the second predetermined threshold and a third predetermined threshold, the third predetermined threshold being greater than the second predetermined threshold. 9. The method as recited in claim 8 , further including: disabling processing of the incoming IO requests when the current resource utilization is greater than the third predetermined threshold. 10. The method as recited in claim 1 , further including: adding a new instance of the generating task when current resource utilization is greater than a fourth predetermined threshold. 11. A storage system comprising: a non-volatile memory (NVRAM) for storing incoming input/output (IO) requests; a hard drive (HDD) for permanent data storage; and a central processing unit (CPU), wherein a processing task and a generating task are executed by the CPU, the processing task increasing resource utilization of a resource for processing incoming input/output (IO) requests, the generating task decreasing the resource utilization of the resource, wherein a CPU scheduler and a disk scheduler assign a first priority weight to the processing task-and a second weight to the generating task; wherein the CPU scheduler and the disk scheduler dynamically adjust the second weight based on a current resource utilization in the storage system, wherein, when the current resource utilization in the storage system is less than a first predetermined threshold, the second weight has a first value; when the current resource utilization in the storage system is greater than a second predetermined threshold, which is greater than the first predetermined threshold, the second weight has a second value that is greater than the first value; and when the current resource utilization in the storage system is between the first predetermined threshold and the second predetermined threshold, the second weight has a variable value between the first value and the second value, wherein the variable value grows as the current resource utilization grows; wherein the CPU scheduler and the disk scheduler allocate CPU cycles and disk IOs to the processing task and to the generating task based on their respective first weight and second weight. 12. The storage system as recited in claim 11 , wherein the variable value grows linearly from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 13. The storage system as recited in claim 11 , wherein the variable value grows exponentially from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 14. The storage system as recited in claim 11 , wherein the variable value grows in a step function from the first value to the second value when the resource utilization is between the first predetermined threshold and the second predetermined threshold. 15. The storage system as recited in claim 11 , wherein the resource is the NVRAM, wherein the generating task increases an available amount of NVRAM by transferring data from the NVRAM to permanent storage. 16. The storage system as recited in claim 11 , wherein the resource is HDD space, wherein the generating task performs garbage collection to increase an available amount of HDD space. 17. The storage system as recited in claim 11 , wherein the storage array throttles processing of the incoming TO requests when the current resource utilization is between the second predetermined threshold and a third predetermined threshold, the third predetermined threshold being greater than the second predetermined threshold. 18. The storage system as recited in claim 17 , wherein the storage array disables processing of the incoming IO requests when the current resource utilization is greater than the third predetermined threshold. 19. A non-transitory computer-readable storage medium storing a computer program for allocating CPU (central processing unit) cycles and disk IOs of a storage system, the computer-readable storage medium comprising: program instructions for assigning a first weight to a processing task that increases resource utilization of a resource for processing incoming input/output (IO) requests; program instructions for assigning a second weight to a generating task that decreases the resource utilization of the resource; program instructions for dynamically adjusting the second weight based on a current resource utiliza

Assignees

Inventors

Classifications

  • Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title

  • Saving storage space on storage systems · CPC title

  • by allocating resources to storage systems · CPC title

  • Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues · CPC title

  • Plurality of storage devices · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9600337B2 cover?
Methods, systems, and computer programs are presented for allocating CPU cycles and disk Input/Output's (IOs) to resource-creating processes based on dynamic weights that change according to the current percentage of resource utilization in the storage device. One method includes operations for assigning a first weight to a processing task that increases resource utilization of a resource for p…
Who is the assignee on this patent?
Nimble Storage Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/5011. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 21 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).