# US 10,120,618 B2 · Systems and methods for adaptive offloading of mass storage data movement

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

- Number: US 10,120,618 B2
- Document ID: US10120618B2
- Status: Granted
- Kind: B2
- Application number: 14/461,454
- Filed: 2014-08-18
- Published: 2015-12-24
- Granted: 2018-11-06
- Earliest claimed: 2014-06-24
- Assignees: VMware, Inc.
- Applicants: Vmware, Inc.
- Inventors: Sunil Satnur; Prasanna Aithal
- Web page: https://patentgrep.com/patent/US10120618B2

## CPC

- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0673: {Single storage device}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for adaptive offloading of data movement from a computer system includes identifying performance results from a plurality of SCSI extended copy (XCOPY) operations associated with a storage unit, each XCOPY operation of the plurality of XCOPY operations including one or more parameters. The method also includes selecting, based on the identified performance results, one or more XCOPY parameters for the storage unit from the plurality of XCOPY operations. The method further includes forming an XCOPY operation associated with the storage unit, the XCOPY operation including the one or more selected XCOPY parameters. The method also includes transmitting the XCOPY operation to the storage unit.

## Claims

### Claim 1

A method for adaptive offloading of data movement from a computer system, the method comprising:
identifying response times from a plurality of historical SCSI extended copy (XCOPY) operations associated with a storage unit, each XCOPY operation of the plurality of XCOPY operations including one or more parameters;
selecting, based on the identified response times, one or more XCOPY parameters for the storage unit from the plurality of XCOPY operations;
forming a new XCOPY operation associated with the storage unit, the new XCOPY operation including the one or more selected XCOPY parameters; and
transmitting the new XCOPY operation to the storage unit.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying response times further includes identifying response times based on segment descriptor type.

### Claim 3 (depends on 1)

The method of claim 1, wherein identifying response times further includes identifying response times based on the number of segment descriptors within each XCOPY operation of the plurality of XCOPY operations having a first segment descriptor type.

### Claim 4 (depends on 1)

The method of claim 1 further comprising:
identifying processor (CPU) load data of the first computer system; and
determining that the CPU load data is above a pre-defined threshold, wherein forming an XCOPY operation further includes selecting a segment descriptor type based on maximizing a size of contiguous data that is copied in the XCOPY operation.

### Claim 5 (depends on 1)

The method of claim 1 further comprising identifying fragmentation within the computer system, the fragmentation including a plurality of fragmentation lengths, wherein selecting one or more XCOPY parameters further includes selecting a segment descriptor type based on the plurality of fragmentation lengths.

### Claim 6 (depends on 1)

The method of claim 1, wherein identifying response times further comprises:
forming the plurality of XCOPY operations by selecting descriptor types in a round robin manner; and
identifying a segment descriptor type based at least in part on the response times.

### Claim 7 (depends on 1)

The method of claim 1, wherein identifying response times further comprises forming the plurality of XCOPY operations by successively increasing the number of segment descriptors within each subsequent XCOPY operation until no more performance gain is detected.

### Claim 8 (depends on 1)

The method of claim 1, wherein forming an XCOPY operation includes forming an XCOPY operation including a first and second sub-copy operation, wherein the first and second sub-copy operations have different segment descriptor types.

### Claim 9 (depends on 8)

The method of claim 8 further comprising determining that the storage unit supports a first segment descriptor type code and a second segment descriptor type code.

### Claim 10

A computing device for adaptive offloading of data movement from a first computer system, said computer device comprising a processor communicatively coupled to an input/output (I/O) controller, said computing device programmed to:
identify response times from a plurality of historical SCSI extended copy (XCOPY) operations associated with a storage unit, each XCOPY operation of the plurality of XCOPY operations including one or more parameters;
select, based on the identified response times, one or more XCOPY parameters for the storage unit from the plurality of XCOPY operations;
form a new XCOPY operation associated with the storage unit, the XCOPY operation including the one or more selected XCOPY parameters; and
transmit the new XCOPY operation to the storage unit.

### Claim 11 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to identify response times based on segment descriptor type.

### Claim 12 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to identify response times based on the number of segment descriptors within each XCOPY operation of the plurality of XCOPY operations having a first segment descriptor type.

### Claim 13 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to:
identify processor (CPU) load data of the first computer system; and
determine that the CPU load data is above a pre-defined threshold, wherein forming an XCOPY operation further includes selecting a segment descriptor type based on maximizing a size of contiguous data that is copied in the XCOPY operation.

### Claim 14 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to identify fragmentation within the computer system, the fragmentation including a plurality of fragmentation lengths, wherein selecting one or more XCOPY parameters further includes selecting a segment descriptor type based on the plurality of fragmentation lengths.

### Claim 15 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to:
form the plurality of XCOPY operations by selecting descriptor types in a round robin manner; and
identify a segment descriptor type based at least in part on the response times.

### Claim 16 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to form the plurality of XCOPY operations by successively increasing the number of segment descriptors within each subsequent XCOPY operation until no more performance gain is detected.

### Claim 17 (depends on 10)

The computing device of claim 10, wherein the processor is further programmed to form an XCOPY operation including a first and second sub-copy operation, wherein the first and second sub-copy operations have different segment descriptor types.

### Claim 18 (depends on 17)

The computing device of claim 17, wherein the processor is further programmed to determine that the storage unit supports a first segment descriptor type code and a second segment descriptor type code.

### Claim 19

A computer-readable storage medium having computer-executable instructions embodied thereon, wherein, when executed by at least one processor, the computer-executable instructions cause the at least one processor to:
identify response times from a plurality of historical SCSI extended copy (XCOPY) operations associated with a storage unit, each XCOPY operation of the plurality of XCOPY operations including one or more parameters;
select, based on the identified response times, one or more XCOPY parameters for the storage unit from the plurality of XCOPY operations;
form a new XCOPY operation associated with the storage unit, the XCOPY operation including the one or more selected XCOPY parameters; and
transmit the new XCOPY operation to the storage unit.

### Claim 20 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to identify response times based on segment descriptor type.

### Claim 21 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to identify response times based on the number of segment descriptors within each XCOPY operation of the plurality of XCOPY operations having a first segment descriptor type.

### Claim 22 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to:
identify processor (CPU) load data of the first computer system; and
determine that the CPU load data is above a pre-defined threshold, wherein forming an XCOPY operation further includes selecting a segment descriptor type based on maximizing a size of contiguous data that is copied in the XCOPY operation.

### Claim 23 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to identify fragmentation within the computer system, the fragmentation including a plurality of fragmentation lengths, wherein selecting one or more XCOPY parameters further includes selecting a segment descriptor type based on the plurality of fragmentation lengths.

### Claim 24 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to:
form the plurality of XCOPY operations by selecting descriptor types in a round robin manner; and
identify a segment descriptor type based at least in part on the response times.

### Claim 25 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to form the plurality of XCOPY operations by successively increasing the number of segment descriptors within each subsequent XCOPY operation until no more performance gain is detected.

### Claim 26 (depends on 19)

The computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the processor to form an XCOPY operation including a first and second sub-copy operation, wherein the first and second sub-copy operations have different segment descriptor types.

### Claim 27 (depends on 26)

The computer-readable storage medium of claim 26, wherein the computer-executable instructions further cause the processor to determine that the storage unit supports a first segment descriptor type code and a second segment descriptor type code.
