# US 12,217,089 B2 · Identifying memory devices for swapping virtual machine memory pages

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

- Number: US 12,217,089 B2
- Document ID: US12217089B2
- Status: Granted
- Kind: B2
- Application number: 17/542,816
- Filed: 2021-12-06
- Published: 2022-03-24
- Granted: 2025-02-04
- Earliest claimed: 2014-05-20
- Assignees: Red Hat Israel, Ltd.
- Applicants: Red Hat Israel, Ltd.
- Inventors: Michael Tsirkin; Andrea Arcangeli
- Web page: https://patentgrep.com/patent/US12217089B2

## CPC

- G06F 9/5016: {the resource being the memory}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for identifying memory devices for swapping virtual machine memory pages. An example method may comprise: identifying, by a processing device, a workload type associated with a workload being executed by a computer system; identifying a memory device associated with the workload type; evaluating a memory pressure metric reflecting a period of time during which an application being executed by the computer system has been blocked by a memory allocation operation; and responsive to determining that the memory pressure metric exceeds a threshold value, allocating a memory block on the identified memory device.

## Claims

### Claim 1

A method, comprising:
retrieving, by a computing system comprising one or more computing devices from a data structure mapping a plurality of respective workload types to a plurality of corresponding memory device types associated with a plurality of corresponding transformation functions, a record mapping a workload type associated with an application, wherein the workload type reflects a classification of the application based on a type of data being consumed by the application, to a memory device type that is designated for storing transformed memory pages that are transformed by a transformation function associated with the workload type;
subsequently allocating, based at least in part on the record, a memory block on a memory device having the memory device type that is designated for storing transformed memory pages that are transformed by the transformation function, wherein the memory device comprises a backing store for swapping one or more transformed memory pages that are transformed by the transformation function; and
swapping a memory page utilized by the application associated with the workload type with the memory block, wherein the memory page is stored in the memory block as a first transformed memory page that is transformed by the transformation function.

### Claim 2 (depends on 1)

The method of claim 1, wherein the memory device is provided by one of: a file or a raw storage device.

### Claim 3 (depends on 1)

The method of claim 1, wherein the memory device is provided by one of: a compressed storage device, an encrypted storage device, or a huge page device.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
identifying an uncompressed memory device responsive to determining that the workload type is associated with at least one of: video stream data or audio stream data.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
identifying a compressed memory device responsive to determining that the workload type is associated with uncompressed data.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
identifying an encrypted memory device responsive to determining that the workload type is associated with security-sensitive data.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
identifying a huge page memory device responsive to determining that the workload type is associated with huge page memory pages.

### Claim 8 (depends on 1)

The method of claim 1, further comprising causing, by the computing system responsive to determining that a first host device does not support a memory device having the memory device type, the application to be migrated to a second host device that is different from the first host device.

### Claim 9

A system comprising:
a memory; and
a processor, coupled to the memory, to:
retrieve, from a data structure mapping a plurality of respective workload types to a plurality of corresponding memory device types associated with a plurality of corresponding transformation functions, a record mapping a workload type associated with an application, wherein the workload type reflects a classification of the application based on a type of data being consumed by the application, to
a memory device type that is designated for storing transformed memory pages that are transformed by a transformation function associated with the workload type;
subsequently allocate, based at least in part on the record, a memory block on a memory device having the memory device type that is designated for storing transformed memory pages that are transformed by the transformation function, wherein the memory device comprises a backing store for swapping one or more transformed memory pages that are transformed by the transformation function; and
swap a memory page utilized by the application associated with the workload type with the memory block, wherein the memory page is stored in the memory block as a first transformed memory page that is transformed by the transformation function.

### Claim 10 (depends on 9)

The system of claim 9, wherein the memory device is provided by one of: a compressed storage device, an encrypted storage device, or a huge page device.

### Claim 11 (depends on 9)

The system of claim 9, wherein the processor is further to:
identify an uncompressed memory device responsive to determining that the workload type is associated with at least one of: video stream data or audio stream data.

### Claim 12 (depends on 9)

The system of claim 9, wherein the processor is further to:
identify a compressed memory device responsive to determining that the workload type is associated with uncompressed data.

### Claim 13 (depends on 9)

The system of claim 9, wherein the processor is further to:
identify an encrypted memory device responsive to determining that the workload type is associated with security-sensitive data.

### Claim 14 (depends on 9)

The system of claim 9, wherein the processor is further to cause, responsive to determining that a first host device does not support a memory device having the memory device type, the application to be migrated to a second host device that is different from the first host device.

### Claim 15

A computer-readable non-transitory storage medium comprising executable instructions that, when executed by a processing device, cause the processing device to perform operations comprising:
retrieve, from a data structure mapping a plurality of respective workload types to a plurality of corresponding memory device types associated with a plurality of corresponding transformation functions, a record mapping a workload type associated with an application, wherein the workload type reflects a classification of the application based on a type of data being consumed by the application to
a memory device type that is designated for storing transformed memory pages that are transformed by a transformation function associated with the workload type;
subsequently allocate, based at least in part on the record, a memory block on a memory device having the memory device type that is designated for storing transformed memory pages that are transformed by the transformation function, wherein the memory device comprises a backing store for swapping one or more transformed memory pages that are transformed by the transformation function; and
swap a memory page utilized by the application associated with the workload type with the memory block, wherein the memory page is stored in the memory block as a first transformed memory page that is transformed by the transformation function.

### Claim 16 (depends on 15)

The computer-readable non-transitory storage medium of claim 15, wherein the memory device is provided by one of: a file or a raw storage device.

### Claim 17 (depends on 15)

The computer-readable non-transitory storage medium of claim 15, further comprising executable instructions to cause the processing device to:
identify an uncompressed memory device responsive to determining that the workload type is associated with at least one of: video stream data or audio stream data.

### Claim 18 (depends on 15)

The computer-readable non-transitory storage medium of claim 15, further comprising executable instructions to cause the processing device to:
identify a compressed memory device responsive to determining that the workload type is associated with uncompressed data.

### Claim 19 (depends on 15)

The computer-readable non-transitory storage medium of claim 15, further comprising executable instructions to cause the processing device to:
identify an encrypted memory device responsive to determining that the workload type is associated with security-sensitive data.

### Claim 20 (depends on 15)

The computer-readable non-transitory storage medium of claim 15, further comprising executable instructions to cause the processing device to:
cause, responsive to determining that a first host device does not support a memory device having the memory device type, the application to be migrated to a second host device that is different from the first host device.
