IP Library Granted Patent US 9,009,384
Granted Patent B2
US 9,009,384 · App. 12/857,562 · Granted Apr 14, 2015

Virtual machine memory management in systems with asymmetric memory

Inventors: Ripal Babubhai Nathuji (Bothell, WA); David Tennyson Harper, III (Seattle, WA); Parag Sharma (Issaquah, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5016G06F9/3832G06F9/5077
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,009,384
App. No.
12/857,562
Granted
Apr 14, 2015
Kind
B2
Abstract

A system is described herein that includes a predictor component that predicts accesses to portions of asymmetric memory pools in a computing system by a virtual machine, wherein the asymmetric memory pools comprise a first memory and a second memory, and wherein performance characteristics of the first memory are non-identical to performance of the second memory. The system also includes a memory management system that allocates portions of the first memory to the virtual machine based at least in part upon the accesses to the asymmetric memory pools predicted by the predictor component.

Claims (45)

1. A system, comprising:

near memory;

far memory, wherein a performance characteristic of the near memory is non-identical to the performance characteristic of the far memory;

at least one processor that is configured to execute:

a first virtual machine that is allocated a first portion of the near memory and a first portion of the far memory;

a second virtual machine that is allocated a second portion of the near memory and a second portion of the far memory;

a predictor component that is configured to predict:

accesses to the first portion of the near memory and accesses to the first portion of the far memory by the first virtual machine; and

accesses to the second portion of the near memory and accesses to the second portion of the far memory by the second virtual machine; and

a memory management system that is configured to allocate the first portion of the near memory to the second virtual machine based upon the accesses to the first portion of the near memory, the first portion of the far memory, the second portion of the near memory, and the second portion of the far memory predicted by the predictor component.

2. The system of claim 1 , wherein the first portion of the near memory is a page.

3. The system of claim 1 , wherein the performance characteristic is latency with respect to the at least one processor, such that latency of the near memory is less than a latency of the far memory.

4. The system of claim 1 , wherein the performance characteristic is bandwidth with respect to the at least one processor, such that bandwidth of the near memory is greater than bandwidth of the far memory.

5. The system of claim 1 , the at least one processor comprises a first processor core and a second processor core, the first virtual machine executes on the first processor core and the second virtual machine executes on the second processor core.

6. The system of claim 5 , wherein the near memory is memory on a chip that comprises the first processor core and the second processor core.

7. The system of claim 5 , wherein the far memory is a memory bank that is accessible to the first processor core and the second processor core.

8. The system of claim 1 , wherein the memory management system is configured to allocate pages of the near memory to a plurality of other virtual machines.

9. The system of claim 1 , wherein the memory management system, when allocating the first portion of the near memory to the second virtual machine, migrates a page in the near memory that is allocated to the first virtual machine to a page in the far memory.

10. A method comprising the following computer-executable acts:

mapping a first address space for a first virtual machine executing on a computing apparatus, across a near memory and a far memory, such that the first virtual machine is allocated a first portion of the near memory and a first portion of the far memory, wherein a performance characteristic of the near memory is non-identical to the performance characteristic of the far memory;

mapping a second address space for a second virtual machine executing on the computing apparatus across the near memory and the far memory, such that the second virtual machine is allocated a second portion of the near memory and a second portion of the far memory;

obtaining historic accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory;

predicting future accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory based upon the historic accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory; and

updating the mapping of the first address space and the second address space based upon the predicting of the future accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory.

11. The method of claim 10 , wherein obtaining historic accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory comprises monitoring access bits corresponding to the first portion of the near memory and the first portion of the far memory.

12. The method of claim 10 , wherein the near memory is memory located on a chip that comprises a multi-core processor.

13. The method of claim 10 , wherein the far memory is a memory bank that is accessible to a plurality of processors.

14. The method of claim 10 configured for execution in a hypervisor that is executing on the computing apparatus.

15. The method of claim 10 , wherein updating the mapping of the first address space and the second address space comprises:

migrating data in the first portion of the near memory to the far memory based upon the predicting of the future accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory; and

responsive to migrating the data, allocating the first portion of the near memory to the second virtual machine.

16. The method of claim 10 , wherein predicting the future accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory comprises:

for each page in the first address space assigned to the first virtual machine, computing a metric that is indicative of a number of accesses to the page over a threshold amount of time; and

predicting the future accesses by the first virtual machine to the first portion of the near memory and the second portion of the far memory based upon the metric computed for the page.

17. The method of claim 10 , wherein the first virtual machine is executed on a first core of a multi-core processor, and wherein the second virtual machine is executed on a second core of the multi-core processor.

18. A computer-readable memory comprising instructions that, when executed by a processor, cause the processor to perform acts comprising:

allocating a first portion of near memory and a first portion of far memory to a first virtual machine executing in a computing system, first virtual addresses assigned to the first virtual machine are mapped to the first portion of the near memory and the first portion of the far memory, the near memory has a first bandwidth and the far memory has a second bandwidth that is less than the first bandwidth;

allocating a second portion of the near memory and a second portion of the far memory to a second virtual machine executing in the computing system, second virtual addresses assigned to the second virtual machine are mapped to the second portion of the near memory and the second portion of the far memory;

based upon historic accesses by the first virtual machine to the first portion of the near memory and the first portion of the far memory, predicting future access patterns of the first virtual machine to the first portion of the near memory and the first portion of the far memory; and

responsive to predicting the future access patterns of the first virtual machine, allocating the second portion of the near memory to the first virtual machine, such that the first virtual addresses assigned to the first virtual machine are mapped to the first portion of the near memory and the second portion of the near memory.

19. The computer-readable memory of claim 18 , the acts further comprising:

based upon historic accesses by the second virtual machine to the second portion of the near memory and the second portion of the far memory, predicting future access patterns of the second virtual machine to the second portion of the near memory and the second portion of the far memory; and

responsive to predicting the future access patterns of the second virtual machine, allocating the second portion of the near memory to the first virtual machine.

20. The computer-readable memory of claim 18 , the acts further comprising:

responsive to predicting the future access patterns of the first virtual machine, allocating the first portion of the far memory to another virtual machine executing on the computing system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2010
From: NATHUJI, RIPAL BABUBHAI; HARPER, DAVID TENNYSON, III; SHARMA, PARAG
To: MICROSOFT CORPORATION
Reel/Frame 024843/0818 →
Continuity (1)
Related Publication 20120047312A1 · Feb 23, 2012