# US 12,008,406 B1 · Predictive workload placement amongst storage systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,008,406 B1
- Document ID: US12008406B1
- Status: Granted
- Kind: B1
- Application number: 17/158,530
- Filed: 2021-01-26
- Granted: 2024-06-11
- Earliest claimed: 2016-01-28
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Benjamin Borowiec; Terence Noonan
- Web page: https://patentgrep.com/patent/US12008406B1

## CPC

- G06F 9/5016: {the resource being the memory}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Placing workloads in a multi-array system comprising a plurality of storage arrays, including: determining, for each of a plurality of storage arrays, a current system activity level trend of the storage array; receiving a performance profile of a workload to be executed on one of the storage arrays; generating, for each of the plurality of storage arrays in dependence upon the current system activity level trend of the storage array and the performance profile of the workload, a projected system activity level trend for the storage array; identifying, in dependence upon the projected system activity level trend for each of the plurality of storage arrays, an optimal storage array for receiving the workload; and placing the workload on the optimal storage array.

## Claims

### Claim 1

A method comprising:
generating, for each of a plurality of storage arrays, a projected system activity level for the storage arrays, wherein the projected system activity level for the storage array is generated based on a performance profile of a workload combined with a rate at which each of a plurality of monitored performance metrics associated with the storage arrays are changing over time;
identifying, based on the projected system activity levels including the performance profile of the workload and the rate at which each of the plurality of monitored performance metrics associated with the storage arrays are changing over time, an optimal storage array for receiving the workload; and
placing the workload on the optimal storage array.

### Claim 2 (depends on 1)

The method of claim 1 further comprising generating the performance profile of the workload to be executed on one of the storage arrays.

### Claim 3 (depends on 2)

The method of claim 2 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises receiving user input identifying one or more characteristics of the workload.

### Claim 4 (depends on 2)

The method of claim 2 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises analyzing historical performance of the workload.

### Claim 5 (depends on 2)

The method of claim 2 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises analyzing historical performance of one or more similar workloads.

### Claim 6 (depends on 1)

The method of claim 1 further comprising identifying a configuration change to one or more of the storage arrays.

### Claim 7 (depends on 1)

The method of claim 1 further comprising:
identifying a change to the performance profile of the workload; and
generating, for each of the plurality of storage arrays, in dependence upon the current system activity level of the storage array and the change to the performance profile of the workload, an updated projected system activity level for the storage array.

### Claim 8

An apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
generating, for each of a plurality of storage arrays, a projected system activity level for the storage arrays, wherein the projected system activity level for the storage array is generated based on a performance profile of a workload combined with a rate at which each of a plurality of monitored performance metrics associated with the storage arrays are changing over time;
identifying, based on the projected system activity levels including the performance profile of the workload and the rate at which each of the plurality of monitored performance metrics associated with the storage arrays are changing over time, an optimal storage array for receiving the workload; and
placing the workload on the optimal storage array.

### Claim 9 (depends on 8)

The apparatus of claim 8 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the step of generating the performance profile of the workload to be executed on one of the storage arrays.

### Claim 10 (depends on 9)

The apparatus of claim 9 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises receiving user input identifying one or more characteristics of the workload.

### Claim 11 (depends on 9)

The apparatus of claim 9 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises analyzing historical performance of the workload.

### Claim 12 (depends on 9)

The apparatus of claim 9 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises analyzing historical performance of one or more similar workloads.

### Claim 13 (depends on 8)

The apparatus of claim 8 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the step of identifying a configuration change to one or more of the storage arrays.

### Claim 14 (depends on 8)

The apparatus of claim 8 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
identifying a change to the performance profile of the workload; and
generating, for each of the plurality of storage array, in dependence upon the current system activity level of the storage array and the change to the performance profile of the workload, an updated projected system activity level for the storage array.

### Claim 15

A computer program product disposed upon a non-transient computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:
generating, for each of a plurality of storage arrays, a projected system activity level for the storage arrays, wherein the projected system activity level for the storage array is generated based on a performance profile of a workload combined with a rate at which each of a plurality of monitored performance metrics associated with the storage arrays are changing over time;
identifying, based on the projected system activity levels including the performance profile of the workload and the rate at which each of the plurality of monitored performance metrics associated with the storage arrays are changing over time, an optimal storage array for receiving the workload; and
placing the workload on the optimal storage array.

### Claim 16 (depends on 15)

The computer program product of claim 15 further comprising computer program instructions that, when executed, cause the computer to carry out the steps of generating the performance profile of the workload to be executed on one of the storage arrays.

### Claim 17 (depends on 16)

The computer program product of claim 16 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises receiving user input identifying one or more characteristics of the workload.

### Claim 18 (depends on 16)

The computer program product of claim 16 wherein generating the performance profile of the workload to be executed on one of the storage arrays further comprises analyzing historical performance of the workload.

### Claim 19 (depends on 15)

The computer program product of claim 15 further comprising computer program instructions that, when executed, cause the computer to carry out the step of identifying a configuration change to one or more of the storage arrays.

### Claim 20 (depends on 15)

The computer program product of claim 15 further comprising computer program instructions that, when executed, cause the computer to carry out the steps of:
identifying a change to the performance profile of the workload; and
generating, for each of the plurality of storage arrays, in dependence upon the current system activity level of the storage array and the change to the performance profile of the workload, an updated projected system activity level for the storage array.
