Distributed storage method and device
US-11301154-B2 · Apr 12, 2022 · US
US12079477B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12079477-B2 |
| Application number | US-202217869017-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jul 20, 2022 |
| Priority date | Jul 20, 2022 |
| Publication date | Sep 3, 2024 |
| Grant date | Sep 3, 2024 |
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.
Backend processes in a storage system are implemented using a plurality of worker threads that are divided into two thread groups: thread group A and thread group B. Threads of thread group A are able to be used to process both Random Read Miss (RRM) workload items and Random Write Miss (RWM) workload items. Threads of thread group B are divided into two thread sub-groups: thread sub-group B1 and thread sub-group B2. Threads of thread sub-group B1 are able to be used to process both RRM and RWM workload items, while threads of thread sub-group B2 are reserved to be used to process only RRM workload items. The size of thread sub-group B2 relative to the size of thread sub-group B1 changes over time (from 0 threads to all threads of thread group B), depending on the duty cycle of the threads of group A.
Opening claim text (preview).
What is claimed is: 1. A non-transitory tangible computer readable storage medium having stored thereon a computer program for optimizing backend workload processing in a storage system, the computer program including a set of instructions which, when executed by a computer, cause the computer to perform a method comprising the steps of: allocating a dedicated set of threads to be individually dispatched and collectively used to process Random Read Miss (RRM) Input/Output (IO) operations and Random Write Miss (RWM) IO operations; maintaining a calculated queueing time for each individual thread of the dedicated set of threads; dividing the dedicated set of threads into two thread groups to create thread group A and thread group B, such that thread group A and thread group B each comprise a set of two or more individual threads of the dedicated set of threads; subdividing the set of two or more threads of thread group B into two thread sub-groups to create thread sub-group B1 and thread sub-group B2; individually allocating RRM IO operations to respective threads of thread group A or thread group B; individually allocating RWM IO operations to respective threads of thread group A or thread sub-group B1, while not individually allocating any RWM IO operations to any respective thread of thread sub-group B2; maintaining a respective workload queue for each thread, and wherein individually allocating RRM IO operations and RWM IO operations comprises individually dispatching the RRM IO operations and RWM IO operations to selected workload queues; and dynamically changing a number of individual threads of thread sub-group B1 relative to a number of individual threads of thread sub-group B2 based on a duty cycle of threads of thread group A, wherein the duty cycle of the threads of thread group A is calculated as a proportion of time during which the threads of thread group A are being used to process IO operations during a given time period. 2. The non-transitory tangible computer readable storage medium of claim 1 , wherein the calculated queueing time for each thread is based on a number of RRM IO operations in the respective workload queue times a current average RRM IO operation processing time, plus a number of RWM IO operations in the respective workload queue times a current average RWM IO operation processing time. 3. The non-transitory tangible computer readable storage medium of claim 2 , wherein each RRM IO operation is allocated to a respective thread of thread group A or thread group B having a minimum calculated queueing time at the time of allocation; and wherein each RWM IO operation is allocated to a respective thread of thread group A and thread of thread sub-group B1 having a minimum calculated queueing time at the time of allocation. 4. The non-transitory tangible computer readable storage medium of claim 2 , wherein the current average RRM IO operation processing time is an average amount of time required to process a recent set of RRM IO operations after picking the RRM IO operations from the workload queues. 5. The non-transitory tangible computer readable storage medium of claim 1 , wherein dynamically changing the number of individual threads of thread sub-group B1 relative to the number of individual threads of thread sub-group B2 based on the duty cycle of threads of thread group A comprises: comparing the duty cycle of the threads of thread group A with a first thread group A duty cycle threshold; and upon determining that the duty cycle of thread group A is lower than the first thread group A duty cycle threshold, allocating zero threads to thread sub-group B1. 6. The non-transitory tangible computer readable storage medium of claim 1 , wherein dynamically changing the number of individual threads of thread sub-group B1 relative to the number of individual threads of thread sub-group B2 based on the duty cycle of threads of thread group A comprises: comparing the duty cycle of the threads of thread group A with a first thread group A duty cycle threshold; comparing the duty cycle of the threads of thread group A with a second thread group A duty cycle threshold, the second thread group A duty cycle threshold being higher than the first thread group A duty cycle threshold; and upon determining that the duty cycle of thread group A is higher than the first thread group A duty cycle threshold and lower than the second thread group A duty cycle threshold, allocating a number of threads to sub-group B1 based on an allocation function. 7. The non-transitory tangible computer readable storage medium of claim 6 , wherein the allocation function is based on a difference between the duty cycle of thread group A and the first thread group A duty cycle threshold or a difference between the duty cycle of thread group A and the second thread group A duty cycle threshold. 8. The non-transitory tangible computer readable storage medium of claim 7 , wherein the allocation function is a linear function or a non-linear function. 9. The non-transitory tangible computer readable storage medium of claim 1 , wherein dynamically changing a number of threads of thread sub-group B1 based on a duty cycle of threads of thread group A comprises: comparing the duty cycle of the threads of thread group A with a first thread group A duty cycle threshold; and comparing the duty cycle of the threads of thread group A with a second thread group A duty cycle threshold, the second thread group A duty cycle threshold being higher than the first thread group A duty cycle threshold; and upon determining that the duty cycle of thread group A is higher than the second thread group A duty cycle threshold, allocating all threads of thread group B to thread sub-group B1. 10. A method of optimizing backend workload processing in a storage system, comprising: allocating a dedicated set of threads to be individually dispatched and collectively used to process Random Read Miss (RRM) Input/Output (IO) operations and Random Write Miss (RWM) IO operations; maintaining a calculated queueing time for each individual thread of the dedicated set of threads; dividing the dedicated set of threads into two thread groups to create thread group A and thread group B, such that thread group A and thread group B each comprise a set of two or more individual threads of the dedicated set of threads; subdividing the set of two or more threads of thread group B into two thread sub-groups to create thread sub-group B1 and thread sub-group B2; individually allocating RRM IO operations to any thread of thread group A or thread group B; individually allocating RWM IO operations to respective threads of thread group A or thread sub-group B1, while not individually allocating any RWM IO operations to any respective thread of thread sub-group B2; maintaining a respective workload queue for each thread, and wherein individually allocating RRM IO operations and RWM IO operations comprises individually dispatching the RRM IO operations and RWM IO operations to selected workload queues; and dynamically changing a number of individual threads of thread sub-group B1 relative to a number of individual threads of thread sub-group B2 based on a duty cycle of threads of thread group A, wherein the duty cycle of the threads of thread group A is calculated as a proportion of time during which the threads of thread group A are being used to process IO operations during a given time period. 11. The method of claim 10 , wherein the calculated queueing time for each thread is based on a number of RRM IO operations in the respective workload queue times a current average RRM IO operation processing time, plus a number of RWM IO operations in
Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices · CPC title
Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP] · CPC title
Disk arrays, e.g. RAID, JBOD · CPC title
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.