IP Library Granted Patent US 12,536,192
Granted Patent B2
US 12,536,192 · App. 18/779,292 · Granted Jan 27, 2026

Prioritizing I/O operations directed to replicating datasets

Inventors: Daniel Sonner (San Mateo, CA); Jun He (Mountain View, CA); Zong Wang (Santa Clara, CA); John Colgrove (Los Altos, CA); Matthew Fay (Mountain View, CA)
Assignee: PURE STORAGE, INC.
G06F16/27
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,536,192
App. No.
18/779,292
Granted
Jan 27, 2026
Kind
B2
Abstract

Providing Quality of Service (QoS) for replicating datasets including: receiving, by a target data repository from a source data repository, a checkpoint describing one or more updates to one or more datasets stored in the source data repository and the target data repository; adding, by the target data repository, the checkpoint to a first queue for checkpoints directed to one or more volumes in the target data repository, wherein the first queue is included in a plurality of queues for the target data repository; selecting, by the target data repository, one or more queues from the plurality of queues; and servicing an operation from each of the selected one or more queues.

Claims (37)

1 . A method for providing Quality of Service (QoS) for replicating datasets comprising:

receiving, by a target data repository from a source data repository, a checkpoint describing one or more updates to one or more datasets stored in the source data repository;

adding, by the target data repository, the checkpoint to a first queue for checkpoints directed to one or more volumes in the target data repository, wherein the first queue is included in a plurality of queues that includes one or more other queues that have a higher priority than the first queue, the one or more other queues configured to queue storage operations from a host that are directed to at least one volume; and

servicing, by the target data repository, an operation from one or more queues of the plurality of queues in preference to a priority of servicing the first queue.

2 . The method of claim 1 , wherein the plurality of queues includes one or more second queues each corresponding to a particular volume of the target data repository and each configured to queue storage operations directed to the particular volume.

3 . The method of claim 2 , further comprising:

receiving, by the target data repository, a storage operation directed to volume of the target data repository;

adding, by the target data repository, the storage operation to a second queue of the one or more second queues corresponding to the volume.

4 . The method of claim 1 , wherein further comprising selecting the one or more queues based on a respective accumulated cost of serviced operations for each of the plurality of queues.

5 . The method of claim 4 , further comprising updating, for each of the one or more queues, the respective accumulated cost.

6 . The method of claim 5 , wherein the respective accumulated cost is updated based on a priority value based on an entity type.

7 . The method of claim 6 , wherein the priority value is further based on a user-defined weight.

8 . The method of claim 1 , further comprising:

sending, by the target data repository to the source data repository, data describing a load of the target data repository; and

wherein the data causes the source data repository to adjust one or more parameters for modifying the one or more datasets in the source data repository.

9 . The method of claim 1 , further comprising indicating, by the target data repository, one or more limits on receiving checkpoints from the source data repository, wherein the one or more limits cause the source data repository to adjust at least one operation associated with checkpoints at the source data repository.

10 . A storage system for providing Quality of Service (QoS) for replicating datasets that includes a computer memory and a computer processor, the computer memory including program instructions that, when executed by the computer processor, cause the storage system to carry out the following steps of:

receiving, by a target data repository from a source data repository, a checkpoint describing one or more updates to one or more datasets stored in the source data repository;

adding, by the target data repository, the checkpoint to a first queue for checkpoints directed to one or more volumes in the target data repository, wherein the first queue is included in a plurality of queues that includes one or more other queues that have a higher priority than the first queue, the one or more other queues configured to queue storage operations from a host that are directed to at least one volume; and

servicing, by the target data repository, an operation from one or more queues of the plurality of queues in preference to a priority of servicing the first queue.

11 . The storage system of claim 10 , wherein the plurality of queues includes one or more second queues each corresponding to a particular volume of the target data repository and each configured to queue storage operations directed to the particular volume.

12 . The storage system of claim 11 , wherein the program instructions, when executed by the computer processor, further cause the storage system to carry out the following steps of:

receiving, by the target data repository, a storage operation directed to volume of the target data repository;

adding, by the target data repository, the storage operation to a second queue of the one or more second queues corresponding to the volume.

13 . The storage system of claim 10 , wherein selecting the program instructions, when executed by the computer processor, further cause the storage system to select the one or more queues based on a respective accumulated cost of serviced operations for each of the plurality of queues.

14 . The storage system of claim 13 , wherein the program instructions, when executed by the computer processor, further cause the storage system to carry out the following step of updating, for each of the one or more queues, the respective accumulated cost.

15 . The storage system of claim 14 , wherein the respective accumulated cost is updated based on a priority value based on an entity type.

16 . The storage system of claim 15 , wherein the priority value is further based on a user-defined weight.

17 . The storage system of claim 10 , wherein the program instructions, when executed by the computer processor, further cause the storage system to carry out the following steps of:

sending, by the target data repository to the source data repository, data describing a load of the target data repository; and

wherein the data causes the source data repository to adjust one or more parameters for modifying the one or more datasets in the source data repository.

18 . The storage system of claim 10 , wherein the program instructions, when executed by the computer processor, further cause the storage system to carry out the following step of modifying, by the source data repository, a data replication mode in response to an age of a last serviced checkpoint exceeding a threshold.

19 . A computer program product disposed on a non-transitory computer readable medium, the computer program product including computer program instructions for providing Quality of Service (QoS) for replicating datasets that, when executed, carry out the following steps of:

receiving, by a target data repository from a source data repository, a checkpoint describing one or more updates to one or more datasets stored in the source data repository;

adding, by the target data repository, the checkpoint to a first queue for checkpoints directed to one or more volumes in the target data repository, wherein the first queue is included in a plurality of queues that includes one or more other queues that have a higher priority than the first queue, the one or more other queues configured to queue storage operations from a host that are directed to at least one volume; and

servicing, by the target data repository, an operation from one or more queues of the plurality of queues in preference to a priority of servicing the first queue.

20 . The computer program product of claim 19 , wherein the plurality of queues includes one or more second queues each corresponding to a particular volume of the target data repository and each configured to queue storage operations directed to the particular volume.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2024
From: SONNER, DANIEL; HE, JUN; WANG, ZONG; COLGROVE, JOHN; FAY, MATTHEW
To: PURE STORAGE, INC.
Reel/Frame 068042/0230 →
Continuity (4)
Continuation 17573095 · Jan 11, 2022
Continuation In Part 16668794 · Oct 30, 2019
Provisional Application 62900330 · Sep 13, 2019
Related Publication 20240378216A1 · Nov 14, 2024
References Cited (38)
US 7975115B2 · Wayda et al. · 2011 [cited by applicant]
US 8504797B2 · Mimatsu · 2013 [cited by applicant]
US 8822155B2 · Sukumar et al. · 2014 [cited by applicant]
US 9280678B2 · Redberg · 2016 [cited by applicant]
US 9395922B2 · Nishikido et al. · 2016 [cited by applicant]
US 10324639B2 · Seo · 2019 [cited by applicant]
US 10346434B1 · Morkel · 2019 [cited by examiner]
US 10567406B2 · Astigarraga et al. · 2020 [cited by applicant]
US 10846137B2 · Vallala et al. · 2020 [cited by applicant]
US 10877683B2 · Wu et al. · 2020 [cited by applicant]
US 11076509B2 · Alissa et al. · 2021 [cited by applicant]
US 11106810B2 · Natanzon et al. · 2021 [cited by applicant]
US 11194707B2 · Stalzer · 2021 [cited by applicant]
US 11604804B2 · Bapat · 2023 [cited by examiner]
US 20040010588A1 · Slater · 2004 [cited by examiner]
US 20070106712A1 · Yamato · 2007 [cited by examiner]
US 20070186001A1 · Wayda · 2007 [cited by examiner]
US 20080256141A1 · Wayda et al. · 2008 [cited by applicant]
US 20100306500A1 · Mimatsu · 2010 [cited by applicant]
US 20110035540A1 · Fitzgerald et al. · 2011 [cited by applicant]
US 20110225359A1 · Kulkarni · 2011 [cited by examiner]
US 20130073714A1 · Wang · 2013 [cited by examiner]
US 20140220561A1 · Sukumar et al. · 2014 [cited by applicant]
US 20150154418A1 · Redberg · 2015 [cited by applicant]
US 20150381709A1 · Word · 2015 [cited by examiner]
US 20160026397A1 · Nishikido et al. · 2016 [cited by applicant]
US 20160182542A1 · Staniford · 2016 [cited by applicant]
US 20160248631A1 · Duchesneau · 2016 [cited by applicant]
US 20170262202A1 · Seo · 2017 [cited by applicant]
US 20180054454A1 · Astigarraga et al. · 2018 [cited by applicant]
US 20190138244A1 · Singh · 2019 [cited by examiner]
US 20190220315A1 · Vallala et al. · 2019 [cited by applicant]
US 20200034560A1 · Natanzon et al. · 2020 [cited by applicant]
US 20200326871A1 · Wu et al. · 2020 [cited by applicant]
US 20210360833A1 · Alissa et al. · 2021 [cited by applicant]
Hwang K., et al., “RAID-x: a New Distributed Disk Array for I/O-Centric Cluster Computing,” Proceedings of The Ninth International Symposium on High-performance Distributed Computing, IEEE Computer Society, Los Alamitos… [cited by applicant]
Stalzer M.A., “FlashBlades: System Architecture and Applications,” Proceedings of the 2nd Workshop on Architectures and Systems for Big Data, Association for Computing Machinery, New York, NY, 2012, pp. 10-14. [cited by applicant]
Storer M.W., et al., “Pergamum: Replacing Tape with Energy Efficient, Reliable, Disk-Based Archival Storage,” 6th USENIX Conference on File and Storage Technologies (FAST'08), San Jose, CA, USA, Feb. 26-29, 2008, 16 Pag… [cited by applicant]