IP Library Granted Patent US 9,606,887
Granted Patent B2
US 9,606,887 · App. 14/198,204 · Granted Mar 28, 2017

Persisting large volumes of data in an efficient unobtrusive manner

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,606,887
App. No.
14/198,204
Granted
Mar 28, 2017
Kind
B2
Abstract

Embodiments provide a data persisting mechanism that allows for efficient, unobtrusive persisting of large volumes of data while optimizing the use of system resources by the persisting process. In an embodiment, the persisting process includes a self-tuning algorithm that constantly monitors persistence performance and that adjusts persistence time to maintain performance within user-defined criteria. From one aspect, this allows the persisting process to seamlessly adapt to changes in system environment (speeding up persistence during times of low processor usage and slowing down persistence during times of high processor usage) and to reduce or eliminate CPU spikes caused by persisting process. From another aspect, the persisting process results in the data being persisted as quickly as possible given the system constraints, thereby minimizing the possibility of data loss.

Claims (56)

1. A system, comprising:

a non-transitory computer readable storage medium; and

a processor, coupled to the non-transitory computer readable storage medium, configured to execute an application, wherein the application is configured to:

determine, based on a current performance level of the system, a first persistence data rate for persisting a plurality of objects to the storage, wherein the plurality of objects that are to be persisted in each persistence cycle time are divided into a plurality of object segments of equal size, wherein the persistence cycle time is divided into a plurality of time segments, and wherein each object segment is persisted during each time segment;

if a persistence time required to persist the plurality of objects to the storage at the first persistence data rate is within a persistence cycle time, persist the plurality of objects to the storage at the first persistence data rate; and

if the persistence time required to persist the plurality of objects to the storage at the first persistence data rate exceeds the persistence cycle time,

increase the first persistence data rate to generate a second persistence data rate, wherein said increasing the first persistent rate comprises increasing a segment size of one or more object segments, decreasing a segment length of one or more time segments, or a combination thereof, and

persist the plurality of objects to the storage at the second persistence data rate.

2. The system of claim 1 , wherein the application is a performance monitoring application, the application further configured to:

monitor a plurality of system components to generate performance metrics data; and

process the performance metrics data to generate the plurality of objects.

3. The system of claim 1 , wherein the application is further configured to:

increase a previous persistence data rate to determine the first persistence data rate when the current performance level exceeds a desired performance level; and

decrease a previous persistence data rate to determine the first persistence data rate when the current performance level is below the desired performance level.

4. The system of claim 3 , wherein the current performance level exceeds the desired performance level, and wherein a first persistence time incurred to persist the plurality of objects to the storage at the first persistence data rate is lower than a previous persistence time incurred to persist an equal number of objects to the storage at the previous persistence data rate in a previous persistence cycle.

5. The system of claim 3 , wherein the application is further configured to:

increase a current segment size, the current segment size indicating a number of objects to persist per a current segment length, to increase the previous persistence data rate; and

decrease the current segment size to decrease the previous persistence data rate.

6. The system of claim 5 , wherein the application is further configured to:

determine a required number of segments required to persist the plurality of objects within the persistence cycle time based on the current segment size; and

compare the required number of segments to a current number of segments in the persistence cycle time.

7. The system of claim 6 , wherein the required number of segments exceeds the current number of segments, the application is further configured to:

decrease the current segment length to increase the first persistence data rate to generate the second persistence data rate.

8. A method for persisting data to a storage responsive to system performance, comprising:

determining, based on a current system performance level, a first persistence data rate for persisting a plurality of objects to the storage, wherein the plurality of objects that are to be persisted in each persistence cycle time are divided into a plurality of object segments of equal size, wherein the persistence cycle time is divided into a plurality of time segments, and wherein each object segment is persisted during each time segment;

if a persistence time required to persist the plurality of objects to the storage at the first persistence data rate is within a persistence cycle time, persisting the plurality of objects to the storage at the first persistence data rate; and

if the persistence time required to persist the plurality of objects to the storage at the first persistence data rate exceeds the persistence cycle time,

increasing the first persistence data rate to generate a second persistence data rate, wherein said increasing the first persistent rate comprises increasing a segment size of one or more object segments, decreasing a segment length of one or more time segments, or a combination thereof, and

persisting the plurality of objects to the storage at the second persistence data rate.

9. The method of claim 8 , further comprising:

increasing a previous persistence data rate to determine the first persistence data rate when the current system performance level exceeds a desired performance level; and

decreasing the previous persistence data rate to determine the first persistence data rate when the current system performance level is below the desired performance level.

10. The method of claim 9 , wherein the current system performance level exceeds the desired performance level, and wherein a first persistence time incurred to persist the plurality of objects to the storage at the first persistence data rate is lower than a previous persistence time incurred to persist an equal number of objects to the storage at the previous persistence data rate in a previous persistence cycle.

11. The method of claim 9 , wherein increasing the previous persistence data rate comprises increasing a current segment size, the current segment size indicating a number of objects to persist per a current segment length, and wherein decreasing the previous persistence data rate comprises decreasing the current segment size.

12. The method of claim 11 , wherein the current system performance level is below the desired performance level, the method further comprising:

determining a required number of segments required to persist the plurality of objects within the persistence cycle time based on the current segment size; and

comparing the required number of segments to a current number of segments in the persistence cycle time.

13. The method of claim 12 , wherein the required number of segments exceeds the current number of segments, and wherein increasing the first persistence data rate to generate the second persistence data rate comprises decreasing the current segment length.

14. A computer program product comprising a non-transitory computer readable medium having control logic stored therein, the control logic, when executed by a processor, causes the processor to perform a method for persisting data to a storage responsive to system performance, the method comprising:

determining, based on a current system performance level, a first persistence data rate for persisting a plurality of objects to the storage, wherein the plurality of objects that are to be persisted in each persistence cycle time are divided into a plurality of object segments of equal size, wherein the persistence cycle time is divided into a plurality of time segments, and wherein each object segment is persisted during a corresponding time segment;

if a persistence time required to persist the plurality of objects to the storage at the first persistence data rate is within a persistence cycle time, persisting the plurality of objects to the storage at the first persistence data rate; and

if the persistence time required to persist the plurality of objects to the storage at the first persistence data rate exceeds the persistence cycle time,

increasing the first persistence data rate to generate a second persistence data rate, wherein said increasing the first persistent rate comprises increasing a segment size of one or more object segments, decreasing a segment length of one or more time segments, or a combination thereof, and

persisting the plurality of objects to the storage at the second persistence data rate.

15. The computer program product of claim 14 , the method further comprising:

increasing a previous persistence data rate to determine the first persistence data rate when the current system performance level exceeds a desired performance level; and

decreasing the previous persistence data rate to determine the first persistence data rate when the current system performance level is below the desired performance level.

16. The computer program product of claim 15 , wherein the current performance level exceeds the desired performance level, and wherein a first persistence time incurred to persist the plurality of objects to the storage at the first persistence data rate is lower than a previous persistence time incurred to persist an equal number of objects to the storage at the previous persistence data rate in a previous persistence cycle.

17. The computer program product of claim 15 , wherein increasing the previous persistence data rate comprises increasing a current segment size, the current segment size indicating a number of objects to persist per a current segment length, and wherein decreasing the previous persistence data rate comprises decreasing the current segment size.

18. The computer program product of claim 17 , wherein the current system performance level is below the desired performance level, the method further comprising:

determining a required number of segments required to persist the plurality of objects within the persistence cycle time based on the current segment size; and

comparing the required number of segments to a current number of segments in the persistence cycle time.

19. The computer program product of claim 18 , wherein the required number of segments exceeds the current number of segments, and wherein increasing the first persistence data rate to generate the second persistence data rate comprises decreasing the current segment length.

20. The computer program product of claim 14 , the method further comprising:

monitor a plurality of system components to generate performance metrics data; and

processing the performance metrics data to generate the plurality of objects.

Assignments (14)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 10, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059009/0906 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2020
From: RIVERBED TECHNOLOGY, INC.
To: ATERNITY LLC
Reel/Frame 054778/0540 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2014
From: MOKOS, JOSEPH D.; MACOMBER, EDWARD W.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032358/0313 →