IP Library Granted Patent US 10,037,334
Granted Patent B1
US 10,037,334 · App. 15/390,589 · Granted Jul 31, 2018

Memory management and sharing host OS files for Virtual Machines using execution-in-place

Inventors: Denis Lunev (Moscow, RU); Alexey Kobets (Seattle, WA)
Assignee: Parallels International GmbH
G06F17/30138G06F3/0604G06F3/064G06F3/0644G06F3/0659G06F3/0664G06F3/0683G06F17/30233
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,334
App. No.
15/390,589
Granted
Jul 31, 2018
Kind
B1
Abstract

A system for memory management for Virtual Machines (VMs), including a host computer system running a host operating system (OS); at least two Virtual Machines (VMs) running on the host computer system, wherein each of the VMs has a Guest OS supporting a guest file system with execution-in-place that allows code execution without an intermediate buffer cache; a hypervisor configured to control the VMs; and a thin provisioning block device configured to store shared pages and formed of at least one delta file. The hypervisor is configured to receive a page fault, and to read the shared pages from the thin provisioning block device. The Guest OS executes the file that is stored on the thin provisioning block device.

Claims (45)

1. A system for memory management for Virtual Machines (VMs), the system comprising:

a host computer system running a host operating system (OS);

at least two Virtual Machines (VMs) running on the host computer system, wherein each of the VMs has a Guest OS supporting a guest file system with execution-in-place that allows code execution without an intermediate buffer cache;

a hypervisor configured to control the VMs; and

a thin provisioning block device configured to store shared pages and formed of at least one delta file,

wherein:

the hypervisor is configured to receive a page fault;

the hypervisor is configured to read the shared pages from the thin provisioning block device; and

the Guest OS executes the one delta file that is stored on the thin provisioning block device.

2. The system of claim 1 , wherein any delta files that are unique for the particular thin provisioning block device include unshared pages and represent read/write delta files.

3. The system of claim 1 , wherein the thin provisioning block device provides a translation for a page access from any read/write delta file stored on the thin provisioning block device or from a read-only template.

4. The system of claim 1 , wherein the each VM has a corresponding thin provisioning block device.

5. The system of claim 1 , wherein the thin provisioning block device is a union of several delta files, wherein at least one of the several delta files is a read-only delta file, and at least one of the several delta files is a read/write delta file.

6. The system of claim 5 , wherein the read-only delta file is shared by multiple thin provisioning block devices of different VMs, and wherein the delta file includes templates that contain pages that are shared by the different VMs.

7. The system of claim 6 , wherein a VM can write to unshared pages, and when the VM attempts to write to a shared page, that page is copied from a read-only template to the read/write delta file, and the VM writes to the copy from the read/write delta file.

8. The system of claim 1 , wherein the Guest OS executes the one delta file without the intermediate buffer cache for the page fault.

9. A computer-implemented method for managing memory in Virtual Machines (VMs), the method comprising:

creating a thin provisioning block device on a host, wherein the thin provisioning block device is configured to store shared pages and is formed of at least one delta file;

instantiating at least two VMs on the host;

starting Guest OSs on the VMs, each Guest OS supporting a guest file system with execution-in-place that allows code execution without an intermediate buffer cache;

writing to a shared file by one of the Guest OSs;

processing a page fault;

transferring the page fault to a hypervisor;

reading the shared pages from the thin provisioning block device;

returning control from the hypervisor to the Guest OS; and

executing the shared file that is stored on the thin provisioning block device.

10. The method of claim 9 , further comprising reading the shared pages from a disk by the hypervisor.

11. The method of claim 9 , further comprising:

copying the shared pages by the hypervisor in case of a write;

linking the shared pages to a read/write delta file; and

making a copy of the written page to the read/write delta file on a host disk space.

12. The method of claim 9 , wherein the reading of the shared pages from the thin provisioning block device comprises reading the shared pages from a read/write delta file.

13. The method of claim 9 , wherein the reading of the shared pages from the thin provisioning block device comprises reading the shared pages from a read-only template.

14. The method of claim 9 , wherein the thin provisioning block device is a ploop device.

15. The method of claim 9 , wherein the executing the shared file is performed without the intermediate buffer cache that corresponds to the page fault.

16. A computer program product comprising non-transitory computer readable media containing code for performing the steps of:

creating a thin provisioning block device on a host, wherein the thin provisioning block device is configured to store shared pages and is formed of at least one delta file;

instantiating at least two VMs on the host;

starting Guest OSs on the VMs, each Guest OS supporting a guest file system with execution-in-place that allows code execution without an intermediate buffer cache;

writing to a shared file by one of the Guest OSs;

processing a page fault;

transferring the page fault to a hypervisor;

reading the shared pages from the thin provisioning block device;

returning control from the hypervisor to the Guest OS; and

executing the shared file that is stored on the thin provisioning block device.

Assignments (3)
SECURITY INTEREST IN TRADEMARK, PATENT, AND COPYRIGHT RIGHTS Recorded Dec 22, 2022
From: VIRTUOZZO INTERNATIONAL GMBH; ONAPP LIMITED
To: WILMINGTON TRUST (LONDON) LIMITED
Reel/Frame 062206/0557 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2018
From: PARALLELS INTERNATIONAL GMBH
To: VIRTUOZZO INTERNATIONAL GMBH
Reel/Frame 044756/0294 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 26, 2016
From: KOBETS, ALEXEY; LUNEV, DENIS
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 041188/0196 →