Disaggregated memory management for virtual machines
Abstract
A server includes at least one local memory used as a portion of a shared memory. The server communicates with network devices that are each configured to provide a respective shared memory via a network. A Virtual Switching (VS) kernel module executed in a kernel space of the server receives a packet from a Virtual Machine (VM) executed by the at least one processor or by a processor of a remote server and parses the packet to identify a memory request from an application executed by the VM. Memory usage information is determined for the application based at least in part on the identified memory request. The memory usage information is provided to a VS controller of the server, which adjusts at least one of a memory request rate and a memory allocation for the application based at least in part on the determined memory usage information.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A server, comprising:
at least one local memory configured to be used at least in part as a shared memory; a network interface configured to communicate with one or more network devices via a network, the one or more network devices each configured to provide a respective shared memory via the network; and at least one processor configured to:
execute a Virtual Switching (VS) kernel module in a kernel space of the at least one local memory, the VS kernel module configured to:
receive a packet from a Virtual Machine (VM) executed by the at least one processor or by a processor of a remote server;
parse the packet to identify a memory request from an application executed by the VM;
determine memory usage information for the application based at least in part on the identified memory request;
provide the determined memory usage information to a VS controller executed by the at least one processor; and
adjust, using the VS controller, at least one of a memory request rate and a memory allocation for the application based at least in part on the determined memory usage information.
2 . The server of claim 1 , wherein the at least one processor is further configured to:
use the VS kernel module to further provide memory request performance information for different applications to the VS controller; and adjust, using the VS controller, at least one of memory request rates and memory allocations for the different applications executed by one or more VMs based at least in part on the memory request performance information.
3 . The server of claim 1 , wherein the at least one processor is further configured to:
retain previous memory usage information for a previously executed application; and in response to a new execution of the previously executed application, set at least one of a new memory request rate and a new memory allocation for the previously executed application based on the retained previous memory usage information.
4 . The server of claim 1 , wherein the at least one processor is further configured to use the VS controller to adjust memory request rates and memory allocations for applications executed by local VMs running at the server and by remote VMs running at remote servers on the network.
5 . The server of claim 1 , wherein the at least one processor is further configured to use the VS kernel module to update a data structure in the kernel space for monitoring respective memory usage by different applications.
6 . The server of claim 1 , wherein the at least one processor is further configured to:
set, using the VS controller, at least one of memory request rates and memory allocations for VMs accessing the shared memory at the least one local memory; provide the at least one of memory request rates and memory allocations set by the VS controller to the VS kernel module; and use the VS kernel module to send an indication of at least one of a set memory request rate and a set memory allocation to at least one VM.
7 . The server of claim 1 , wherein the at least one processor is further configured to:
determine, using the VS kernel module, that a level of pending requests in at least one submission queue for the shared memory is greater than or equal to a threshold level of pending requests; and in response to determining that the level of pending requests in the at least one submission queue is greater than or equal to the threshold level, set a congestion notification in a message sent to a remote VM.
8 . The server of claim 1 , wherein the at least one processor is further configured to use the VS kernel module to add at least one of memory usage information and memory request performance information for different applications to messages sent from the server via the network interface for use by a network controller on the network in performing at least one of setting memory request rates and allocating memory for applications executed by servers on the network.
9 . The server of claim 1 , wherein the at least one processor is further configured to:
receive, from a network controller via the network interface, at least one of memory request rates and memory allocations for one or more applications executed by the at least one processor; and adjust memory usage by the one or more applications based on the at least one of memory request rates and memory allocations received from the network controller.
10 . A method performed by a server, the method comprising:
executing a Virtual Switching (VS) kernel module in a kernel space of at least one local memory of the server, the at least one local memory providing a shared memory, wherein the server communicates with one or more network devices via a network and each network device of the one or more network devices provides a respective shared memory via the network; receiving, by the VS kernel module, a packet from a Virtual Machine (VM) executed by the server or by a remote server; parsing, by the kernel module, the packet to identify a memory request from an application executed by the VM; using the kernel module to determine memory usage information for the application based at least in part on the identified memory request; providing the determined memory usage information to a VS controller executed by the server; and using the VS controller to adjust at least one of a memory request rate and a memory allocation for the application based at least in part on the determined memory usage information.
11 . The method of claim 10 , further comprising:
using the VS kernel module to further provide memory request performance information for different applications to the VS controller; and using the VS controller to adjust at least one of memory request rates and memory allocations for the different applications executed by one or more VMs based at least in part on the memory request performance information.
12 . The method of claim 10 , further comprising:
retaining previous memory usage information for a previously executed application; and in response to a new execution of the previously executed application, setting at least one of a new memory request rate and a new memory allocation for the previously executed application based on the retained previous memory usage information.
13 . The method of claim 10 , further comprising using the VS controller to adjust at least one of memory request rates and memory allocations for applications executed by local VMs running at the server and by remote VMs running at remote servers on the network.
14 . The method of claim 10 , further comprising using the VS kernel module to update a data structure in the kernel space for monitoring respective memory usage by different applications.
15 . The method of claim 10 , further comprising:
setting, by the VS controller, memory request rates and memory allocations for VMs accessing the shared memory provided by the at least one local memory; providing the at least one of shared memory request rates and memory allocations set by the VS controller to the VS kernel module; and sending an indication of at least one of a set shared memory request rate and a set memory allocation to at least one VM using the VS kernel module.
16 . The method of claim 10 , further comprising:
determining using the VS kernel module that a level of pending requests in at least one submission queue for the shared memory is greater than or equal to a threshold level of pending requests; and in response to determining that the level of pending requests in the at least one submission queue is greater than or equal to the threshold level, setting a congestion notification in a message sent to a remote VM.
17 . The method of claim 10 , further comprising using the VS kernel module to add at least one of memory usage information and memory request performance information for different applications to messages sent from the server for use by a network controller on the network in performing at least one of setting memory request rates and allocating memory for applications executed by servers on the network.
18 . The method of claim 10 , further comprising:
receiving, from a network controller, at least one of memory request rates and memory allocations for one or more applications executed by the server; and adjusting memory usage by the one or more applications based on the at least one of memory request rates and memory allocations received from the network controller.
19 . A network controller, comprising:
a network interface configured to communicate with a plurality of servers on a network, wherein a plurality of network devices on the network provides a shared memory; and means for:
retrieving memory usage information added to packets sent by the plurality of servers to network devices of the plurality of network devices, the memory usage information indicating usage of the shared memory by applications executed by Virtual Machines (VMs) running at the plurality of servers;
performing at least one of setting memory request rates and allocating memory for one or more applications executed by the VMs based at least in part on the retrieved memory usage information; and
sending the at least one of set memory request rates and memory allocations to at least one server of the plurality of servers to adjust usage of the shared memory by different applications executed by VMs running on the at least one server.
20 . The network controller of claim 19 , further comprising means for:
retrieving memory request performance information for different applications added to packets sent by the plurality of servers; and using the retrieved memory request performance information to perform at least one of setting memory request rates and allocating memory for the one or more applications.Join the waitlist — get patent alerts
Track US2025004812A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.