IP Library Granted Patent US 10,540,341
Granted Patent B1
US 10,540,341 · App. 15/087,345 · Granted Jan 21, 2020

System and method for dedupe aware storage quality of service

Inventors: Prasanna Wakhare (Mountain View, CA); Sudhakar Paulzagade (Mountain View, CA); Saurabh Jain (Mountain View, CA)
Assignee: Veritas Technologies LLC
G06F16/2365G06F13/102G06F16/2477H04L47/2441H04L47/2483
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,540,341
App. No.
15/087,345
Granted
Jan 21, 2020
Kind
B1
Abstract

A system and method for implementing a Quality of Service based upon data deduplication is provided. The method may include deduplicating data and receiving a corresponding I/O request; wherein the data includes an associated dedupe count. The method may further include performing the I/O request based upon the dedupe count. For example, where no deduplication exists as indicated by a dedupe count of zero, the I/O request may be scheduled for processing when the sum of the current clock tick and the tag ratio are less than or equal to the next clock tick. In the alternative, where deduplication exists as indicated by a dedupe count that is greater than zero, the I/O request may be scheduled for processing, when the sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to the next clock tick.

Claims (116)

1. A method of storage management, comprising:

deduplicating data;

receiving an Input/Output (I/O) request;

detecting a count associated with the deduplicated data for an application; and

scheduling the I/O request associated with a storage unit based upon the detected count, including:

detecting a current clock tick;

calculating a dedupe ratio by dividing the detected count by an assigned bandwidth;

calculating a tag ratio by dividing an I/O size by the assigned bandwidth;

processing, when the detected count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a next clock tick; and

processing, when the detected count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the ratio, and the tag ratio are less than or equal to the next clock tick;

wherein bandwidth is assigned to the I/O request based upon the detected count and a Quality of Service (QoS) policy associated with packet flow to account for deduplication.

2. The method of claim 1 , wherein the deduplicating data comprises:

fingerprinting data;

identifying the duplicate data using the fingerprints of data;

mapping a location associated with the duplicate data;

storing the mapping; and

deleting the duplicate data from storage.

3. The method of claim 1 , wherein the detecting the count comprises:

retrieving a map of locations associated with duplicated data;

counting the mapped locations associated with a client; and

setting the detected count to equal the mapped location count.

4. The method of claim 1 , wherein detecting the current clock tick comprises:

setting a virtual clock; and

reading the virtual clock at a predetermined time to generate the current clock tick.

5. A method of storage management, comprising:

deduplicating data;

receiving an Input/Output (I/O) request;

detecting a count associated with the deduplicated data for an application; and

scheduling the I/O request associated with a storage unit based upon the detected count and other I/O requests that have been received, including:

implementing a bucket, by a counter, configured to receive a token corresponding to each of the I/O requests and detect a number of tokens received;

detecting when the number of tokens in the bucket is greater than a predetermined threshold;

setting, in response to the detected number of tokens exceeding the predetermined threshold, a current dock tick equal to a first predetermined value;

setting, in response to the detected number of tokens not exceeding the predetermined threshold, the current clock tick equal to a second predetermined value;

calculating a dedupe ratio by dividing the detected count by an assigned bandwidth;

calculating a tag ratio by dividing an I/O size by the assigned bandwidth;

processing, when the detected count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a next clock tick; and

processing, when the count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to the next clock tick; and

wherein bandwidth is assigned to the I/O request based upon the detected count and a Quality of Service (QoS) policy associated with packet flow to account for deduplication.

6. A storage controller comprising:

a memory; and

a processor configured to:

deduplicate data;

receive an Input/Output (I/O) request;

detect a count associated with the deduplicated data for an application; and

schedule the I/O request in a storage unit based upon the detected count, including:

detect a current clock tick;

calculate a dedupe ratio by dividing the detected count by an assigned bandwidth;

calculate a tag ratio by dividing an I/O size by the assigned bandwidth;

process, when the detected count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a sum of the current clock tick and 1; and

process, when the detected count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to a sum of the current clock tick and 1; and

wherein bandwidth is assigned to the I/O request based upon the detected count and a Quality of Service (QoS) policy associated with packet flow to account for deduplication.

7. The storage controller of claim 6 , wherein the processor for deduplicating data is configured to:

fingerprint data;

identify the duplicate data using the fingerprints of data;

map a location associated with the duplicate data;

store the map; and

delete the duplicate data from storage.

8. The storage controller of claim 6 , wherein the processor for detecting the count is configured to:

retrieve a map of locations associated with duplicated data;

count the mapped locations associated with a client; and

set the detected count to equal the mapped location count.

9. A storage controller comprising:

a memory; and

a processor configured to:

deduplicate data;

receive an Input/Output (I/O) request;

detect a count associated with the deduplicated data for an application; and

schedule the I/O request in a storage unit, based upon the detected count and other I/O requests that have been received, to:

implement a bucket, by a counter, configured to receive a to ken corresponding to each I/O request received and detect a number of tokens received;

detect when the number of tokens in the bucket is greater than a predetermined threshold;

set, in response to the detected number of tokens exceeding the predetermined threshold, the current clock tick equal to a first predetermined value;

set, in response to the detected number of tokens not exceeding the predetermined threshold, a current clock tick equal to a second predetermined value;

calculate a dedupe ratio by dividing the detected count by an assigned bandwidth;

calculate a tag ratio by dividing an I/O size by the assigned bandwidth;

process, when the detected count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a sum of the current clock tick and 1; and

process, when the detected count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to a sum of the current clock tick and 1.

10. A non-transitory computer-readable medium including code for performing a method, the method comprising:

deduplicating data;

receiving an Input/Output (I/O) request;

detecting a dedupe count associated with the deduplicated data for an application; and

scheduling the I/O request in a storage unit based upon the detected dedupe count, including:

detecting a current clock tick;

calculating a dedupe ratio by dividing the dedupe count by an assigned bandwidth;

calculating a tag ratio by dividing an I/O size by the assigned bandwidth;

processing, when the dedupe count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a next clock tick; and

processing, when the dedupe count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to the next clock tick;

wherein bandwidth is assigned to the I/O request based upon the detected dedupe count and a Quality of Service (QoS) policy associated with packet flow to account for deduplication.

11. The non-transitory computer-readable medium of claim 10 , wherein the deduplicating data comprises:

fingerprinting data;

identifying the duplicate data using the fingerprints of data;

mapping a location associated with the duplicate data;

storing the mapping; and

deleting the duplicate data from storage.

12. The non-transitory computer-readable medium of claim 10 , wherein the detecting dedupe count comprises:

retrieving the mapping;

counting mapped locations associated with a client; and

setting the dedupe count to equal the mapped location count.

13. A non-transitory computer-readable medium including code for performing a method, the method comprising:

deduplicating data;

receiving an Input/Output (I/O) request;

detecting a dedupe count associated with the deduplicated data for an application; and

scheduling the I/O request in a storage unit based upon the dedupe count and other I/O requests that have been received, including:

implementing a bucket, by a counter, configured to receive a token corresponding to each I/O request received and detect a number of tokens received;

detecting when the number of tokens in the bucket is greater than a predetermined threshold;

setting, in response to the detected number of tokens exceeding the predetermined threshold, a current clock tick equal to a first predetermined value;

setting, in response to the detected number of tokens not exceeding the predetermined threshold, the current clock tick equal to a second predetermined value;

calculating a dedupe ratio by dividing the dedupe count by an assigned bandwidth;

calculating a tag ratio by dividing an I/O size by the assigned bandwidth;

processing, when the dedupe count is equal to 0, the I/O request when a sum of the current clock tick, and the tag ratio are less than or equal to a sum of the current clock tick and 1; and

processing, when the dedupe count is greater than 0, the I/O request when a sum of the current clock tick, a negative value of the dedupe ratio, and the tag ratio are less than or equal to a sum of the current clock tick and 1;

wherein the deduplicating data comprises:

fingerprinting data;

identifying the duplicate data using the fingerprints of data;

mapping a location associated with the duplicate data;

storing the mapping; and

deleting the duplicate data from storage.

Assignments (10)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069632/0613 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2018
From: PAULZAGADE, SUDHAKAR; WAKHARE, PRASANNA; JAIN, SAURABH
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 045667/0949 →
PATENT SECURITY AGREEMENT Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →