IP Library Granted Patent US 8,502,710
Granted Patent B2
US 8,502,710 · App. 13/231,136 · Granted Aug 6, 2013

Methods and computer program products for providing a compressed circular buffer for efficient storage of network performance data

Inventor: John B. Bley (Durham, NC)
Assignee: BlueStripe Software, Inc.
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 8,502,710
App. No.
13/231,136
Granted
Aug 6, 2013
Kind
B2
Abstract

Provided are methods and computer program products for providing a circular buffer of values representing performance data that corresponds to a network application on a network device. Methods may include compressing a binary representation of a value using bit-oriented compression that is biased based on a frequency of occurrence of values and/or value ranges, and appending the compressed binary representation to a circular buffer. The bit-oriented compressed may be biased such that values and/or value ranges that occur with a higher degree of frequency are compressed to a higher degree, while values and/or value ranges that occur with a lower degree of frequency are compressed to a lower degree.

Claims (91)

1. A method for providing a circular buffer of values representing performance data that corresponds to a network application on a network device, the method comprising:

compressing a binary representation of a value using bit-oriented compression that is biased based on a frequency of occurrence of values and/or value ranges;

appending the compressed binary representation to a circular buffer;

decompressing a plurality of compressed binary representations appended to the circular buffer; and

generating an array containing a plurality of respective values corresponding to the plurality of decompressed binary representations,

wherein the compressing a binary representation and appending the compressed binary representation comprise operations performed using at least one computer processor.

2. A method for providing a circular buffer of values representing performance data that corresponds to a network application on a network device, the method comprising:

compressing a binary representation of a value using bit-oriented compression that is biased based on a frequency of occurrence of values and/or value ranges; and

appending the compressed binary representation to a circular buffer,

wherein the compressing a binary representation and appending the compressed binary representation comprise operations performed using at least one computer processor, and

wherein compressing the binary representation comprises:

compressing values and/or value ranges that occur at a first frequency with a first degree of compression; and

compressing values and/or value ranges that occur at a second frequency with a second degree of compression;

wherein the first frequency is greater than the second frequency and the first degree of compression is greater than the second degree of compression.

3. A method according to claim 1 , wherein the frequency of occurrence is positively correlated with a degree of compression.

4. A method according to claim 1 , wherein the bit-oriented compression includes a Huffman code, a Gray code, an Elias gamma code, a Golomb code, and/or a static Huffman code.

5. A method for providing a circular buffer of values representing performance data that corresponds to a network application on a network device, the method comprising:

compressing a binary representation of a value using bit-oriented compression that is biased based on a frequency of occurrence of values and/or value ranges; and

appending the compressed binary representation to a circular buffer; and

allocating a data store defining the circular buffer, the data store including:

an array of bytes;

a start index that is operable to point into the array of bytes at a most significant bit of an oldest compressed binary representation stored in the array of bytes;

an end index that is operable to point into the array of bytes at a most significant bit of a newest compressed binary representation stored in the array of bytes; and

a rolling sum field that is operable to store an accumulation value of values stored in the array of bytes,

wherein the compressing a binary representation and appending the compressed binary representation comprise operations performed using at least one computer processor.

6. A method according to claim 5 , further comprising initializing the array of bytes to store null values.

7. A method according to claim 5 , wherein appending the compressed binary representation to the circular buffer comprises:

adding an integral number that corresponds to a value of the compressed binary representation to the accumulation value stored in the rolling sum field;

incrementing the end index by a first quantity that corresponds to a size of the newest compressed binary representation pointed to by the end index;

subtracting an integral number that corresponds to a value of the oldest compressed binary representation pointed to by the start index from the accumulation value stored in the rolling sum field;

incrementing the start index by a second quantity that corresponds to a size of the oldest compressed binary representation pointed to by the start index; and

inserting the compressed binary representation into the array of bytes at the location pointed to by the incremented end index.

8. A method according to claim 7 , wherein incrementing the end index by the first quantity comprises:

determining that incrementing the end index by the first quantity exceeds a maximum bound of the array of bytes by a third quantity;

setting the end index to point to a minimum bound of the array of bytes; and

incrementing the end index by the third quantity, and

wherein incrementing the start index by the second quantity comprises:

determining that incrementing the start index by the second quantity exceeds a maximum bound of the ordered array by a fourth quantity;

setting the start index to point to a minimum bound of the array of bytes; and

incrementing the start index by the fourth quantity.

9. A method according to claim 7 , wherein inserting the compressed binary representation into the array of bytes at the location pointed to by the incremented end index comprises:

determining, prior to inserting the compressed binary representation, that a size of the compressed binary representation exceeds a size of available space in the array of bytes;

allocating a data store defining an expanded array of bytes having a size greater than a size of the array of bytes;

copying data from the array of bytes into the expanded array to create an available space in the expanded array having a size greater than the size of available space in the array of bytes;

setting the start index to point into the expanded array at a most significant bit of the oldest compressed binary representation that is stored in the expanded array;

setting the end index to point into the expanded array at a most significant bit of the newest compressed binary representation that is stored in the expanded array;

incrementing the end index by the first quantity; and

inserting the compressed binary representation into the expanded array at the location pointed to by the incremented end index.

10. A method according to claim 9 , wherein the expanded array of bytes has a size greater than the size of the array of bytes by a given constant amount.

11. A method according to claim 9 , wherein the expanded array of bytes has a size greater than the size of the array of bytes by an amount based on the size of the array of bytes and a count of values stored in the array of bytes.

12. A computer program product comprising a non-transitory computer readable storage medium having computer readable program code embodied therein, the computer readable program code configured to carry out the method of claim 1 .

13. A computer program product comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising:

computer readable program code configured to allocating a data store defining a circular buffer, the data store including:

an array of bytes;

a start index that is operable to point into the array of bytes at a most significant bit of an oldest compressed binary representation stored in the array of bytes;

an end index that is operable to point into the array of bytes at a most significant bit of a newest compressed binary representation stored in the array of bytes; and

a rolling sum field that is operable to store an accumulation value of values stored in the array of bytes;

computer readable program code configured to compress a binary representation of a value using bit-oriented compression that is biased based on a frequency of occurrence of values and/or value ranges;

computer readable program code configured to append the compressed binary representation to a circular buffer;

computer readable program code configured to decompress a plurality of compressed binary representations appended to the circular buffer; and

computer readable program code configured to generate an array containing a plurality of respective values corresponding to the plurality of decompressed binary representations,

wherein computer readable program code configured to append the compressed binary representation to the circular buffer comprises:

computer readable program code configured to add an integral number that corresponds to a value of the compressed binary representation to the accumulation value stored in the rolling sum field;

computer readable program code configured to increment the end index by a first quantity that corresponds to a size of the newest compressed binary representation pointed to by the end index;

computer readable program code configured to subtract an integral number that corresponds to a value of the oldest compressed binary representation pointed to by the start index from the accumulation value stored in the rolling sum field;

computer readable program code configured to increment the start index by a second quantity that corresponds to a size of the oldest compressed binary representation pointed to by the start index; and

computer readable program code configured to insert the compressed binary representation into the array of bytes at the location pointed to by the incremented end index.

14. A computer program product according to claim 13 , wherein computer readable program code configured to compress a binary representation comprises:

computer readable program code configured to compress values and/or ranges that occur at a first frequency with a first degree of compression; and

computer readable program code configured to compress values and/or ranges that occur at a second frequency with a second degree of compression;

wherein the first frequency is greater than the second frequency and the first degree of compression is greater than the second degree of compression.

15. A computer program product according to claim 13 , wherein the bit-oriented compression includes a Huffman code, a Gray code, an Elias gamma code, a Golomb code, and/or a static Huffman code.

16. A computer program product according to claim 13 , wherein computer readable program code configured to increment the end index by the first quantity comprises:

computer readable program code configured to determine that incrementing the end index by the first quantity exceeds a maximum bound of the array of bytes by a third quantity;

computer readable program code configured to set the end index to point to a minimum bound of the array of bytes; and

computer readable program code configured to increment the end index by the third quantity, and

wherein computer readable program code configured to increment the start index by the second quantity comprises:

computer readable program code configured to determine that incrementing the start index by the second quantity exceeds a maximum bound of the ordered array by a fourth quantity;

computer readable program code configured to set the start index to point to a minimum bound of the array of bytes; and

computer readable program code configured to increment the start index by the fourth quantity.

17. A computer program product according to claim 13 , wherein computer readable program code configured to insert the compressed binary representation into the array of bytes at the location pointed to by the incremented end index comprises:

computer readable program code configured to determine, prior to inserting the compressed binary representation, that a size of the compressed binary representation exceeds a size of available space in the array of bytes;

computer readable program code configured to allocate a data store defining an expanded array of bytes having a size greater than a size of the array of bytes;

computer readable program code configured to copy data from the array of bytes into the expanded array to create an available space in the expanded array having a size greater than the size of available space in the array of bytes;

computer readable program code configured to set the start index to point into the expanded array at a most significant bit of the oldest compressed binary representation that is stored in the expanded array;

computer readable program code configured to set the end index to point into the expanded array at a most significant bit of the newest compressed binary representation that is stored in the expanded array;

computer readable program code configured to increment the end index by the first quantity; and

computer readable program code configured to insert the compressed binary representation into the expanded array at the location pointed to by the incremented end index.

18. A computer program product according to claim 17 , wherein the expanded array of bytes has a size greater than the size of the array of bytes by a given constant amount.

19. A computer program product according to claim 17 , wherein the expanded array of bytes has a size greater than the size of the array of bytes by an amount based on the size of the array of bytes and a count of integral numbers stored in the array of bytes.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2015
From: BLUE STRIPE SOFTWARE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 035966/0655 →
RELEASE OF SECURITY INTEREST Recorded Jun 19, 2015
From: SQUARE 1 BANK
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 035869/0518 →
SECURITY INTEREST Recorded Oct 7, 2014
From: BLUE STRIPE SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 033903/0255 →
RELEASE OF SECURITY INTEREST Recorded Oct 4, 2013
From: SQUARE 1 BANK
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 031351/0639 →
SECURITY AGREEMENT Recorded Jul 29, 2013
From: BLUE STRIPE SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 030919/0136 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2012
From: BLEY, JOHN B.
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 027540/0059 →
Continuity (1)
Related Publication 20130063288A1 · Mar 14, 2013