# US 2025/0147792 A1 · Methods and systems for seamless virtual machine changing for software applications

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2025/0147792 A1
- Document ID: US20250147792A1
- Status: Published application
- Kind: A1
- Application number: 18/983,159
- Filed: 2024-12-16
- Published: 2025-05-08
- Earliest claimed: 2020-01-30
- Assignees: Parallels International GmbH
- Applicants: Parallels International GmbH
- Inventors: IVAN KOROBOV; NIKOLAY DOBROVOLSKIY
- Web page: https://patentgrep.com/patent/US20250147792A1

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/505: {considering the load}
- G06F 11/3442: {for planning or managing the needed capacity}
- G06F 11/3452: {Performance evaluation by statistical analysis}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and a system to perform the method are disclosed, the method includes receiving, by a virtualization server communicatively coupled with a client device, a request to provide a virtual machine (VM) to a client device, accessing a profile associated with the client device, instantiating a VM on the virtualization server, wherein the VM is a linked clone VM of a base VM, wherein the linked clone VM has (1) a read-only access to a shared range of a persistent memory associated with the base VM, wherein the shared range of the persistent memory is determined in view of the profile associated with the client device and stores at least one application installed on the virtualization server, (2) a write access to a private range of the persistent memory, wherein the private range is associated with the VM, and providing the VM to the client device.

## Claims

### Claim 1

A method comprising:
intercepting a request from a client device to execute an application with a first virtual machine (VM) provided by a virtualization server;
establishing a comparison of a resource consumption profile of the application with a resource configuration profile of the first VM;
determining, based upon the established comparison whether the application is to be executed on the first VM or upon a second VM;
upon determining that the application is to be executed upon the first VM instantiating the application on the first VM and causing the application to be instantiated on the first VM to be accessible to the client device; and
upon determining that the application is to be executed upon the second VM instantiating the second VM on the virtualization server, instantiating the application on the second VM and causing the application to be instantiated on the second VM to be accessible to the client device.

### Claim 2 (depends on 1)

The method according to claim 1, wherein
the first VM is first linked clone of a base VM which has read-only access to a first shared range of a persistent memory;
the second VM is a second linked clone of the base VM which has read-only access to a second shared range of a persistent memory; and
the second shared range is larger than the first shared range.

### Claim 3 (depends on 1)

The method according to claim 1, wherein
the first VM is a linked clone VM of a base VM; and
the linked clone VM has:
a read-only access to a shared range of a persistent memory associated with the base VM where the shared range of the persistent memory is determined in view of a profile associated with the client device and stores at least one application installed on the virtualization server; and
a write access to a private range of the persistent memory, wherein the private range is associated with the first VM; and
a range of the persistent memory associated with the second VM is larger than the shared range of the persistent memory associated with the first VM.

### Claim 4 (depends on 1)

The method according to claim 1, wherein
the first VM is a linked clone VM of a base VM;
the second VM is another linked clone VM of the base VM;
each linked clone VM has:
a read-only access to a shared range of a persistent memory associated with the base VM where the shared range of the persistent memory is determined in view of a profile associated with the client device and stores at least one application installed on the virtualization server; and
a write access to a private range of the persistent memory, wherein the private range is associated with the first VM; and
the shared range of the persistent memory associated with the first VM is larger than the shared range associated with the second VM.

### Claim 5 (depends on 1)

The method according to claim 1, wherein
the first VM is a linked clone of a base VM; and
instantiating the second VM on the virtualization server comprises:
establishing a new resource configuration profile to support execution of the application; and
instantiating a new second clone VM where the new second clone VM is a linked clone of the base VM with the new resource configuration profile.

### Claim 6 (depends on 5)

The method according to claim 5, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application; and
the new resource configuration profile is established in dependence upon a database accessible to the virtualization server comprising a list of resource consumption profiles, each resource consumption profile describing software applications supported by the virtualization server.

### Claim 7 (depends on 5)

The method according to claim 5, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application; and
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing software application supported by the virtualization server.

### Claim 8 (depends on 5)

The method according to claim 5, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application;
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing a list of software application supported by the virtualization server; and
at least one of a resource consumption profile of the list of resource consumption profiles and the list of software applications associated with another resource consumption profile of the list of resource consumption profiles are updated periodically in dependence upon request by the virtualization application for an update from a remote database.

### Claim 9 (depends on 5)

The method according to claim 5, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application;
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing a list of software application supported by the virtualization server; and
at least one of a resource consumption profile of the list of resource consumption profiles and the list of software applications associated with another resource consumption profile of the list of resource consumption profiles are updated periodically in dependence upon an update received by the virtualization application from a remote database.

### Claim 10 (depends on 5)

The method according to claim 5, further comprising
monitoring the resources used during execution of the application within the active VM within which the application was launched, the active VM being one of the first VM and the second VM;
processing the employed resources from the monitoring against the resource configuration profile of the active VM;
determining whether the resource consumption profile of the active VM should be updated or not in dependence upon the processing; and
upon a determination that the resource consumption profile of the active VM should be updated updating the resource consumption profile of the active VM in dependence upon the processed monitored resources used by the application during its execution within the active VM.

### Claim 11 (depends on 5)

The method according to claim 5, further
determining whether the application makes a change to a state of the second VM;
modifying the base VM in dependence upon the changes made to the state of the second VM by the application.

### Claim 12 (depends on 1)

The method according to claim 1, wherein
the first VM is a linked clone of a base VM; and
instantiating the second VM on the virtualization server comprises:
establishing a new resource configuration profile to support execution of the application; and
instantiating a new second clone VM where the new second clone VM is a linked clone of the base VM with the new resource configuration profile.

### Claim 13 (depends on 11)

The method according to claim 11, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application; and
the new resource configuration profile is established in dependence upon a database accessible to the virtualization server comprising a list of resource consumption profiles, each resource consumption profile describing software applications supported by the virtualization server.

### Claim 14 (depends on 11)

The method according to claim 11, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application; and
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing software application supported by the virtualization server.

### Claim 15 (depends on 11)

The method according to claim 11, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application;
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing a list of software application supported by the virtualization server; and
at least one of a resource consumption profile of the list of resource consumption profiles and the list of software applications associated with another resource consumption profile of the list of resource consumption profiles are updated periodically in dependence upon request by the virtualization application for an update from a remote database.

### Claim 16 (depends on 11)

The method according to claim 11, wherein
the new resource configuration profile is established in dependence upon a predefined category associated with the application;
the new resource configuration profile is established in dependence upon a database accessible to a virtualization application in execution upon the client device comprising a list of resource consumption profiles, each resource consumption profile describing a list of software application supported by the virtualization server; and
at least one of a resource consumption profile of the list of resource consumption profiles and the list of software applications associated with another resource consumption profile of the list of resource consumption profiles are updated periodically in dependence upon an update received by the virtualization application from a remote database.

### Claim 17 (depends on 11)

The method according to claim 11, further comprising
monitoring the resources used during execution of the application within the active VM within which the application was launched, the active VM being one of the first VM and the second VM;
processing the employed resources from the monitoring against the resource configuration profile of the active VM;
determining whether the resource consumption profile of the active VM should be updated or not in dependence upon the processing; and
upon a determination that the resource consumption profile of the active VM should be updated updating the resource consumption profile of the active VM in dependence upon the processed monitored resources used by the application during its execution within the active VM.

### Claim 18 (depends on 11)

The method according to claim 11, further
determining whether the application makes a change to a state of the second VM;
modifying the base VM in dependence upon the changes made to the state of the second VM by the application.
