IP Library Granted Patent US 10,037,276
Granted Patent B1
US 10,037,276 · App. 14/931,886 · Granted Jul 31, 2018

Systems and methods for accelerating access to data by pre-warming the cache for virtual machines

Inventors: Chirag Dalal (Pune, IN); Vaijayanti Bharadwaj (Pune, IN); Pradip Kulkarni (Pune, IN)
Assignee: Veritas Technologies LLC
G06F12/0806G06F3/061G06F3/0638G06F3/0683G06F9/45558G06F2009/45583G06F2212/1016G06F2212/60
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,037,276
App. No.
14/931,886
Granted
Jul 31, 2018
Kind
B1
Abstract

The disclosed computer-implemented method for accelerating access to data may include (1) monitoring, at a data-caching system, read requests of a first data-accessing system for a dataset managed by a data-management system, (2) identifying a pattern of the read requests of the first data-accessing system, (3) monitoring, at the data-caching system, read requests of a second data-accessing system for the dataset managed by the data-management system, (4) determining that a pattern of the read requests of the second data-accessing system resembles the pattern of the read requests of the first data-accessing system, and (5) using a portion of the dataset accessed by the read requests of the first data-accessing system to pre-warm a cache of the second data-accessing system. Various other methods, systems, and computer-readable media are also disclosed.

Claims (120)

1. A computer-implemented method for accelerating access to data, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

spawning, at a data-management system for a first application-testing virtual machine, a first virtual disk from a dataset managed by the data-management system;

monitoring, at a data-caching system that serves the first virtual disk to the first application-testing virtual machine during an initialization phase of the first application-testing virtual machine, read requests of the first application-testing virtual machine for the first virtual disk;

identifying, at the data-caching system during the initialization phase, an initialization pattern of the read requests of the first application-testing virtual machine;

transferring, from the data-caching system, the initialization pattern of the read requests of the first application-testing virtual machine to the data-management system;

storing, at the data-management system, the initialization pattern of the read requests of the first application-testing virtual machine in association with the dataset;

detecting, at the data-caching system, an event that indicates an end of the initialization phase and a beginning of an application-testing phase of the first application-testing virtual machine, wherein the first application-testing virtual machine performs application testing during the application-testing phase;

monitoring, at the data-caching system during the application-testing phase, additional read requests of the first application-testing virtual machine for the first virtual disk;

identifying, at the data-caching system during the application-testing phase, an application-testing pattern of the additional read requests of the first application-testing virtual machine;

transferring, from the data-caching system, the application-testing pattern of the additional read requests of the first application-testing virtual machine to the data-management system;

storing, at the data-management system, the application-testing pattern of the additional read requests of the first application-testing virtual machine in association with the dataset;

receiving, at the data-caching system, a request by a second application-testing virtual machine to access a second virtual disk comprising the dataset;

spawning, at the data-management system for the second application-testing virtual machine, the second virtual disk from the dataset, wherein the data-caching system serves the second virtual disk to the second application-testing virtual machine and maintains a cache of the second virtual disk for the second application-testing virtual machine;

requesting, at the data-caching system from the data-management system in response to receiving the request, a pattern of read requests associated with the second virtual disk;

determining, at the data-management system, that the application-testing pattern of the additional read requests of the first application-testing virtual machine is a pattern of read requests associated with the second virtual disk;

transmitting, from the data-management system to the data-caching system, the application-testing pattern of the additional read requests of the first application-testing virtual machine;

monitoring, at the data-caching system, read requests of the second application-testing virtual machine for the second virtual disk;

determining, at the data-caching system, that a pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine; and

using, at the data-caching system in response to determining that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine, a portion of the dataset accessed by the additional read requests of the first application-testing virtual machine to pre-warm the cache of the second virtual disk.

2. The computer-implemented method of claim 1 , wherein using the portion of the dataset accessed by the additional read requests of the first application-testing virtual machine to pre-warm the cache of the second virtual disk comprises pre-warming the cache of the second virtual disk with data most frequently accessed by the additional read requests of the first application-testing virtual machine.

3. The computer-implemented method of claim 1 , further comprising:

requesting, at the data-caching system from the data-management system in response to receiving the request, an additional pattern of read requests associated with the second virtual disk;

determining, at the data-management system, that the initialization pattern of the read requests of the first application-testing virtual machine is an additional pattern of read requests associated with the second virtual disk;

transmitting, from the data-management system to the data-caching system, the initialization pattern of the read requests of the first application-testing virtual machine;

monitoring, at the data-caching system, additional read requests of the second application-testing virtual machine for the second virtual disk;

determining, at the data-caching system, that a pattern of the additional read requests of the second application-testing virtual machine resembles the initialization pattern of the read requests of the first application-testing virtual machine; and

pre-warming, at the data-caching system in response to determining that the pattern of the additional read requests of the second application-testing virtual machine resembles the initialization pattern of the read requests of the first application-testing virtual machine, the cache of the second virtual disk with data accessed by the read requests of the first application-testing virtual machine in the order the data was accessed by the read requests of the first application-testing virtual machine.

4. The computer-implemented method of claim 1 , wherein:

the dataset comprises a copy of a production dataset of a production environment;

the first application-testing virtual machine is configured to test a first modification of the production environment; and

the second application-testing virtual machine is configured to test a second modification of the production environment.

5. The computer-implemented method of claim 1 , wherein the initialization pattern of the read requests of the first application-testing virtual machine comprises:

an initialization pattern that occurred during an application initialization phase of an application running on the first application-testing virtual machine; or

an initialization pattern that occurred as the first application-testing virtual machine booted up.

6. The computer-implemented method of claim 1 , wherein identifying the application-testing pattern of the additional read requests of the first application-testing virtual machine comprises identifying a pattern of the additional read requests of the first application-testing virtual machine that occurred during one of a plurality of tests performed by the first application-testing virtual machine.

7. The computer-implemented method of claim 1 , wherein:

the data-caching system maintains a cache of the first virtual disk for the first application-testing virtual machine; and

the cache of the first virtual disk and the cache of the second virtual disk comprise a single deduplication-aware cache.

8. The computer-implemented method of claim 1 , wherein:

the first application-testing virtual machine runs on a hypervisor;

the second application-testing virtual machine runs on the hypervisor; and

the data-caching system comprises a data-caching module of the hypervisor.

9. The computer-implemented method of claim 1 , wherein determining that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine comprises determining that the pattern of the read requests of the second application-testing virtual machine matches the application-testing pattern of the additional read requests of the first application-testing virtual machine.

10. The computer-implemented method of claim 1 , wherein determining that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine comprises determining that a similarity of the pattern of the read requests of the second application-testing virtual machine to the application-testing pattern of the additional read requests of the first application-testing virtual machine is above a predetermined threshold.

11. The computer-implemented method of claim 1 , wherein:

the first application-testing virtual machine runs on a hypervisor;

the second application-testing virtual machine runs on the hypervisor; and

the data-caching system executes within a third virtual machine running on the hypervisor.

12. The computer-implemented method of claim 1 , wherein:

the first application-testing virtual machine runs on a first hypervisor;

the second application-testing virtual machine runs on a second hypervisor;

the data-caching system comprises:

a first data-caching subsystem that maintains a cache of the first virtual disk for the first application-testing virtual machine and executes within a third virtual machine running on the first hypervisor; and

a second data-caching subsystem that maintains the cache of the second virtual disk for the second application-testing virtual machine and executes within a fourth virtual machine running on the second hypervisor;

the first data-caching subsystem performs the steps of monitoring the read requests of the first application-testing virtual machine, identifying the application-testing pattern of the additional read requests of the first application-testing virtual machine, and transferring the application-testing pattern of the additional read requests of the first application-testing virtual machine to the data-management system; and

the second data-caching subsystem performs the steps of receiving the request by the second application-testing virtual machine to access the second virtual disk, requesting a pattern of read requests associated with the second virtual disk, monitoring the read requests of the second application-testing virtual machine, determining that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine, and using the portion of the dataset accessed by the additional read requests of the first application-testing virtual machine to pre-warm the cache of the second virtual disk.

13. A system for accelerating access to data, the system comprising:

a data-management subsystem that:

spawns, for a first application-testing virtual machine, a first virtual disk from a dataset managed by the data-management system;

spawns, for a second application-testing virtual machine, a second virtual disk from the dataset;

a monitoring module, stored in memory, that:

monitors, at a data-caching system that serves the first virtual disk to the first application-testing virtual machine and the second virtual disk to the second application-testing virtual machine:

read requests of the first application-testing virtual machine for the first virtual disk during an initialization phase of the first application-testing virtual machine;

additional read requests of the first application-testing virtual machine for the first virtual disk during an application-testing phase of the first application-testing virtual machine, wherein the first application-testing virtual machine performs application testing during the application-testing phase; and

read requests of the second application-testing virtual machine for the second virtual disk;

detects, at the data-caching system, an event that indicates an end of the initialization phase and a beginning of the application-testing phase, wherein the data-caching system maintains a cache of the second virtual disk for the second application-testing virtual machine;

an identifying module, stored in memory, that:

identifies, at the data-caching system during the initialization phase, an initialization pattern of the read requests of the first application-testing virtual machine;

transfers, from the data-caching system, the initialization pattern of the read requests of the first application-testing virtual machine to the data-management system;

identifies, at the data-caching system during the application-testing phase, an application-testing pattern of the additional read requests of the first application-testing virtual machine; and

transfers, from the data-caching system, the application-testing pattern of the additional read requests of the first application-testing virtual machine to the data-management system, wherein:

the data-management system further stores the initialization pattern of the read requests of the first application-testing virtual machine and the application-testing pattern of the additional read requests of the first application-testing virtual machine in association with the dataset;

the monitoring module further requests, at the data-caching system in response to receiving a request by the second application-testing virtual machine to access the second virtual disk, a pattern of read requests associated with the second virtual disk from the data-management system;

the data-management system further:

determines that the application-testing pattern of the additional read requests of the first application-testing virtual machine is a pattern of read requests associated with the second virtual disk; and

transmits the application-testing pattern of the additional read requests of the first application-testing virtual machine to the data-caching system;

a determining module, stored in memory, that determines, at the data-caching system, that a pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine;

a pre-warming module, stored in memory, that uses, at the data-caching system in response to the determination that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine, a portion of the dataset accessed by the additional read requests of the first application-testing virtual machine to pre-warm the cache of the second virtual disk; and

at least one processor that executes the monitoring module, the identifying module, the determining module, and the pre-warming module.

14. The system of claim 13 , wherein:

the first application-testing virtual machine runs on a hypervisor;

the second application-testing virtual machine runs on the hypervisor; and

the data-caching system executes within a third virtual machine running on the hypervisor.

15. The system of claim 13 , wherein:

the first application-testing virtual machine runs on a first hypervisor;

the second application-testing virtual machine runs on a second hypervisor; and

the data-caching system comprises:

a first data-caching subsystem that maintains a cache of the first virtual disk for the first application-testing virtual machine and executes within a third virtual machine running on the first hypervisor; and

a second data-caching subsystem that maintains the cache of the second virtual disk for the second application-testing virtual machine and executes within a fourth virtual machine running on the second hypervisor.

16. The system of claim 13 , wherein:

the first application-testing virtual machine runs on a hypervisor;

the second application-testing virtual machine runs on the hypervisor; and

the data-caching system comprises a data-caching module of the hypervisor.

17. The system of claim 13 , wherein:

the dataset comprises a copy of a production dataset of a production environment;

the first application-testing virtual machine is configured to test a first modification of the production environment; and

the second application-testing virtual machine is configured to test a second modification of the production environment.

18. The system of claim 17 , wherein the identifying module identifies the application-testing pattern of the additional read requests of the first application-testing virtual machine by identifying a pattern of the additional read requests of the first application-testing virtual machine that occurred during one of a plurality of tests performed by the first application-testing virtual machine.

19. The system of claim 18 , wherein:

the data-caching system maintains a cache of the first virtual disk for the first application-testing virtual machine; and

the cache of the first virtual disk and the cache of the second virtual disk comprise a single deduplication-aware cache.

20. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of at least one computing device, cause the at least one computing device to:

spawn, at a data-management system for a first application-testing virtual machine, a first virtual disk from a dataset managed by the data-management system;

monitor, at a data-caching system that serves the first virtual disk to the first application-testing virtual machine during an initialization phase of the first application-testing virtual machine, read requests of the first application-testing virtual machine for the first virtual disk;

identify, at the data-caching system during the initialization phase, an initialization pattern of the read requests of the first application-testing virtual machine;

transfer, from the data-caching system, the initialization pattern of the read requests of the first application-testing virtual machine to the data-management system;

store, at the data-management system, the initialization pattern of the read requests of the first application-testing virtual machine in association with the dataset;

detect, at the data-caching system, an event that indicates an end of the initialization phase and a beginning of an application-testing phase of the first application-testing virtual machine, wherein the first application-testing virtual machine performs application testing during the application-testing phase;

monitor, at the data-caching system during the application-testing phase, additional read requests of the first application-testing virtual machine for the first virtual disk;

identify, at the data-caching system during the application-testing phase, an application-testing pattern of the additional read requests of the first application-testing virtual machine;

transfer, from the data-caching system, the application-testing pattern of the additional read requests of the first application-testing virtual machine to the data-management system;

store, at the data-management system, the application-testing pattern of the additional read requests of the first application-testing virtual machine in association with the dataset;

receive, at the data-caching system, a request by a second application-testing virtual machine to access a second virtual disk comprising the dataset;

spawn, at the data-management system for the second application-testing virtual machine, the second virtual disk from the dataset, wherein the data-caching system serves the second virtual disk to the second application-testing virtual machine and maintains a cache of the second virtual disk for the second application-testing virtual machine;

request, at the data-caching system from the data-management system in response to receiving the request, a pattern of read requests associated with the second virtual disk;

determine, at the data-management system, that the application-testing pattern of the additional read requests of the first application-testing virtual machine is a pattern of read requests associated with the second virtual disk;

transmit, from the data-management system to the data-caching system, the application-testing pattern of the additional read requests of the first application-testing virtual machine;

monitor, at the data-caching system, read requests of the second application-testing virtual machine for the second virtual disk;

determine, at the data-caching system, that a pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine; and

use, at the data-caching system in response to determining that the pattern of the read requests of the second application-testing virtual machine resembles the application-testing pattern of the additional read requests of the first application-testing virtual machine, a portion of the dataset accessed by the additional read requests of the first application-testing virtual machine to pre-warm the cache of the second virtual disk.

Assignments (13)
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 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
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 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 4, 2015
From: DALAL, CHIRAG; BHARADWAJ, VAIJAYANTI; KULKARNI, PRADIP
To: SYMANTEC CORPORATION
Reel/Frame 036953/0682 →