IP Library Granted Patent US 10,469,578
Granted Patent B2
US 10,469,578 · App. 13/683,951 · Granted Nov 5, 2019

Prioritization of messages of a dispersed storage network

Inventor: Greg Dhuse (Chicago, IL)
Assignee: PURE STORAGE, INC.
H04L67/1097G06F3/067G06F3/0608G06F3/0641G06F12/0607G06F12/1408G06F16/182G06F21/00H04L9/0825H04L9/3236H04L65/10G06F11/108G06F2211/1028H04L63/0428
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 10,469,578
App. No.
13/683,951
Granted
Nov 5, 2019
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module generating a set of messages regarding a set of encoded data slices. For a first message of the set of messages, the method continues with the DS processing module determining a first message priority based on system-level message processing information and message processing status of a first storage node. For a second message of the set of messages, the method continues with the DS processing module determining a second message priority based on the system-level message processing information and message processing status of a second storage node. The method continues with the DS processing module sending the first message of the set of messages to the first storage node in accordance with the first message priority and sending the second message of the set of messages to the second storage node in accordance with the second message priority.

Claims (80)

1. A method for execution by a computing device, the method comprises:

storing a plurality of sets of messages in a set of queues corresponding to a set of storage nodes, wherein a set of messages of the plurality of sets of messages is associated with a set of encoded data slices, wherein a data segment of data is encoded using a dispersed storage error coding function to produce the set of encoded data slices and wherein a queue of the set of queues stores a group of messages that includes a message from each of at least some of the plurality of sets of messages for a particular storage unit of the set of storage nodes;

on a queue by queue basis, prioritizing the group of messages based on a queue prioritization scheme;

as the plurality of sets of messages are processed by the set of storage nodes, updating, on the queue by queue basis, the prioritizing of the group of messages based on the processing of the plurality of sets of messages by the set of storage nodes;

for a message of a first group of messages, sending the message of the first group of messages to a first storage node of the set of storage nodes in accordance with the prioritizing of the group of messages for the first storage node; and

for a message of a second group of messages, sending the message of the second group of messages to a second storage node of the set of storage nodes in accordance with the prioritizing of the group of messages for the second storage node.

2. The method of claim 1 further comprises:

the set of messages including a set of write messages to write the set of encoded data slices to a dispersed storage network;

determining when a write threshold number of the set of write messages have been sent; and

when the write threshold number of the set of write messages have been sent, for write messages of the set of write messages that have not yet been processed, adjusting the prioritizing.

3. The method of claim 2 , wherein the adjusting the prioritizing comprises one of:

changing one of the write messages of the set of write messages that have not yet been processed;

deleting the one of the write messages of the set of write messages that have not yet been processed; and

reducing priority of the one of the write messages of the set of write messages that have not yet been processed.

4. The method of claim 1 further comprises:

the set of messages including a set of read messages to read the set of encoded data slices;

determining when a decode threshold number of the set of read messages have been received; and

when the decode threshold number of the set of read messages have been received, for read messages of the set of read messages that have not yet been processed, adjusting the prioritizing.

5. The method of claim 4 , wherein the adjusting the prioritizing comprises one of:

changing one of the read messages of the set of read messages that have not yet been processed;

deleting the one of the read messages of the set of read messages that have not yet been processed; and

reducing priority of the one of the read messages of the set of read messages that have not yet been processed.

6. The method of claim 1 , wherein the prioritizing comprises:

for a first set of messages of the plurality of sets of messages, determining at least one of: a current status of sending the first set of messages to the set of storage nodes, and a current status of successfully processing the first set of messages by the set of storage nodes; and

for a second set of messages of the plurality of sets of messages, determining at least one of: a current status of sending the second set of messages to the set of storage nodes, and a current status of successfully processing the second set of messages by the set of storage nodes.

7. The method of claim 1 , wherein updating the prioritizing of a first queue of the set of queues comprises:

determining a number of sets of the plurality of sets of messages that involves the first storage node;

determining status of sending messages of the number of sets of the plurality of sets of messages to the first storage node;

determining status of successfully processed messages of the number of sets of the plurality of sets of messages by the first storage node; and

determining the message processing status of the first storage node based on the status of sending messages and the status of successfully processed messages.

8. The method of claim 1 further comprises:

the set of messages including a set of write messages to write the set of encoded data slices;

determining that a write threshold number of the set of write messages have not been sent to the set of storage nodes within a given time frame; and

when the write threshold number of the set of write messages have not been sent in the given time frame, increasing the prioritizing.

9. The method of claim 1 further comprises:

the set of messages including a set of read messages to read the set of encoded data slices;

determining when a decode threshold number of the set of read messages have not been sent within a given time period; and

when the decode threshold number of the set of read messages have not been sent within the given time period, increasing the prioritizing.

10. A dispersed storage (DS) hardware module comprises:

a first hardware module, when operable within a computing device, causes the computing device to:

store a plurality of sets of messages in a set of queues corresponding to a set of storage nodes, wherein a set of messages of the plurality of sets of messages is associated with a set of encoded data slices, wherein a data segment of data is encoded using a dispersed storage error coding function to produce the set of encoded data slices and wherein a queue of the set of queues stores a group of messages that includes a message from each of at least some of the plurality of sets of messages for a particular storage unit of the set of storage nodes;

a second module, when operable within the computing device, causes the computing device to:

on a queue by queue basis, prioritizing the group of messages based on a queue prioritization scheme; and

as the plurality of sets of messages are processed by the set of storage nodes, updating, on the queue by queue basis, the prioritizing of the group of messages based on the processing of the plurality of sets of messages by the set of storage nodes;

a fourth module, when operable within the computing device, causes the computing device to:

for a message of a first group of messages, send the message of the first group of messages to a first storage node of the set of storage nodes in accordance with the prioritizing of the group of messages for the first storage node; and

for a message of a second group of messages, send the message of the second group of messages to a second storage node of the set of storage nodes in accordance with the prioritizing of the group of messages for the second storage node.

11. The DS module of claim 10 further comprises:

the set of messages including a set of write messages to write the set of encoded data slices to a dispersed storage network; and

the fourth module further functions to determine when a write threshold number of the set of write messages have been sent; and

when the write threshold number of the set of write messages have been sent, for write messages of the set of write messages that have not yet been processed, the second module further functions to adjust the prioritizing.

12. The DS module of claim 11 , wherein the adjusting the prioritizing comprises one of:

changing one of the write messages of the set of write messages that have not yet been processed;

deleting the one of the write messages of the set of write messages that have not yet been processed; and

reducing priority of the one of the write messages of the set of write messages that have not yet been processed.

13. The DS module of claim 10 further comprises:

the set of messages including a set of read messages to read the set of encoded data slices;

the fourth module further functions to determine when a decode threshold number of the set of read messages have been sent; and

when the decode threshold number of the set of read messages have been sent, for read messages of the set of read messages that have not yet been sent, the second module further functions to adjust the prioritizing.

14. The DS module of claim 13 , wherein the adjusting the prioritizing comprises one of:

changing one of the read messages of the set of read messages that have not yet been processed;

deleting the one of the read messages of the set of read messages that have not yet been processed; and

reducing priority of the one of the read messages of the set of read messages that have not yet been processed.

15. The DS module of claim 10 , wherein the second module functions to prioritize by:

for a first set of messages of the plurality of sets of messages, determining at least one of: a current status of sending the first set of messages to the set of storage nodes, and a current status of successfully processing the first set of messages by the set of storage nodes; and

for a second set of messages of the plurality of sets of messages, determining at least one of: a current status of sending the second set of messages to the set of storage nodes, and a current status of successfully processing the second set of messages by the set of storage nodes.

16. The DS module of claim 10 further comprises:

the second module further functions to update the prioritizing of a first queue of the set of queues by:

determining a number of sets of the plurality of sets of messages that involves the first storage node;

determining status of sending messages of the number of sets of the plurality of sets of messages to the first storage node;

determining status of successfully processed messages of the number of sets of the plurality of sets of messages by the first storage node; and

determining the message processing status of the first storage node based on the status of sending messages and the status of successfully processed messages.

17. The DS module of claim 10 further comprises:

the set of messages including a set of write messages to write the set of encoded data slices;

the fourth module further functions to determine that a write threshold number of the set of write messages have not been sent within a given time frame; and

when the write threshold number of the set of write messages have not been sent in the given time frame, the second module further functions to increase the prioritizing.

18. The DS module of claim 10 further comprises:

the set of messages including a set of read messages to read the set of encoded data slices;

the fourth module further functions to determine when a decode threshold number of the set of read messages have not been sent within a given time period; and

when the decode threshold number of the set of read messages have not been sent within the given time period, the second module further functions to increase the prioritizing.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2012
From: DHUSE, GREG
To: CLEVERSAFE, INC.
Reel/Frame 029388/0268 →
Cited By (1)
US 12,259,990