# US 8,572,163 B1 · Systems and methods for deduplicating data based on performance of a deduplication system

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

- Number: US 8,572,163 B1
- Document ID: US8572163B1
- Status: Granted
- Kind: B1
- Application number: 12/551,341
- Filed: 2009-08-31
- Granted: 2013-10-29
- Earliest claimed: 2009-08-31
- Assignees: Symantec Corporation
- Applicants: Graham Bromley; Weibao Wu; Mark DuChene; Walter Angerer; Mehmet Balioglu; Oussama El-Hilali; Mike Zeis
- Inventors: Graham Bromley; Weibao Wu; Mark DuChene; Walter Angerer; Mehmet Balioglu; Oussama El-Hilali; Mike Zeis
- Web page: https://patentgrep.com/patent/US8572163B1

## CPC

- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method for deduplicating data is disclosed. The method may include identifying a request to transfer data from a client in a deduplication system to a server in the deduplication system. The method may also include determining, based at least in part on performance of the deduplication system, whether to deduplicate the data before transferring the data from the client to the server. The method may further include performing the following, the order of which is based on the determination: deduplicating the data and transferring the data from the client to the server. Various other methods, systems, and computer-readable media are also disclosed.

## Claims

### Claim 1

A computer-implemented method for deduplicating data, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:
identifying a request to transfer data from a client in a deduplication system to a server in the deduplication system;
determining whether performing deduplication on the client currently outperforms performing deduplication on the server by:
measuring data throughput while performing deduplication on the client;
measuring data throughput while performing deduplication on the server;
comparing the data throughput while performing deduplication on the client with the data throughput while performing deduplication on the server;
determining, based at least in part on determining whether performing deduplication on the client currently outperforms performing deduplication on the server, whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server;
performing the following, the order of which is based on determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server:
deduplicating the data;
transferring the data from the client to the server.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
measuring data throughput while performing deduplication on the client comprises measuring a first span of time that elapses while deduplicating a predetermined amount of data on the client and transferring the predetermined amount of data to the server;
measuring data throughput while performing deduplication on the server comprises measuring a second span of time that elapses while transferring the predetermined amount of data to the server and deduplicating the predetermined amount of data on the server;
determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server comprises:
determining to deduplicate the data before the data is transferred from the client to the server if the first span is shorter than the second span;
determining to deduplicate the data after the data is transferred from the client to the server if the second span is shorter than the first span.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
measuring data throughput while performing deduplication on the client comprises measuring a first amount of data that is deduplicated on the client and transferred to the server during a predetermined interval of time;
measuring data throughput while performing deduplication on the server comprises measuring a second amount of data that is transferred to the server and deduplicated on the server during the predetermined interval of time;
determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server comprises:
determining to deduplicate the data before the data is transferred from the client to the server if the first amount is greater than the second amount;
determining to deduplicate the data after the data is transferred from the client to the server if the second amount is greater than the first amount.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is performed at periodic intervals.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
determining how frequently deduplication switches between the client and the server;
setting a length of at least one of the periodic intervals based on how frequently deduplication switches between the client and the server.

### Claim 6 (depends on 1)

The method of claim 1, wherein determining whether performing deduplication on the client currently outperforms performing deduplication on the server is performed at periodic intervals.

### Claim 7 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on a central-processing-unit load on the client.

### Claim 8 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on a central-processing-unit load on the server.

### Claim 9 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on performance of a network that transfers the data from the client to the server.

### Claim 10 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on a comparison of at least two of:
performance of the client;
performance of the server;
performance of a network that transfers the data from the client to the server.

### Claim 11 (depends on 1)

The method of claim 1, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on a user preference for preserving a resource of at least one of:
the client;
the server;
a network that transfers the data from the client to the server.

### Claim 12

A system for deduplicating data, the system comprising:
a data-transfer module programmed to:
identify a request to transfer data from a client in a deduplication system to a server in the deduplication system;
transfer the data from the client to the server;
a deduplication module programmed to:
determine whether performing deduplication on the client currently outperforms performing deduplication on the server by:
measuring data throughput while performing deduplication on the client;
measuring data throughput while performing deduplication on the server;
comparing the data throughput while performing deduplication on the client with the data throughput while performing deduplication on the server;
determine, based at least in part on determining whether performing deduplication on the client currently outperforms performing deduplication on the server, whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server;
deduplicate the data;
a storage device configured to store the data;
one or more processors configured to execute the data-transfer module and the deduplication module.

### Claim 13 (depends on 12)

The system of claim 12, wherein
the deduplication module is programmed to:
measure data throughput while performing deduplication on the client by measuring a first span of time that elapses while deduplicating a predetermined amount of data on the client and transferring the predetermined amount of data to the server;
measure data throughput while performing deduplication on the server by measuring a second span of time that elapses while transferring the predetermined amount of data to the server and deduplicating the predetermined amount of data on the server;
deduplicate the data before the data is transferred from the client to the server if the first span is shorter than the second span;
deduplicate the data after the data is transferred from the client to the server if the second span is shorter than the first span.

### Claim 14 (depends on 12)

The system of claim 12, wherein the deduplication module is programmed to determine whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server at periodic intervals.

### Claim 15 (depends on 14)

The system of claim 14, wherein the deduplication module is programmed to:
determine how frequently deduplication switches between the client and the server;
set a length of at least one of the periodic intervals based on how frequently deduplication switches between the client and the server.

### Claim 16 (depends on 12)

The system of claim 12, wherein the deduplication module is programmed to determine whether performing deduplication on the client currently outperforms performing deduplication on the server at periodic intervals.

### Claim 17 (depends on 12)

The system of claim 12, wherein the deduplication module is programmed to determine whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server based at least in part on a central-processing-unit load on the client.

### Claim 18 (depends on 12)

The system of claim 12, wherein the deduplication module is programmed to determine whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server based at least in part on a comparison of at least two of:
performance of the client;
performance of the server;
performance of a network that transfers the data from the client to the server.

### Claim 19

A non-transitory computer-readable-storage medium comprising one or more computer executable instructions that, when executed by at least one processor of a computing device, cause the device to:
identify a request to transfer data from a client in a deduplication system to a server in the deduplication system;
determine whether performing deduplication on the client currently outperforms performing deduplication on the server by:
measuring data throughput while performing deduplication on the client;
measuring data throughput while performing deduplication on the server;
comparing the data throughput while performing deduplication on the client with the data throughput while performing deduplication on the server;
determine, based at least in part on determining whether performing deduplication on the client currently outperforms performing deduplication on the server, whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server;
perform the following, the order of which is based on determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server:
deduplicate the data;
transfer the data from the client to the server.

### Claim 20 (depends on 19)

The non-transitory computer-readable-storage medium of claim 19, wherein determining whether to perform deduplication of the data on the client before transferring the data from the client to the server or to perform deduplication of the data on the server after transferring the data from the client to the server is based at least in part on a comparison of at least two of:
performance of the client;
performance of the server;
performance of a network that transfers the data from the client to the server.
