# US 11,029,866 B2 · Methods, devices, and computer program products for processing data

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

- Number: US 11,029,866 B2
- Document ID: US11029866B2
- Status: Granted
- Kind: B2
- Application number: 16/415,812
- Filed: 2019-05-17
- Published: 2020-04-30
- Granted: 2021-06-08
- Earliest claimed: 2018-10-31
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Junping Zhao; Andrew Anzhou Hou
- Web page: https://patentgrep.com/patent/US11029866B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0653: {Monitoring storage devices or systems}
- 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}
- G06N 20/00: Machine learning
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

A method comprises: determining whether an event triggering processing of data at a storage device occurs, the data being predetermined to be processed at a computing device associated with the storage device; in response to determining that the event occurs, determining available resources of the storage device; and in response to an amount of the available resources exceeding a first predetermined threshold, causing the storage device to process the data and provide the processed data to the computing device. As such, operations to be performed to data may be adaptively allocated, deployed and adjusted on the storage device and the computing device, so that computing capabilities of both the storage device and the computing device may be fully leveraged, and further the computing efficiency of the entire data processing system may be improved.

## Claims

### Claim 1

A method of processing data, comprising:
determining, by a storage device, whether an event triggering processing of data at the storage device occurs, the data being predetermined to be processed at a computing device associated with the storage device;
in response to determining that the event occurs, determining, by the storage device, available resources of the storage device;
in response to an amount of the available resources of the storage device exceeding a first predetermined threshold, causing the storage device to process the data rather than the computing device processing the data and provide the processed data from the storage device to the computing device;
determining, by the storage device, updated available resources of the storage device, the available resources being updated due to processing the data; and
in response to an amount of the updated available resources being below a second predetermined threshold, performing, by the storage device, at least one of:
pausing processing of the data; and
reducing operations of processing the data.

### Claim 2 (depends on 1)

The method according to claim 1, wherein determining whether the event triggering processing of data at the storage device occurs comprises at least one of:
in response to determining that the data is detected to be to-be-processed data stored in the storage device, determining that the event occurs; and
in response to determining that a request for processing the data is received from the computing device, determining that the event occurs.

### Claim 3 (depends on 1)

The method according to claim 1, wherein determining the available resources of the storage device comprises at least one of:
determining available computing resources of the storage device; and
determining available storage space of the storage device.

### Claim 4 (depends on 1)

The method according to claim 1, wherein processing the data comprises:
performing, on the data, at least one of: shuffling, decoding, re-sizing, and data augmentation.

### Claim 5 (depends on 1)

The method according to claim 1, further comprising:
notifying the computing device that the storage device processes the data.

### Claim 6 (depends on 1)

The method according to claim 1, wherein reducing the operation of processing the data comprises:
notifying the computing device of the reduced operations.

### Claim 7 (depends on 1)

The method according to claim 1, wherein processing the data comprises:
determining a negotiation result between the storage device and the computing device regarding processing the data, the negotiation result indicating which operations among operations of processing the data will be performed by the storage device; and
processing the data based on the negotiation result.

### Claim 8 (depends on 1)

A computer program product being tangibly stored on a non-transient computer readable medium and comprising machine executable instructions which, when being executed, causing a machine to perform steps of the method of claim 1.

### Claim 9 (depends on 1)

A device for processing data, comprising at least one processing unit; at least one memory coupled to the at least one processing unit and storing instructions to be executed by the at least one processing unit, the instructions, when being executed by the at least one processing unit, causing the device to perform steps of the method of claim 1.

### Claim 10

A method of processing data, the method comprising:
sending, from a computing device to a storage device associated with the computing device, a request for processing data at the storage device, the data being predetermined to be processed at the computing device;
receiving, at the computing device, the processed data from the storage device, the data being processed by the storage device rather than the computing device processing the data when available resources of the storage device exceed a first predetermined threshold;
responsive to an amount of updated available resources of the storage device being below a second predetermined threshold, receiving, at the computing device, notification of a reduction in operations of processing the data; and
performing, by the computing device, at least a portion of the operations of processing the data.

### Claim 11 (depends on 10)

The method according to claim 10, wherein sending the request comprises:
determining available resources of the computing device; and
in response to an amount of the available resources of the computing device being below a third predetermined threshold, sending the request to the storage device.

### Claim 12 (depends on 11)

The method according to claim 11, wherein determining the available resources of the computing device comprises at least one of:
determining available computing resources of the computing device; and
determining available storage space of the computing device.

### Claim 13 (depends on 10)

The method according to claim 10, further comprising:
determining a negotiation result between the computing device and the storage device regarding processing the data, the negotiation result indicating which operations among operations of processing the data will be performed by the storage device.

### Claim 14 (depends on 10)

The method according to claim 10, wherein processing the data comprises:
performing, on the data, at least one of: shuffling, decoding, re-sizing, and data augmentation.

### Claim 15 (depends on 10)

A computer program product being tangibly stored on a non-transient computer readable medium and comprising machine executable instructions which, when being executed, causing a machine to perform steps of the method of claim 10.

### Claim 16

A device for processing data, comprising:
at least one processing unit;
at least one memory coupled to the at least one processing unit and storing instructions to be executed by the at least one processing unit, the instructions, when being executed by the at least one processing unit, causing the device to perform acts comprising:
sending, from a computing device to a storage device associated with the computing device, a request for processing data at the storage device, the data being predetermined to be processed at the computing device;
receiving, at the computing device, the processed data from the storage device, the data being processed by the storage device rather than the computing device processing the data when available resources of the storage device exceed a first predetermined threshold;
responsive to an amount of updated available resources of the storage device being below a second predetermined threshold, receiving, at the computing device, notification of a reduction in operations of processing the data; and
performing, by the computing device, at least a portion of the operations of processing the data.

### Claim 17 (depends on 16)

The device according to claim 16, wherein sending the request comprises:
determining available resources of the computing device; and
in response to an amount of the available resources of the computing device being below a third predetermined threshold, sending the request to the storage device.

### Claim 18 (depends on 17)

The device according to claim 17, wherein determining the available resources of the computing device comprises at least one of:
determining available computing resources of the computing device; and
determining available storage space of the computing device.

### Claim 19 (depends on 16)

The device according to claim 16, the acts further comprising:
determining a negotiation result between the computing device and the storage device regarding processing the data, the negotiation result indicating which operations among operations of processing the data will be performed by the storage device.
