IP Library › Granted Patent US 12,353,716
Granted Patent B2
US 12,353,716 · App. 17/693,754 · Granted Jul 8, 2025

Balancing the number of read operations and write operations that may be simultaneously serviced by a storage system

Inventors: John Colgrove (Los Altos, CA); Craig Harmer (San Francisco, CA); John Hayes (Mountain View, CA); Bo Hong (Palo Alto, CA); Ethan Miller (Santa Cruz, CA); Feng Wang (Los Altos, CA)
Assignee: PURE STORAGE, INC.
G06F3/0611G06F3/061G06F3/0613G06F3/0617G06F3/0619G06F3/0634G06F3/0659G06F3/0665G06F3/0688G06F3/0689G06F11/0751G06F11/076G06F11/1076
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,353,716
App. No.
17/693,754
Granted
Jul 8, 2025
Kind
B2
Abstract

A computer system comprising: a data storage medium comprising a plurality of storage devices configured to store data; and a data storage controller coupled to the data storage medium; wherein the data storage controller is configured to: determine a target number of storage devices in a group of storage devices in a storage system that may exhibit variable I/O response times; detect one or more conditions associated with the group of storage devices; and after detecting the one or more conditions, change the target number of storage devices that may exhibit variable I/O response times.

Claims (36)

1. A method comprising:

determining a threshold number of storage devices in a group of storage devices in a storage system that may concurrently exhibit variable I/O response times such that a reconstruct read can still be performed efficiently within the group of storage devices;

detecting one or more conditions related to write requests associated with the group of storage devices; and

in response to detecting the one or more conditions, adjusting the threshold number of storage devices such that a reconstruct read can still be performed while a performance of the group of storage devices is maintained compared to a time before the adjustment.

2. The method of claim 1 further comprising determining a number of storage devices that are concurrently exhibiting variable I/O response times.

3. The method of claim 2 further comprising:

determining whether the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number;

if the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number, scheduling requests to the group of storage devices to reduce the number of storage devices that are concurrently exhibiting variable I/O response times; and

if the number of storage devices that are concurrently exhibiting variable I/O response times is not greater than the threshold number, scheduling requests to improve performance of the group of storage devices.

4. The method of claim 1 , wherein detecting one or more conditions associated with the group of storage devices includes determining that a number of pending write requests for a given storage device in the group of storage devices exceeds a waiting threshold.

5. The method of claim 1 , wherein detecting one or more conditions associated with the group of storage devices includes detecting a given number of high-priority write requests targeting the group of storage devices.

6. The method of claim 1 , wherein exhibiting variable I/O response times includes executing high-latency operations.

7. A storage system, the storage system including a computer memory and a computer processor, the computer processor including computer program instructions that, when executed by the computer processor, cause the storage system to carry out the steps of:

determining a threshold number of storage devices in a group of storage devices in a storage system that may concurrently exhibit variable I/O response times such that a reconstruct read can still be performed efficiently within the group of storage devices;

detecting one or more conditions related to write requests associated with the group of storage devices; and

in response to detecting the one or more conditions, adjusting the threshold number of storage devices such that a reconstruct read can still be performed while a performance of the group of storage devices is maintained compared to a time before the adjustment.

8. The storage system of claim 7 further comprising computer program instructions that, when executed by the computer processor, cause the storage system to carry out the step of determining a number of storage devices that are concurrently exhibiting variable I/O response times.

9. The storage system of claim 8 further comprising computer program instructions that, when executed by the computer processor, cause the storage system to carry out the steps of:

determining whether the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number;

if the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number, scheduling requests to the group of storage devices to reduce the number of storage devices that are concurrently exhibiting variable I/O response times; and

if the number of storage devices that are concurrently exhibiting variable I/O response times is not greater than the threshold number, scheduling requests to improve performance of the group of storage devices.

10. The storage system of claim 7 , wherein detecting one or more conditions associated with the group of storage devices includes determining that a number of pending write requests for a given storage device in the group of storage devices exceeds a waiting threshold.

11. The storage system of claim 7 , wherein detecting one or more conditions associated with the group of storage devices includes detecting a given number of high-priority write requests targeting the group of storage devices.

12. The storage system of claim 7 , wherein exhibiting variable I/O response times includes executing high-latency operations.

13. An apparatus, the apparatus including a computer memory and a computer processor, the computer processor including computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

determining a threshold number of storage devices in a group of storage devices in a storage system that may concurrently exhibit variable I/O response times such that a reconstruct read can still be performed efficiently within the group of storage devices;

detecting one or more conditions related to write requests associated with the group of storage devices; and

in response to detecting the one or more conditions, adjusting the threshold number of storage devices such that a reconstruct read can still be performed while a performance of the group of storage devices is maintained compared to a time before the adjustment.

14. The apparatus of claim 13 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the step of determining a number of storage devices that are concurrently exhibiting variable I/O response times.

15. The apparatus of claim 14 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

determining whether the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number;

if the number of storage devices that are concurrently exhibiting variable I/O response times is greater than the threshold number, scheduling requests to the group of storage devices to reduce the number of storage devices that are concurrently exhibiting variable I/O response times; and

if the number of storage devices that are concurrently exhibiting variable I/O response times is not greater than the threshold number, scheduling requests to improve performance of the group of storage devices.

16. The apparatus of claim 13 , wherein detecting one or more conditions associated with the group of storage devices includes determining that a number of pending write requests for a given storage device in the group of storage devices exceeds a waiting threshold.

17. The apparatus of claim 13 , wherein detecting one or more conditions associated with the group of storage devices includes detecting a given number of high-priority write requests targeting the group of storage devices.

18. The apparatus of claim 13 , wherein exhibiting variable I/O response times includes executing high-latency operations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2022
From: COLGROVE, JOHN; HARMER, CRAIG; HAYES, JOHN; HONG, BO; MILLER, ETHAN; WANG, FENG
To: PURE STORAGE, INC.
Reel/Frame 059255/0001 →
Continuity (7)
Continuation 16266734 · Feb 4, 2019
Continuation In Part 15967408 · Apr 30, 2018
Continuation 15418035 · Jan 27, 2017
Continuation 15004500 · Jan 22, 2016
Continuation 14260059 · Apr 23, 2014
Continuation 12882864 · Sep 15, 2010
Related Publication 20220197514A1 · Jun 23, 2022
References Cited (189)
US 5208813A · Stallmo · 1993 [cited by applicant]
US 5403639A · Belsan et al. · 1995 [cited by applicant]
US 5761526A · Sakakura · 1998 [cited by examiner]
US 5778434A · Nguyen et al. · 1998 [cited by applicant]
US 5940838A · Schmuck et al. · 1999 [cited by applicant]
US 5948081A · Foster · 1999 [cited by applicant]
US 6041366A · Maddalozzo et al. · 2000 [cited by applicant]
US 6157963A · Courtright et al. · 2000 [cited by applicant]
US 6263350B1 · Wollrath et al. · 2001 [cited by applicant]
US 6292856B1 · Marcotte · 2001 [cited by applicant]
US 6301640B2 · Barve et al. · 2001 [cited by applicant]
US 6321345B1 · Mann et al. · 2001 [cited by applicant]
US 6412045B1 · DeKoning et al. · 2002 [cited by applicant]
US 6718448B1 · Ofer · 2004 [cited by applicant]
US 6757769B1 · Ofer · 2004 [cited by applicant]
US 6799283B1 · Tamai et al. · 2004 [cited by applicant]
US 6834298B1 · Singer et al. · 2004 [cited by applicant]
US 6850938B1 · Sadjadi · 2005 [cited by applicant]
US 6871011B1 · Rahman et al. · 2005 [cited by applicant]
US 6915434B1 · Kuroda et al. · 2005 [cited by applicant]
US 6973549B1 · Testardi · 2005 [cited by applicant]
US 7028216B2 · Aizawa et al. · 2006 [cited by applicant]
US 7028218B2 · Schwarm et al. · 2006 [cited by applicant]
US 7039827B2 · Meyer et al. · 2006 [cited by applicant]
US 7127545B1 · Nandi et al. · 2006 [cited by applicant]
US 7216164B1 · Whitmore et al. · 2007 [cited by applicant]
US 7631023B1 · Kaiser et al. · 2009 [cited by applicant]
US 7694063B1 · Nandi et al. · 2010 [cited by applicant]
US 7783682B1 · Patterson · 2010 [cited by applicant]
US 7873619B1 · Faibish et al. · 2011 [cited by applicant]
US 7877380B2 · Agrawal et al. · 2011 [cited by applicant]
US 7913300B1 · Flank et al. · 2011 [cited by applicant]
US 7926059B2 · Viswanathan et al. · 2011 [cited by applicant]
US 7933936B2 · Aggarwal et al. · 2011 [cited by applicant]
US 7979613B2 · Zohar et al. · 2011 [cited by applicant]
US 8010738B1 · Chilton · 2011 [cited by examiner]
US 8046551B1 · Sahin · 2011 [cited by applicant]
US 8086652B1 · Bisson et al. · 2011 [cited by applicant]
US 8117464B1 · Kogelnik · 2012 [cited by applicant]
US 8200887B2 · Bennett · 2012 [cited by applicant]
US 8205065B2 · Matze · 2012 [cited by applicant]
US 8352540B2 · Anglin et al. · 2013 [cited by applicant]
US 8527544B1 · Colgrove et al. · 2013 [cited by applicant]
US 8560747B1 · Tan et al. · 2013 [cited by applicant]
US 8621241B1 · Stephenson · 2013 [cited by applicant]
US 8700875B1 · Barron et al. · 2014 [cited by applicant]
US 8732426B2 · Colgrove et al. · 2014 [cited by applicant]
US 8751463B1 · Chamness · 2014 [cited by applicant]
US 8806160B2 · Colgrove et al. · 2014 [cited by applicant]
US 8874850B1 · Goodson et al. · 2014 [cited by applicant]
US 8959305B1 · LeCrone et al. · 2015 [cited by applicant]
US 9081713B1 · Bennett · 2015 [cited by applicant]
US 9189334B2 · Bennett · 2015 [cited by applicant]
US 9304694B2 · Colgrove et al. · 2016 [cited by applicant]
US 9311182B2 · Bennett · 2016 [cited by applicant]
US 9423967B2 · Colgrove et al. · 2016 [cited by applicant]
US 9436396B2 · Colgrove et al. · 2016 [cited by applicant]
US 9436720B2 · Colgrove et al. · 2016 [cited by applicant]
US 9454476B2 · Colgrove et al. · 2016 [cited by applicant]
US 9454477B2 · Colgrove et al. · 2016 [cited by applicant]
US 9513820B1 · Shalev · 2016 [cited by applicant]
US 9516016B2 · Colgrove et al. · 2016 [cited by applicant]
US 9552248B2 · Miller et al. · 2017 [cited by applicant]
US 9588699B1 · Colgrove et al. · 2017 [cited by applicant]
US 9632870B2 · Bennett · 2017 [cited by applicant]
US 10156998B1 · Colgrove et al. · 2018 [cited by applicant]
US 10228865B1 · Colgrove et al. · 2019 [cited by applicant]
US 20020038436A1 · Suzuki · 2002 [cited by applicant]
US 20020087544A1 · Selkirk et al. · 2002 [cited by applicant]
US 20020103969A1 · Koizumi et al. · 2002 [cited by applicant]
US 20020178335A1 · Selkirk et al. · 2002 [cited by applicant]
US 20030016596A1 · Chiquoine et al. · 2003 [cited by applicant]
US 20030140209A1 · Testardi · 2003 [cited by applicant]
US 20040049572A1 · Yamamoto et al. · 2004 [cited by applicant]
US 20040117441A1 · Liu et al. · 2004 [cited by applicant]
US 20040128428A1 · Christenson · 2004 [cited by applicant]
US 20050066095A1 · Mullick et al. · 2005 [cited by applicant]
US 20050154827A1 · Patterson et al. · 2005 [cited by applicant]
US 20050216535A1 · Saika et al. · 2005 [cited by applicant]
US 20050223154A1 · Uemura · 2005 [cited by applicant]
US 20060074940A1 · Craft et al. · 2006 [cited by applicant]
US 20060136365A1 · Kedem et al. · 2006 [cited by applicant]
US 20060155946A1 · Ji · 2006 [cited by applicant]
US 20070067585A1 · Ueda et al. · 2007 [cited by applicant]
US 20070115731A1 · Hung · 2007 [cited by applicant]
US 20070162954A1 · Pela · 2007 [cited by applicant]
US 20070171562A1 · Maejima et al. · 2007 [cited by applicant]
US 20070174673A1 · Kawaguchi et al. · 2007 [cited by applicant]
US 20070220313A1 · Katsuragi et al. · 2007 [cited by applicant]
US 20070245090A1 · King et al. · 2007 [cited by applicant]
US 20070266179A1 · Chavan et al. · 2007 [cited by applicant]
US 20080059699A1 · Kubo et al. · 2008 [cited by applicant]
US 20080059750A1 · Ogawa · 2008 [cited by examiner]
US 20080065852A1 · Moore et al. · 2008 [cited by applicant]
US 20080134174A1 · Sheu et al. · 2008 [cited by applicant]
US 20080155191A1 · Anderson et al. · 2008 [cited by applicant]
US 20080168241A1 · Raghavan · 2008 [cited by examiner]
US 20080178040A1 · Kobayashi · 2008 [cited by applicant]
US 20080209096A1 · Lin et al. · 2008 [cited by applicant]
US 20080244205A1 · Amano et al. · 2008 [cited by applicant]
US 20080275928A1 · Shuster · 2008 [cited by applicant]
US 20080285083A1 · Aonuma · 2008 [cited by applicant]
US 20080307270A1 · Li · 2008 [cited by applicant]
US 20090006587A1 · Richter · 2009 [cited by applicant]
US 20090037662A1 · Frese et al. · 2009 [cited by applicant]
US 20090204858A1 · Kawaba · 2009 [cited by applicant]
US 20090228648A1 · Wack · 2009 [cited by applicant]
US 20090300084A1 · Whitehouse · 2009 [cited by applicant]
US 20100057673A1 · Savov · 2010 [cited by applicant]
US 20100058026A1 · Heil et al. · 2010 [cited by applicant]
US 20100067706A1 · Anan et al. · 2010 [cited by applicant]
US 20100077205A1 · Ekstrom et al. · 2010 [cited by applicant]
US 20100082879A1 · McKean et al. · 2010 [cited by applicant]
US 20100106905A1 · Kurashige et al. · 2010 [cited by applicant]
US 20100153620A1 · McKean et al. · 2010 [cited by applicant]
US 20100153641A1 · Jagadish et al. · 2010 [cited by applicant]
US 20100191897A1 · Zhang et al. · 2010 [cited by applicant]
US 20100250802A1 · Waugh · 2010 [cited by examiner]
US 20100250882A1 · Hutchison et al. · 2010 [cited by applicant]
US 20100281225A1 · Chen et al. · 2010 [cited by applicant]
US 20100287327A1 · Li et al. · 2010 [cited by applicant]
US 20100332861A1 · Allalouf et al. · 2010 [cited by applicant]
US 20110026318A1 · Franceschini et al. · 2011 [cited by applicant]
US 20110072300A1 · Rousseau · 2011 [cited by applicant]
US 20110145598A1 · Smith et al. · 2011 [cited by applicant]
US 20110161559A1 · Yurzola et al. · 2011 [cited by applicant]
US 20110167221A1 · Pangal et al. · 2011 [cited by applicant]
US 20110238634A1 · Kobara · 2011 [cited by applicant]
US 20120023375A1 · Dutta et al. · 2012 [cited by applicant]
US 20120036309A1 · Dillow et al. · 2012 [cited by applicant]
US 20120066448A1 · Colgrove et al. · 2012 [cited by applicant]
US 20120117029A1 · Gold · 2012 [cited by applicant]
US 20120198175A1 · Atkisson · 2012 [cited by applicant]
US 20120330954A1 · Sivasubramanian et al. · 2012 [cited by applicant]
US 20130042052A1 · Colgrove et al. · 2013 [cited by applicant]
US 20130046995A1 · Movshovitz · 2013 [cited by applicant]
US 20130047029A1 · Ikeuchi et al. · 2013 [cited by applicant]
US 20130091102A1 · Nayak · 2013 [cited by applicant]
US 20130205110A1 · Kettner · 2013 [cited by applicant]
US 20130227236A1 · Flynn et al. · 2013 [cited by applicant]
US 20130275391A1 · Batwara et al. · 2013 [cited by applicant]
US 20130275656A1 · Talagala et al. · 2013 [cited by applicant]
US 20130283058A1 · Fiske et al. · 2013 [cited by applicant]
US 20130290648A1 · Shao et al. · 2013 [cited by applicant]
US 20130304988A1 · Totolos et al. · 2013 [cited by applicant]
US 20130318314A1 · Markus et al. · 2013 [cited by applicant]
US 20130339303A1 · Potter et al. · 2013 [cited by applicant]
US 20140052937A1 · Biswas et al. · 2014 [cited by applicant]
US 20140052946A1 · Kimmel · 2014 [cited by applicant]
US 20140068791A1 · Resch · 2014 [cited by applicant]
US 20140089730A1 · Watanabe et al. · 2014 [cited by applicant]
US 20140101361A1 · Gschwind · 2014 [cited by applicant]
US 20140143517A1 · Jin et al. · 2014 [cited by applicant]
US 20140172929A1 · Sedayao et al. · 2014 [cited by applicant]
US 20140201150A1 · Kumarasamy et al. · 2014 [cited by applicant]
US 20140215129A1 · Kuzmin et al. · 2014 [cited by applicant]
US 20140229131A1 · Cohen et al. · 2014 [cited by applicant]
US 20140229452A1 · Serita et al. · 2014 [cited by applicant]
US 20140229673A1 · Colgrove et al. · 2014 [cited by applicant]
US 20140281308A1 · Lango et al. · 2014 [cited by applicant]
US 20140325115A1 · Ramsundar et al. · 2014 [cited by applicant]
US 20150234709A1 · Koarashi · 2015 [cited by applicant]
US 20150244775A1 · Vibhor et al. · 2015 [cited by applicant]
US 20150278534A1 · Thiyagarajan et al. · 2015 [cited by applicant]
US 20160019114A1 · Han et al. · 2016 [cited by applicant]
US 20160098191A1 · Golden et al. · 2016 [cited by applicant]
US 20160098199A1 · Golden et al. · 2016 [cited by applicant]
US 20170371558A1 · George · 2017 [cited by examiner]
US 20180081562A1 · Vasudevan · 2018 [cited by applicant]
CN 103370685A · 2013 [cited by applicant]
CN 103370686A · 2013 [cited by applicant]
CN 104025010B · 2016 [cited by applicant]
EP 1589426A2 · 2005 [cited by examiner]
EP 1637998A2 · 2006 [cited by applicant]
EP 3066610A1 · 2016 [cited by applicant]
EP 3082047A1 · 2016 [cited by applicant]
EP 3120235A · 2017 [cited by applicant]
JP 2007087036A · 2007 [cited by applicant]
JP 2007094472A · 2007 [cited by applicant]
JP 2008250667A · 2008 [cited by applicant]
JP 2010211681A · 2010 [cited by applicant]
WO 1995002349A1 · 1995 [cited by applicant]
WO 1999013403A1 · 1999 [cited by applicant]
WO 2008102347A1 · 2008 [cited by applicant]
WO 2010071655A1 · 2010 [cited by applicant]
International Search Report and Written Opinion, PCT/US2011/051707, Nov. 30, 2011, 10 pages. [cited by applicant]
Microsoft Corporation, “Fundamentals of Garbage Collection”, Retrieved Aug. 30, 2013 via the WayBack Machine, 11 pages. [cited by applicant]
Microsoft Corporation, “GCSettings.IsServerGC Property”, Retrieved Oct. 27, 2013 via the WayBack Machine, 3 pages. [cited by applicant]
Extended European Search Report for European Application No. 18165220.7, mailed Jul. 27, 2018, 8 Pages. [cited by applicant]