IP Library Granted Patent US 11,061,584
Granted Patent B2
US 11,061,584 · App. 15/425,857 · Granted Jul 13, 2021

Profile-guided data preloading for virtualized resources

Inventors: Marcin Piotr Kowalski (Seattle, WA); David R. Richardson (Seattle, WA); James Alfred Gordon Greenfield (Cape Town, ZA); Jacobus Johannes Nicolaas Van Der Merwe (Cape Town, ZA); Matthew James Eddey (Cape Town, ZA); Christopher Richard Jacques De Kadt (Seattle, WA); Peter Nicholas Desantis (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F3/0619G06F3/0604G06F3/065G06F3/067G06F3/0664G06F3/0665G06F3/0673G06F3/0689
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 11,061,584
App. No.
15/425,857
Granted
Jul 13, 2021
Kind
B2
Abstract

Methods and apparatus for profile-guided preloading for virtualized resources are described. A block-level storage volume whose contents are to be populated via data transfers from a repository service is programmatically attached to a compute instance. An indication of data transfers from the repository to a block storage service implementing the volume is obtained, corresponding to a particular phase of program execution at the compute instance. A storage profile is generated, based at least in part on the indication of data transfers. The storage profile is subsequently used to pre-load data from the repository service on behalf of other compute instances.

Claims (44)

1. A system, comprising:

one or more computing devices configured to:

implement a plurality of related compute instances at a virtualized compute service of a provider network, wherein the related compute instances implement related applications, wherein a block-level storage volume implemented at a block storage service of the provider network is programmatically attached for network access by a compute instance of the plurality of related compute instances, and wherein, in response to one or more I/O requests to the block-level storage volume from the compute instance, data is transferred from an object at a storage repository service of the provider network to populate the block-level storage volume;

pre-load at least a portion of the object at the storage repository service into a shared storage cache based at least in part on access profiles associated with the plurality of related compute instances; and

transfer data from the shared storage cache to the block-level storage volume in response to the one or more I/O requests to the block-level storage volume.

2. The system as recited in claim 1 , wherein the storage repository service comprises a key-value store configured to store unstructured data objects accessible via a web-services interface.

3. The system as recited in claim 1 , wherein the one or more computing devices are further configured to:

select the portion of the object at the storage repository service to be pre-loaded based at least in part on one or more of: (a) a determination that I/O requests described in the access profiles are expected to be repeated, with a probability above a threshold level, with a probability above a threshold level, by one or more other compute instances, (b) a determination of performance costs associated with the one or more data transfers from the object at the storage repository service, or (c) a profiling request.

4. The system as recited in claim 1 , wherein the object comprises a volume snapshot generated in response to a client request.

5. The system as recited in claim 1 , wherein the one or more computing devices are further configured to:

in response to a determination that an I/O request from the compute instance cannot be satisfied from the shared storage cache,

store a record of the determination that the I/O request could not be satisfied; and

modify an access profile associated with the compute instance based at least in part on the record.

6. A method, comprising:

performing, by one or more computing devices:

programmatically attaching a block-level storage volume implemented at a block storage service of a provider network to a compute instance of a plurality of related compute instances, wherein the plurality of related compute instances implement related applications, and wherein, in response to one or more I/O requests to the block-level storage volume from the compute instance, the block storage service is configured to transfer data from an object at a storage repository service of the provider network to populate the block-level storage volume;

pre-loading at least a portion of the object into a shared storage cache, wherein access profiles associated with the plurality of related compute instances are used to identify the portion of the object to be pre-loaded;

transferring data from the shared storage cache to the block-level storage volume in response to the one or more I/O requests to the block-level storage volume from the compute instance.

7. The method as recited in claim 6 , further comprising performing, by the one or more computing devices:

implementing, at the storage repository service, a web services programmatic interface to provide access to the object.

8. The method as recited in claim 6 , wherein the related applications comprise boot sequences of the plurality of related compute instances.

9. The method as recited in claim 6 , wherein the related applications comprise database management systems.

10. The method as recited in claim 6 , wherein the object comprises a volume snapshot generated in response to a client request.

11. The method as recited in claim 6 , further comprising performing, by the one or more computing devices:

storing a record of a determination that an I/O request from the compute instance could not be satisfied by the shared storage cache; and

modifying an access profile associated with the compute instance based at least in part on the record.

12. The method as recited in claim 6 , further comprising performing, by the one or more computing devices:

selecting the portion of the object to be pre-loaded based at least in part on one or more of: (a) a determination that I/O requests described in the access profiles are expected to be repeated, with a probability above a threshold level, by one or more other compute instances, (b) a determination of performance costs associated with the one or more data transfers from the object at the storage repository service, or (c) a profiling request.

13. A non-transitory computer-accessible storage medium storing program instructions that when executed on one or more processors:

obtain an access profile corresponding to program execution anticipated at a compute instance of a plurality of related compute instances, wherein the related compute instances implement related applications, wherein the compute instance is attached to a block-level storage volume of a block storage service, and wherein data is transferred from a storage repository service to populate the block-level storage volume;

identify, using the access profile, at least a portion of an object of the storage repository service to be pre-loaded to populate a a shared storage cache;

preload at least a portion of the object into the shared storage cache; and

initiate a transfer of at least a portion of the object from the shared storage cache to populate the block-level storage volume in response to the one or more I/O requests to the block-level storage volume from the compute instance.

14. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the storage repository service comprises a key-value store accessible via a web-services interface.

15. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the instructions when executed on the one or more processors:

select the portion of the object to be pre-loaded based at least in part on one or more of: (a) a determination that I/O requests described in the access profile are expected to be repeated, with a probability above a threshold level, by one or more other compute instances, (b) a determination of performance costs associated with one or more data transfers from the object at the storage repository service, or (c) a profiling request.

16. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the object at the storage repository comprises a volume snapshot generated in response to a client request.

17. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the instructions when executed on the one or more processors:

in response to a determination that an I/O request from one of the plurality of compute instances cannot be satisfied from the shared storage cache,

store a record of the determination that the I/O request could not be satisfied; and

modify an access profile associated with the one of the plurality compute instances based at least in part on the record.

18. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the related applications comprise database management systems.

19. The non-transitory computer-accessible storage medium as recited in claim 13 , wherein the related applications comprise boot sequences of the plurality of compute instances.

20. The system as recited in claim 1 , wherein the related applications comprise database management systems.

Continuity (2)
Continuation 14028186 · Sep 16, 2013
Related Publication 20170147243A1 · May 25, 2017
Cited By (1)
US 12,737,136