IP Library Granted Patent US 9,104,544
Granted Patent B1
US 9,104,544 · App. 13/468,843 · Granted Aug 11, 2015

Mitigating eviction by maintaining mapping tables

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,104,544
App. No.
13/468,843
Granted
Aug 11, 2015
Kind
B1
Abstract

Mitigating eviction of the memory pages of virtualized machines. Upon detecting that a request to perform an I/O operation has been issued against a block stored a disk, a determination is made as to whether a pristine copy of the contents of the block is stored in memory. If a pristine copy of the contents of the block is stored in memory, then the request may be performed by updating mapping data that maps a page of memory to a location in memory at which the pristine copy is stored. In this way, the request is performed without performing the I/O operation against the block stored on disk. Various approaches for resharing memory, including memory of a template virtual machine, are discussed.

Claims (38)

1. One or more non-transitory computer-readable storage mediums storing one or more sequences of instructions, which when executed by one or more processors, cause:

identifying a set of pages of memory that have the same content (a) as stored on disk and (b) as stored in a guest physical frame, wherein each of the set of pages of memory are stored by two or more virtual machines;

storing mapping data that identifies a two-way mapping between the locations of where each of the set of memory pages is stored on disk and in the guest physical frame of a template virtual machine;

consulting said mapping data to identify blocks in a page file that correspond to said set of memory pages; and

removing said identified blocks from said page file to conserve space on said disk.

2. The one or more non-transitory computer-readable storage mediums of claim 1 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been written to disk, which memory pages in the guest physical frame have not been modified since being written to disk.

3. The one or more non-transitory computer-readable storage mediums of claim 1 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been read from disk, which memory pages in the guest physical frame have not been modified since being read from disk.

4. The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further comprises:

upon receiving a request to read a particular block stored on disk, determining if the particular block is referenced in the mapping data; and

upon determining that the particular block is referenced in the mapping data, servicing the request using the mapping data to identify a page in memory that contains the contents of the particular block.

5. The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further comprises:

determining whether the disk block has been modified since a template virtual machine was established by querying a disk storage subsystem to determine if a snapshot created when the template virtual machine was established contains the most recent version of the disk block.

6. An apparatus, comprising:

one or more processors; and

one or more sequences of instructions, which when executed by the one or more processors, causes:

identifying a set of pages of memory that have the same content (a) as stored on disk and (b) as stored in a guest physical frame, wherein each of the set of pages of memory are stored by two or more virtual machines; and

storing mapping data that identifies a two-way mapping between the locations of where each of the set of memory pages is stored on disk and in the guest physical frame of a template virtual machine;

consulting said mapping data to identify blocks in a page file that correspond to said set of memory pages; and

removing said identified blocks from said page file to conserve space on said disk.

7. The apparatus of claim 6 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been written to disk, which memory pages in the guest physical frame have not been modified since being written to disk.

8. The apparatus of claim 6 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been read from disk, which memory pages in the guest physical frame have not been modified since being read from disk.

9. The apparatus of claim 6 , wherein execution of the one or more sequences of instructions further comprises:

upon receiving a request to read a particular block stored on disk, determining if the particular block is referenced in the mapping data; and

upon determining that the particular block is referenced in the mapping data, servicing the request using the mapping data to identify a page in memory that contains the contents of the particular block.

10. The apparatus of claim 6 , wherein execution of the one or more sequences of instructions further comprises:

determining whether the disk block has been modified since a template virtual machine was established by querying a disk storage subsystem to determine if a snapshot created when the template virtual machine was established contains the most recent version of the disk block.

11. A method for managing memory eviction, comprising:

identifying a set of pages of memory that have the same content (a) as stored on disk and (b) as stored in a guest physical frame, wherein each of the set of pages of memory are stored by two or more virtual machines;

storing mapping data that identifies a two-way mapping between the locations of where each of the set of memory pages is stored on disk and in the guest physical frame of a template virtual machine;

consulting said mapping data to identify blocks in a page file that correspond to said set of memory pages; and

removing said identified blocks from said page file to conserve space on said disk.

12. The method of claim 11 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been written to disk, which memory pages in the guest physical frame have not been modified since being written to disk.

13. The method of claim 11 , wherein identifying the set of memory pages is performed in part by tracking, for those pages which have been read from disk, which memory pages in the guest physical frame have not been modified since being read from disk.

14. The method of claim 11 , further comprising:

upon receiving a request to read a particular block stored on disk, determining if the particular block is referenced in the mapping data; and

upon determining that the particular block is referenced in the mapping data, servicing the request using the mapping data to identify a page in memory that contains the contents of the particular block.

15. The method of claim 11 , further comprising:

determining whether the disk block has been modified since a template virtual machine was established by querying a disk storage subsystem to determine if a snapshot created when the template virtual machine was established contains the most recent version of the disk block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2019
From: BROMIUM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 051305/0894 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2012
From: UCHRONSKI, KRZYSZTOF; O'BRIEN, MARTIN; HANSEN, JACOB GORM; BONDALAPATI, KIRAN; PRATT, IAN; BANGA, GAURAV; KAPOOR, VIKRAM
To: BROMIUM, INC.
Reel/Frame 028973/0266 →