IP Library Granted Patent US 9,413,527
Granted Patent B2
US 9,413,527 · App. 13/615,422 · Granted Aug 9, 2016

Optimizing signature computation and sampling for fast adaptive similarity detection based on algorithm-specific performance

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 9,413,527
App. No.
13/615,422
Filed
Sep 13, 2012
Granted
Aug 9, 2016
Kind
B2
Art Unit
2139
USPC
711/118
Abstract

A set of similarity detection algorithms and techniques for determining which signature calculation, sampling, and generation algorithms may be most beneficially applied to application related data are described herein. These algorithms work well with SSD caching software to product high speed, high accuracy, and low false-positive detections. Because the different algorithms may show different performance depending on data sets and different applications, to achieve optimal performance, a calibration process may be applied to each application and associated data set to select the best combination of signature computation and sampling technique. The new algorithms are also very fast with execution times an order of magnitude smaller than existing techniques. While some of the algorithms are presented using examples for the purpose of easy readability, these algorithms are very general and can be easily applied to broad range of cases.

Claims (54)

1. A system comprising:

a processor configured to

calculate a plurality of sub-signatures for a portion of data associated with an application using a plurality of distinct sub-signature calculation algorithms, thereby generating sets of distinctly calculated sub-signatures;

sample the set of sub-signatures with at least two sub-signature sampling algorithms;

determine and store in a processor accessible memory reference and associated blocks for the sampled set of sub-signatures;

calculate and store in a processor accessible memory false positives for the sampled set of sub-signatures; and

an algorithm selection module configured to select a sub-signature calculation algorithm from the plurality of distinct sub-set signature calculation algorithms and one of the at least two sub-signature sampling algorithms that produce at least one of the largest number of reference and associated blocks and the smallest number of false positives for performing similarity detection of data associated with the application.

2. The system of claim 1 wherein the first of the plurality of sub-signature calculation algorithms calculates block sub-signatures based on parallel additions and data shifts.

3. The system of claim 2 wherein the processor is further configured to

sum a plurality of contiguous three byte shingles in parallel to generate a plurality of three-byte signatures;

shift the plurality of contiguous three-byte shingles by one byte to produce a new configuration of three byte-shingles for summing; and

repeat the above mentioned steps of summing and shifting the plurality of contiguous three-byte shingles.

4. The system of claim 1 wherein the first of the plurality of sub-signature calculation algorithms calculates block sub-signatures based on CRC checksum of a multi-byte shingle.

5. The system of claim 4 wherein the processor is further configured to generate a checksum for a shingle of eight contiguous bytes of data;

shift the shingle by one byte to produce a new eight byte shingle for generating a checksum; and

repeat the above mentioned steps of generating the checksum and shifting the shingle by one byte.

6. A method comprising:

calculating a plurality of sub-signatures for a portion of data associated with an application using a plurality of distinct sub-signature calculation algorithms, thereby generating sets of distinctly calculated sub-signatures;

sampling each of the sets of distinctly calculated sub-signatures using at least two distinct sub-signature sampling algorithms;

determining and storing in a processor accessible memory counts of reference and associated blocks for each of the sampled sets of distinctly calculated sub-signatures;

calculating and storing in a processor accessible memory counts of false positives for each of the sampled sets of distinctly calculated sub-signatures; and

selecting a distinct sub-signature calculation algorithm and one of the at least two distinct sub-signature sampling algorithms that produce at least one of the largest count of reference and associated blocks and the smallest count of false positives for performing similarity detection of data associated with the application.

7. The method of claim 6 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures based on parallel additions and data shifts.

8. The method of claim 7 further comprising

summing a plurality of contiguous three byte shingles in parallel to generate a plurality of three-byte signatures;

shifting the plurality of contiguous three-byte shingles by one byte to produce a new configuration of three byte-shingles for summing; and

repeating the above mentioned steps of summing and shifting the plurality of contiguous three-byte shingles.

9. The method of claim 6 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures based on CRC checksum of a multi-byte shingle.

10. The method of claim 9 further comprising

generating a checksum for a shingle of eight contiguous bytes of data;

shifting the shingle by one byte to produce a new eight byte shingle for generating a checksum; and

repeating the above mentioned steps of generating the checksum and shifting the shingle by one byte.

11. The method of claim 6 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures based on mod operations using Mersenne's prime number as a modulus.

12. The method of claim 6 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures by generating a signature for each shingle based on a Manber's random polynomial approach.

13. The method of claim 6 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures by recursively generating Rabin fingerprints.

14. The method of claim 6 wherein the reference block comprises a block of data for which calculated signature popularity exceeds a threshold.

15. The method of claim 14 wherein the threshold IS a reference block popularity threshold.

16. A method comprising:

using a processor, performing the following steps within a calibration module of a cache management algorithm for each of a plurality of distinct sub-signature calculation algorithms;

calculate a plurality of sub-signatures for a portion of data associated with an application using a plurality of distinct sub-signature calculation algorithms, thereby generating sets of distinctly calculated sub-signatures;

sampling the set of sub-signatures with at least two sub-signature sampling algorithms;

determining and storing in a processor accessible memory reference and associated blocks for the sampled set of sub-signatures;

calculating and storing in a processor accessible memory false positives for the sampled set of sub-signatures; and

selecting a sub-signature calculation algorithm from the plurality of distinct sub-set signature calculation algorithms and one of the at least two sub-signature sampling algorithms that produce at least one of the largest number of reference and associated blocks and the smallest number of false positives for managing a cache by performing similarity detection of data associated with the application.

17. The method of claim 16 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures based on parallel additions and data shifts.

18. The method of claim 17 further comprising

summing a plurality of contiguous three byte shingles in parallel to generate a plurality of three-byte signatures;

shifting the plurality of contiguous three-byte shingles by one byte to produce a new configuration of three byte-shingles for summing; and

repeating the above mentioned steps of summing and shifting the plurality of contiguous three-byte shingles.

19. The method of claim 16 wherein an at least one distinct sub-signature calculation algorithm of the plurality of distinct sub-signature calculation algorithms calculates block sub-signatures based on CRC checksum of a multi-byte shingle.

20. The method of claim 19 further comprising

generating a checksum for a shingle of eight contiguous bytes of data;

shifting the shingle by one byte to produce a new eight byte shingle for generating a checksum; and

repeating the above mentioned steps of generating the checksum and shifting the shingle by one byte.

Assignments (4)
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →