IP Library Granted Patent US 12,217,089
Granted Patent B2
US 12,217,089 · App. 17/542,816 · Granted Feb 4, 2025

Identifying memory devices for swapping virtual machine memory pages

Inventors: Michael Tsirkin (Haifa, IL); Andrea Arcangeli (Imola, IT)
Assignee: Red Hat Israel, Ltd.
G06F9/5016G06F9/455G06F9/45558G06F9/50G06F2009/4557G06F2009/45583
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 12,217,089
App. No.
17/542,816
Granted
Feb 4, 2025
Kind
B2
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 (44)

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.

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

3. 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.

4. 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.

5. The method of claim 1 , further comprising:

identifying a compressed memory device responsive to determining that the workload type is associated with uncompressed data.

6. 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.

7. 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.

8. 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.

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.

10. 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.

11. 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.

12. 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.

13. 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.

14. 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.

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.

16. 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.

17. 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.

18. 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.

19. 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.

20. 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.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2021
From: TSIRKIN, MICHAEL; ARCANGELI, ANDREA
To: RED HAT ISRAEL, LTD.
Reel/Frame 058315/0141 →
Continuity (3)
Continuation 15852796 · Dec 22, 2017
Continuation 14281995 · May 20, 2014
Related Publication 20220091890A1 · Mar 24, 2022
References Cited (53)
US 7302514B2 · Ouriel et al. · 2007 [cited by applicant]
US 7805726B1 · Leonard et al. · 2010 [cited by applicant]
US 8230069B2 · Korupolu · 2012 [cited by applicant]
US 8301859B2 · Heim · 2012 [cited by applicant]
US 8996765B2 · Greenfield · 2015 [cited by applicant]
US 11200090B2 · Tsirkin · 2021 [cited by examiner]
US 20040199734A1 · Rajamani et al. · 2004 [cited by applicant]
US 20070233707A1 · Osmond et al. · 2007 [cited by applicant]
US 20070271560A1 · Wahlert et al. · 2007 [cited by applicant]
US 20090150641A1 · Flynn et al. · 2009 [cited by applicant]
US 20100064144A1 · Kaabouch · 2010 [cited by examiner]
US 20100250868A1 · Oshins · 2010 [cited by applicant]
US 20100269110A1 · Leijen et al. · 2010 [cited by applicant]
US 20110022870A1 · McGrane et al. · 2011 [cited by applicant]
US 20120005452A1 · Aral et al. · 2012 [cited by applicant]
US 20120137066A1 · Nolterieke et al. · 2012 [cited by applicant]
US 20120137295A1 · Soetemans et al. · 2012 [cited by applicant]
US 20120167082A1 · Kumar et al. · 2012 [cited by applicant]
US 20120179846A1 · Haustein · 2012 [cited by examiner]
US 20120185426A1 · Mori et al. · 2012 [cited by applicant]
US 20120254640A1 · Agarwala · 2012 [cited by examiner]
US 20120271868A1 · Fukatani et al. · 2012 [cited by applicant]
US 20120311600A1 · Takemura · 2012 [cited by examiner]
US 20130055252A1 · Lagar-Cavilla et al. · 2013 [cited by applicant]
US 20130132663A1 · Eleftheriou et al. · 2013 [cited by applicant]
US 20130151824A1 · Bugnion · 2013 [cited by applicant]
US 20130205106A1 · Tati · 2013 [cited by examiner]
US 20130326109A1 · Kivity · 2013 [cited by applicant]
US 20140033212A1 · Balasubramaniam · 2014 [cited by examiner]
US 20140189281A1 · Sokol, Jr. · 2014 [cited by examiner]
US 20140196030A1 · Deshpande et al. · 2014 [cited by applicant]
US 20140325121A1 · Akutsu · 2014 [cited by examiner]
US 20140372715A1 · Bak · 2014 [cited by examiner]
US 20150242133A1 · Smith · 2015 [cited by examiner]
US 20150378604A1 · Kawakami · 2015 [cited by examiner]
USPTO, Office Action for U.S. Appl. No. 14/281,995, mailed Oct. 21, 2015. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 14/281,995, mailed Apr. 19, 2016. [cited by applicant]
USPTO, Office Action for U.S. Appl. No. 14/281,995, mailed Feb. 22, 2017. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 14/281,995, mailed Jun. 15, 2017. [cited by applicant]
USPTO, Advisory Action for U.S. Appl. No. 14/281,995, mailed Jul. 12, 2016. [cited by applicant]
USPTO, Notice of Allowance for U.S. Appl. No. 14/281,995, mailed Sep. 21, 2017. [cited by applicant]
USPTO, Office Action for U.S. Appl. No. 15/852,796, mailed Sep. 27, 2018. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 15/852,796, mailed Mar. 4, 2019. [cited by applicant]
USPTO, Office Action for U.S. Appl. No. 15/852,796, mailed Sep. 19, 2019. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 15/852,796, mailed Mar. 26, 2020. [cited by applicant]
USPTO, Office Action For U.S. Appl. No. 15/852,796, mailed Aug. 12, 2020. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 15/852,796, mailed Dec. 7, 2020. [cited by applicant]
USPTO, Advisory Action for U.S. Appl. No. 15/852,796, mailed Jun. 9, 2020. [cited by applicant]
USPTO, Notice of Allowance for U.S. Appl. No. 15/852,796, mailed Aug. 10, 2021. [cited by applicant]
Gulati, Ajay, Kumar, Chethan, and Ahmad, Irfan, “Modeling Workloads and Devices for 10 Load Balancing In Virtualized Environments”, VMware Inc., 2009 8 pages http:/fwww.sigmetrics.org/conferences/sigmetrics/2009/worksho… [cited by applicant]
Park, Kyu Ho, Park, Youngwoo, Hwang, Woomin, and Park, Ki-Woong, “MN-Mate: Resource Management of Manycores with DRAM and Nonvolatile Memories”, 2010 12th IEEE International Conference on High Performance Computing and … [cited by applicant]
“Performance Best Practices for VMware vSphere 5.1”, VMware, Inc., 2007-2012, pp. 1-84 https://www.vmware.com/pdf/Perf_Best_Practices_v Sphere5.1.pdf. [cited by applicant]
Williams, Dan, Weatherspoon, Hakim, Jamjoom, Hani, and Liu, Yew-Huey, “Overdriver: Handling Memory Overload in an Oversubscribed Cloud”, Virtual Execution Environments (VEE), Mar. 9-11, 2011, Newport Beach, CA http:/fci… [cited by applicant]