Use memory device tagging to optimize primary memory performance
Patent Information
- Application Number
- PCT/CN2025/079094
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-02-25
- Publication Date
- 2026-09-03
Smart Images

Figure CN2025079094_03092026_PF_FP_ABST
Abstract
Description
USE MEMORY DEVICE TAGGING TO OPTIMIZE PRIMARY MEMORY PERFORMANCETECHNICAL FIELD
[0001] The present disclosure relates generally to the field of disaggregated memory and more specifically, to use a memory device tagging to optimize primary memory performance, a virtualized computing environment, and a method for optimizing memory performance in the virtualized computing environment.BACKGROUND
[0002] In a conventional virtualization environment allocation of memory resources requires access to large data sets that may not fully reside within an allocated memory of a guest node. Furthermore, workloads may access the allocated memory of the guest node in a non-uniform distribution, resulting in different memory regions including varying access intensity (e.g., hot and cold regions) . Furthermore, the addition of physical memory allows placing more data in the physical memory, due to which an application can then split the data into local regions and remote regions, leveraging High-Performance Computing (HPC) architecture. In certain scenarios, the memory extension utilizes a tailored memory handle, such as over-fabric is used to expand the memory of the application. However, the memory extension has an increased entrance barrier, which uses a custom memory handle application programming interface (API) with semantics, which is not desirable. Alternatively in another scenario, in-device tiering is achieved transparently between different tiers and on the same expander device, which requires a framework manager to orchestrate complex topologies, such as to achieve non-local tiering. However, such scenarios require a framework manager and also require processor event-based sampling to identify frequently accessed data pages, that are not available and not desirable. Furthermore, the in-device tiering does not allow tier swapping, nor allow memory remapping, which is again not desirable. As a result, conventional solutions are unable to provide an efficient shared persistent memory experience with remote persistent memory, shared across multiple clients, allowing access to the same memory space with low latency. Therefore, in light of the foregoing discussion, there exists a need to overcome the aforementioned drawbacks associated with the conventional methods for allocation of memory resources.SUMMARY
[0003] The present disclosure provides a virtualized computing environment and a method for optimizing memory performance in the virtualized computing environment. The present disclosure provides a solution to the existing problem of how to efficiently share persistent memory experience with remote persistent memory, shared across multiple clients, allowing access to the same memory space with low latency. An objective of the present disclosure is to provide a solution that overcomes at least partially the problems encountered in the prior art and provides an improved virtualized computing environment and an improved method for optimizing memory performance in the virtualized computing environment.
[0004] One or more objectives of the present disclosure are achieved by the solutions provided in the enclosed independent claims. Advantageous implementations of the present disclosure are further defined in the dependent claims.
[0005] In one aspect, the present disclosure provides a method for optimizing memory performance in a virtualized computing environment, the virtualized computing environment including a resource controller, at least one compute node, and a memory node, such as each of the compute nodes including a compute node resource locator module and the memory node includes a memory node resource locator module. The method includes the compute node resource locator module of each compute node collecting meta data on memory resources associated with the compute node. The method further includes the memory node resource locator module collecting meta data on memory resources associated with the memory node. The method further includes transmitting the meta data on the memory resources from the compute node (s) and the memory node to the resource controller. The method further includes the resource controller configured for categorizing the received memory resources based on the meta data on the memory resources, mapping each memory resource to one or more discrete memory tiers, such as if the number of discrete memory tiers is fewer than the available memory types, and allocating memory resources to workloads dynamically. The method further includes the resource controller configured for utilizing a Data Processing Unit (DPU) as a memory broker to: manage memory resource allocation across compute nodes and memory nodes and expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators. The method further includes the resource controller configured for determining a change and in response thereto dynamically remapping memory tiers. The method further includes the resource controller configured for utilizing memory tiering techniques by: monitoring memory access patterns. The method further includes the resource controller configured for promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers.
[0006] The method is beneficial for categorizing and dynamically allocating the memory resources to the workloads based on meta data, which ensures that the workloads get the memory resources according to the requirements while reducing resource wastage. The method is also beneficial to utilize memory tiering based on access patterns, which ensures that high-performance memory is reserved for frequently accessed data, improving the overall performance of the virtualized computing environment. Therefore, the method is beneficial to reduce latency by ensuring that critical data is moved to faster memory tiers, while less critical data is stored in slower tiers. Furthermore, by virtue of using the DPU as the memory broker, the method facilitates seamless memory management across multiple compute nodes and memory nodes. In addition, by allocating the memory resources efficiently and remapping the memory tiers based on access patterns, the method can be used to respond to dynamic workloads with minimal impact on performance. In addition, as the number of compute nodes and memory nodes increases, the method ensures that the memory resources are managed consistently across the virtualized computing environment, adapting to changes without affecting performance. Furthermore, the dynamic remapping of the memory tiers based on access conditions promotes and demotes data efficiently, which is beneficial for reducing latency. As a result, the frequently accessed data is moved to higher-performance tiers, ensuring that the data is readily available, while infrequently accessed data is stored in lower-performance memory. Furthermore, by virtue of managing the memory resources across multiple compute nodes and multiple memory nodes, the method is beneficial to ensure optimal usage of available memory resources in large-scale environments.
[0007] In another aspect, there is provided a virtualized computing environment configured for optimizing memory performance, the virtualized computing environment includes a resource controller, at least one compute node, and a memory node, where each of the compute nodes includes a compute node resource locator module and the memory node includes a memory node resource locator module. The compute node resource locator module of each compute node is configured to collect meta data on memory resources associated with the compute node and transmit the meta data on the memory resources from the compute node (s) to the resource controller. The memory node resource locator module is configured to collect meta data on memory resources associated with the memory node and transmit the meta data on the memory resources from the memory node to the resource controller. The resource controller is configured to, categorize the received memory resources based on the meta data on the memory resources and map each memory resource to one or more discrete memory tiers, wherein the number of discrete memory tiers is fewer than the available memory types. The resource controller is further configured to allocate memory resources to workloads dynamically. The resource controller is further configured to utilize a Data Processing Unit (DPU) as a memory broker to: manage memory resource allocation across compute nodes and memory nodes. The resource controller is further configured to utilize a Data Processing Unit (DPU) as a memory broker to: expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators. The resource controller is further configured to bypass IO buses for low-latency direct memory access to determine a change and in response thereto dynamically remap memory tiers. The resource controller is further configured to utilize memory tiering techniques by: monitoring memory access patterns. The resource controller is further configured to utilize memory tiering techniques by: promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers.
[0008] The virtualized computing environment is beneficial for categorizing and dynamically allocating the memory resources to the workloads based on meta data, which ensures that the workloads get the memory resources according to the requirement while reducing resource wastage. The virtualized computing environment is also beneficial to utilize memory tiering based on access patterns, which ensures that high-performance memory is reserved for frequently accessed data, improving overall performance. In addition, the virtualized computing environment is beneficial to reduce latency by ensuring that critical data is moved to faster memory tiers, while less critical data is stored in slower tiers. Furthermore, by virtue of using the DPU as the memory broker, the virtualized computing environment facilitates seamless memory management across multiple compute nodes and memory nodes. In addition, by allocating the memory resources efficiently and remapping the memory tiers based on access patterns, the virtualized computing environment can be used to respond to dynamic workloads with minimal impact on performance. In addition, as the number of compute nodes and memory nodes increases, the virtualized computing environment ensures that the memory resources are managed consistently, adapting to changes without compromising performance. Furthermore, the dynamic remapping of the memory tiers based on access conditions promotes and demotes data efficiently, which is beneficial for reducing latency. As a result, the frequently accessed data is moved to higher-performance tiers, ensuring that the data is readily available, while infrequently accessed data is stored in lower-performance memory. Furthermore, by virtue of managing the memory resources across multiple compute nodes and memory nodes, the virtualized computing environment is beneficial to ensure optimal usage of available memory resources in large-scale environments.
[0009] It has to be noted that all devices, elements, circuitry, units, and means described in the present application could be implemented in the software or hardware elements or any kind of combination thereof. All steps which are performed by the various entities described in the present application, as well as the functionalities described to be performed by the various entities are intended to mean that the respective entity is adapted to or configured to perform the respective steps and functionalities. Even if, in the following description of specific embodiments, a specific functionality or step to be performed by external entities is not reflected in the description of a specific detailed element of that entity that performs that specific step or functionality, it should be clear for a skilled person that these methods and functionalities can be implemented in respective software or hardware elements or any kind of combination thereof. It will be appreciated that features of the present disclosure are susceptible to being combined in various combinations without departing from the scope of the present disclosure as defined by the appended claims.
[0010] Additional aspects, advantages, features, and objects of the present disclosure would be made apparent from the drawings and the detailed description of the illustrative implementations construed in conjunction with the appended claims that follow.BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The summary above, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the present disclosure, exemplary constructions of the disclosure are shown in the drawings. However, the present disclosure is not limited to specific methods and instrumentalities disclosed herein. Moreover, those in the art will understand that the drawings are not to scale. Wherever possible, like elements have been indicated by identical numbers.
[0012] Embodiments of the present disclosure will now be described, by way of example only, with reference to the following diagrams wherein:
[0013] FIG. 1 is a diagram that represents a virtualized computing environment configured for optimizing memory performance, in accordance with an embodiment of the present disclosure;
[0014] FIG. 2A is a diagram that represents a virtualized computing environment configured for optimizing memory performance using memory tier provisioning, in accordance with an embodiment of the present disclosure;
[0015] FIG. 2B is a diagram that represents a virtualized computing environment configured for optimizing memory performance using NUMA tier provisioning, in accordance with another embodiment of the present disclosure;
[0016] FIG. 2C is a diagram that represents a virtualized computing environment configured for optimizing memory performance using full-tier provisioning, in accordance with another embodiment of the present disclosure; and
[0017] FIG. 3 is a flowchart of a method for optimizing memory performance in a virtualized computing environment, in accordance with an embodiment of the present disclosure.
[0018] In the accompanying drawings, an underlined number is employed to represent an item over which the underlined number is positioned or an item to which the underlined number is adjacent. A non-underlined number relates to an item identified by a line linking the non-underlined number to the item. When a number is non-underlined and accompanied by an associated arrow, the non-underlined number is used to identify a general item at which the arrow is pointing.DETAILED DESCRIPTION OF EMBODIMENTS
[0019] The following detailed description illustrates embodiments of the present disclosure and ways in which they can be implemented. Although some modes of carrying out the present disclosure have been disclosed, those skilled in the art would recognize that other embodiments for carrying out or practicing the present disclosure are also possible.
[0020] FIG. 1 is a diagram that represents a virtualized computing environment configured for optimizing memory performance, in accordance with an embodiment of the present disclosure. With reference to FIG. 1, there is shown a virtualized computing environment 100 that includes a resource controller 102, a compute node 104, and a memory node 106. With reference to FIG. 1, there is further shown that the compute node 104 includes a first Data Processing Unit (DPU) 108, a compute node resource locator module 110, and a metadata 112. Similarly, there is shown that the memory node 106 includes a second Data Processing Unit (DPU) 114, a memory node resource locator module 116, and a memory server 118. There is further shown a first host memory 120A, which is in communication with the compute node resource locator module 110. Similarly, there is shown a second host memory 120B, which is also in communication with the memory node resource locator module 116.
[0021] The virtualized computing environment 100 is configured for optimizing memory performance. In an example, the virtualized computing environment 100 is an environment that abstracts physical computing resources, such as the resource controller 102, the compute node 104, and the memory node 106 into logical units that can be dynamically allocated and managed. The virtualized computing environment 100 is used to provide an efficient shared persistent memory experience with remote persistent memory, shared across multiple clients, allowing access to the same memory space with low latency. The virtualized computing environment 100 enables multiple isolated workloads to run simultaneously on shared physical hardware through a hypervisor layer.
[0022] The resource controller 102 is configured to use memory device tagging to optimize primary memory performance. Examples of the resource controller 102 may include but are not limited to a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0023] The compute node 104 includes the resource controller 102 and is in communication with the memory node 106. The compute node 104 includes the compute node resource locator module 110. Examples of the compute node 104 may include but are not limited to a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0024] The memory node 106 may also be referred to as a memory host. The memory node 106 includes the memory node resource locator module 116. Examples of implementation of the memory node 106 may include but are not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM) , Dynamic Random Access Memory (DRAM) , Random Access Memory (RAM) , Read-Only Memory (ROM) , Hard Disk Drive (HDD) , Flash memory, a Secure Digital (SD) card, Solid-State Drive (SSD) , and / or CPU cache memory.
[0025] Each of the first DPU 108 and the second DPU 114 may also be referred to as a processing unit, a processing node, and the like. In an example, each of the first DPU 108 and the second DPU 114 may be a programmable computer processor that tightly integrates a general-purpose CPU with network interface hardware. In an example, each of the first DPU 108 and the second DPU 114 are configured to process the metadata 112. Examples of each of the first DPU 108 and the second DPU 114 may include but are not limited to a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuitry.
[0026] The compute node resource locator module 110 of the compute node 104 is in communication with the resource controller 102, the metadata 112, and the first host memory 120A. In an example, the compute node resource locator module 110 is a component responsible for identifying and managing the memory resources of the compute node 104. For example, in the virtualized computing environment 100, the compute node resource locator module 110 is configured to track the availability and status of one or more other compute nodes to efficiently allocate workloads.
[0027] The metadata 112 may represent a specific set of data that provides information about other data within the virtualized computing environment 100. In an example, the metadata 112 includes details, such as data creation date, and file type of a document, facilitating efficient organization and retrieval. Similarly, the metadata 112 can describe the structure of the data, including table definitions and relationships, enabling effective data management and querying. In an implementation, the metadata 112 includes performance characteristics, and the performance characteristics include one or more of latency, bandwidth, and capacity. In another implementation, the metadata 112 includes one or more of the memory types, capacity per NUMA, and server connector information.
[0028] The memory node resource locator module 116 of the memory node 106 is in communication with the resource controller 102, the metadata 112, the memory server 118, and the second host memory120B. In an example, the memory node resource locator module 116 is responsible for identifying and managing available memory resources across a network of nodes. For instance, in the virtualized computing environment 100, the memory node resource locator module 116 can detect changes in memory availability and update the memory resource information accordingly.
[0029] The memory server 118 is in communication with the memory node resource locator module 116 and the second host memory 120B. In an example, the memory server 118 is configured to provide memory resources to other nodes or devices over a network in the virtualized computing environment 100. Therefore, the memory server 118 allows multiple machines to access and utilize a shared pool of memory, enhancing performance and resource efficiency. For example, the memory server 118 in the virtualized computing environment 100 provides additional memory to the memory node 106, enabling the memory node 106 to handle larger datasets or more intensive applications without upgrading their local memory.
[0030] Each of the first host memory 120A and the second host memory 120B can be exposed via special device, which is used to bypass access to IO bus. Each of the first host memory 120A and the second host memory 120B is configured to function as a memory host. Each of the first host memory 120A and the second host memory 120B is further configured for managing and providing memory resources to other nodes of the virtualized computing environment 100. Examples of implementation of the each of the first host memory 120A and the second host memory 120B may include, but are not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM) , Dynamic Random Access Memory (DRAM) , Random Access Memory (RAM) , Read-Only Memory (ROM) , Hard Disk Drive (HDD) , Flash memory, a Secure Digital (SD) card, Solid-State Drive (SSD) , and / or CPU cache memory.
[0031] The compute node resource locator module 110 of the compute node 104 is configured to collect the metadata 112 on memory resources associated with the compute node 104 and transmit the metadata 112 on the memory resources from the compute node 104 to the resource controller 102. In one embodiment, the compute node resource locator module 110 executes an automated scanning protocol to collect the metadata 112 from the memory resources that are associated with the compute node 104. In an implementation, the automated scanning protocol initiates by identifying all memory interfaces on a system bus of the compute node 104, including but not limited to Double Data Rate (DDR) interfaces, High Bandwidth Memory (HBM) interfaces, and Peripheral Component Interconnect Express (PCIe) -attached memory devices. For each identified memory resource, the compute node resource locator module 110 queries the resource controller 102 to obtain one or more performance characteristics including but not limited to a memory type, capacity, bandwidth capabilities, and access latency measurements. Moreover, the compute node resource locator module 110 further identifies the NUMA domain associations through ACPI (Advanced Configuration and Power Interface) tables. In an example, the collected metadata 112 is stored in a first DPU 108 of the compute node 104. Thereafter, the collected metadata 112 is structured in a standardized format that further include key-value pairs for each measured characteristic. Such characteristics include, but are not limited to, memory type identifier (e.g., "DDR4" , "HBM2" , " (non-volatile memory express or “NVME" ) ) , total capacity in bytes, read / write bandwidth in GB / s, access latency in nanoseconds, and NUMA node identifier. In an implementation, the metadata 112 collection process executes periodically, with configurable intervals, such as to maintain current information about available memory resources. Thereafter, the compute node 104 is configured to transmit the metadata 112 on the memory resources and to the resource controller 102.
[0032] In accordance with an embodiment, the metadata 112 includes performance characteristics, the performance characteristics including one or more of latency, bandwidth, and capacity. In other words, metadata 112 includes the performance characteristics for the memory resources, such as the performance characteristics are collected through a measurement system that quantifies memory resource capabilities. In an example, the performance characteristics including the one or more of latency, which determines access latency values through precise timing mechanisms utilizing hardware performance counters and memory controller statistics. Furthermore, the compute node resource locator module 110 is configured to capture different access latency values, such as to capture read latency values and write latency values under varying load conditions measured in nanoseconds. Furthermore, the compute node resource locator module 110 is configured to determine bandwidth from the performance characteristics, such as through sustained transfer rate measurements. Similarly, the compute node resource locator module 110 is configured to determine the capacity metrics through direct queries to the resource controller 102 and the first memory hub. In an example, the resource controller 102 is also configured to determine each of the one or more of latency, the bandwidth as well as the capacity from the metadata 112. In an example, the compute node resource locator module 110 is configured to record total available capacity, used capacity, and free capacity in standardized units of measurement. Thereafter, the compute node resource locator module 110 is configured to combine the performance characteristics into one or more structured performance profiles. In an example, each performance profile contains numerical values for latency measurements, bandwidth measurements, and capacity measurements, stored in a standardized format enabling systematic comparison and evaluation of the metadata 112 as well as a first host memory 120A. The compute node resource locator module 110 is further configured to periodically refresh the performance characteristics of the metadata 112 at configurable intervals. In an example, the compute node resource locator module 110 is further configured to maintain historical performance data related to the metadata 112, such as to enable analysis and performance degradation detection, thereby facilitating informed decision-making for memory resource allocation and optimization while ensuring optimal utilization of available memory resources across different performance tiers.
[0033] In accordance with another embodiment, the metadata 112 further includes one or more of memory type, capacity per NUMA, server connector information. In an implementation, the compute node resource locator module 110 is configured to collect and organizes the memory characteristics through multiple collection mechanisms. In an implementation, the metadata 112 includes the one or more of the memory types, which is identified and classified as a Dynamic Random Access Memory (DRAM) , High Bandwidth Memory (HBM) , Non-Volatile Memory express over Fabric (NVMEoF) , and Memory over Fabric (MoF) and the like. Furthermore, the compute node resource locator module 110 is configured to collect the metadata 112 based on the one or more of the memory types of each of the compute node 104, which enable the workload allocation optimization and resource management. Similarly, when the metadata 112 includes the one or more of the capacity per NUMA, then, a NUMA capacity tracking mechanism measures and records the memory capacity distribution across the NUMA. Similarly, when the metadata 112 includes the server connector information, then a server connector information is collected and record detailed connectivity information between the memory resources and the compute node 104, including interface specifications, remote memory latency measurements, and bandwidth characteristics. Moreover, the server connector information enables optimal routing of memory access requests and efficient data path utilization. In an implementation, the metadata 112 combines each of the one or more of Memory type, capacity per NUMA, server connector information into unified resource profiles that enable intelligent resource allocation, optimal workload placement, and performance optimization across distributed memory resources while maintaining efficiency and meeting application performance requirements.
[0034] The memory node resource locator module 116 is further configured to collect the metadata 112 on memory resources associated with the memory node 106 and transmit the metadata 112 on the memory resources from the memory node 106 to the resource controller 102. In an example, the metadata 112 is collected from the compute node 104. In one embodiment, the memory node resource locator module 116 executes an automated scanning protocol to collect the metadata 112 from the memory resources associated with the memory node 106. In an example, the scanning protocol initiates by identifying all memory interfaces on the memory node 106 and corresponding system bus, including but not limited to DDR interfaces, HBM interfaces, and PCIe-attached memory devices. For each identified memory resource, the memory node resource locator module 116 is configured to query the resource controller 102 to obtain the performance characteristics of the metadata 112, such as including memory type, capacity, bandwidth capabilities, and access latency measurements. The memory node resource locator module 116 is further configured to identify the NUMA domain associations by analysing topology through the ACPI tables. Thereafter, the collected metadata 112 is structured in a standardized format, comprising JSON objects that contain key-value pairs for each measured characteristic. The performance characteristics of the metadata 112 include, but are not limited to, memory type identifier (e.g., "DDR4" , "HBM2" , "NVME" ) , total capacity in bytes, read / write bandwidth in GB / s, access latency in nanoseconds, and the NUMA node identifier. Furthermore, the metadata 112 collection process executes periodically, with configurable intervals defaulting to maintain current information about available memory resources.
[0035] In accordance with another embodiment, the memory resources include disaggregated memory devices and / or locally attached memory. In an implementation, the memory resources include the disaggregated memory devices. In another implementation, the memory resources include the locally attached memory. The technical benefit of incorporating both the disaggregated memory devices and the locally attached memory enables a flexible, scalable memory architecture that optimizes performance through intelligent resource allocation. Similarly, the disaggregated memory devices and / or locally attached memory are also beneficial to maximize memory capacity utilization across distributed and local memory resources, thereby reducing total cost and improving application performance through dynamic memory tiering.
[0036] In an implementation, the metadata 112 is transmitted on the memory resources from the compute node 104 and the memory node 106 to the resource controller 102. In an example, the virtualized computing environment 100 implements a secure and reliable transmission protocol for transmitting the metadata 112 between the compute node 104, the memory node 106, and the resource controller 102. In an example, the transmission of the metadata 112 begins with the establishment of TLS (Transport Layer Security) encrypted channels between the compute node 104 and the memory node 106. In an implementation, the metadata 112 is serialized into Protocol Buffer messages, which include version information, timestamp, node identifier, and the collected resource metrics. In an example, such transmission protocol implements automatic retries with exponential backoff for failed transmissions, with a maximum of three retry attempts. To optimize network utilization, the virtualized computing environment 100 implements delta encoding, transmitting only changed values rather than complete the metadata 112.
[0037] The resource controller 102 is further configured to categorize the received memory resources based on the metadata 112 on the memory resources. In an implementation, the resource controller 102 is configured to employs a sophisticated categorization algorithm to process and organize the received metadata 112 and also to categorize the received memory resources based on the metadata 112 on the memory resources. The resource controller 102 is further configured to normalizes all performance metrics to common units (e.g., converting all capacity measurements to bytes, all latency measurements to nanoseconds) . Thereafter, the resource controller 102 is configured to apply a multi-dimensional clustering algorithm that considers key performance indicators including the latency, the bandwidth, and the capacity. In an example, the clustering algorithm utilizes k-means clustering with a dynamically determined number of clusters based on the silhouette coefficient optimization. Each cluster represents a distinct category of the memory resources with similar performance characteristics. The categorization process maintains historical data of the metadata 112 to ensure stability in memory resource categories updates.
[0038] The resource controller 102 is further configured to map each memory resource to one or more discrete memory tiers, such as the number of discrete memory tiers is fewer than the available memory types. In an implementation, the resource controller 102 is configured to map each memory resource to one or more discrete memory tiers, such as the number of discrete memory tiers is fewer than the available memory types. In an example, the number of discrete memory tier is implementing a flexible mapping layer that associates categorized memory resources with discrete performance tiers. The mapping process begins by defining a limited number of tiers (e.g., three or four number of tiers) based on the performance characteristics of the metadata 112. Furthermore, each tier is defined by a set of minimum and maximum performance requirements for the latency, the bandwidth, and the capacity. The mapping algorithm evaluates each memory resource against corresponding tier definitions using a scoring function that combines normalized values of key performance metrics. The scoring function implements weighted averaging, with configurable weights for each metric based on system priorities. The memory resources that meet multiple tier criteria are mapped to all compatible tiers, with a primary tier assignment based on a score higher than a threshold value. In addition, the mapping layer maintains a dynamic index of memory resource-to-tier mappings, which is updated whenever significant changes in the memory resource characteristics are detected. Therefore, the mapping process ensures that each memory resource is dynamically assigned to its most suitable tier based on performance characteristics and workload requirements, optimizing the overall system efficiency, such as by evaluating and adjusting the assignments to maintain optimal resource utilization during a change in operational conditions by the resource controller 102.
[0039] In accordance with another embodiment, mapping of each memory resource includes allowing tenants to select desired memory tiers through a memory marketplace interface, such as the memory tiers are described by performance attributes and cost, resulting in a service-level agreement (SLA) . In an implementation, the resource controller 102 is configured to map each memory resource to allow the tenants to select desired memory tiers through a memory marketplace interface. The memory marketplace interface enables the resource controller 102 to allow the tenants to make informed, cost-optimized decisions about the memory resource allocation based on specific performance requirements and budget constraints. Similarly, the SLA-driven tier selection ensures guaranteed performance levels through automated memory resource mapping and provisioning, while maintaining quality of service across heterogeneous memory resources.
[0040] The resource controller 102 is further configured to allocate memory resources to workloads dynamically. In an implementation, the resource controller 102 is configured to implement a dynamic memory resource allocation mechanism that optimizes memory placement based on the workload requirements and the memory resource availability. The allocation process begins when the workload requests the memory resources, specifying the performance characteristics through the API. The allocation algorithm first identifies candidate memory resources from appropriate memory tiers that meet the workload's requirements. Thereafter, the resource controller 102 is configured to apply a multi-factor optimization algorithm that considers current resource utilization, access patterns, and system-wide performance goals. The resource controller 102 is further configured to implement a cost function that balances performance requirements against memory resource availability. For each allocation request, the resource controller 102 is configured to generate multiple candidate allocations and selects the optimal configuration based on a predefined function evaluation.
[0041] In accordance with another embodiment, the resource controller 102 is configured to allocate the memory resources to the workloads dynamically based on the SLA requirements and the availability of the memory tiers. In an implementation, the resource controller 102 is configured to enable efficient resource utilization by dynamically allocating the memory resources to the workloads based on the SLA requirements and the memory tier availability, ensuring optimal performance and adherence to service-level agreements. In an example, the resource controller 102 is further configured to optimize the memory resource utilization by categorizing and mapping the memory resources based on cost-performance trade-offs, aligning with tenant-specific SLA preferences for tailored performance.
[0042] The resource controller 102 is further configured to utilize a Data Processing Unit (DPU) as a memory broker to manage memory resource allocation across the compute node 104 and the memory node 106. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 as a memory broker to manage the memory resource allocation across the compute node 104 and the memory node 106. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 of the compute node 104 as the memory broker and also to manage the memory resource allocation across the compute node 104 and the memory node 106. In another implementation, a second DPU 114 of the memory node 106 is utilized as another memory broker and also to manage the memory resource allocation across the compute node 104 and the memory node 106. In an example, the implementation of each of the first DPU 108 as well as the second DPU 114 as the memory broker utilizes a specialized firmware that manages the memory resource allocation and access across the compute node 104 and the memory node 106. The firmware of each of the first DPU 108 as well as the second DPU 114 implements a memory management unit that maintains memory mapping tables and handles address translation between virtual memory spaces and physical memory spaces. The memory broker functionality includes a request handling queue that processes memory allocation requests based on priority levels.
[0043] The resource controller 102 is further configured to utilize the first DPU as a memory broker to expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 as the memory broker to expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 of the compute node 104 as the memory broker to expose the node-attached memory and the remote memory areas as the virtual memory devices via the hardware accelerators. In an example, the resource controller 102 is configured to implement a virtual memory device framework that abstracts the physical memory resources through the hardware acceleration. The virtual memory device framework begins with the first DPU 108 implementing the resource controller 102 that presents standardized memory interfaces to the compute node 104. Furthermore, the virtual memory devices are exposed through PCIe device functions, with separate functions for different memory tiers. The implementation of the virtual memory devices via the hardware accelerators includes custom device drivers that integrate with the first host memory 120A. The hardware accelerators implement memory access protocols optimized for both local and remote memory access, including prefetching algorithms and access pattern optimization.
[0044] The resource controller 102 is further configured to bypass IO buses for low-latency direct memory access. In accordance with an embodiment, IO buses are bypassed for low-latency direct memory access. Thereafter, zero-copy data paths are implemented in the virtualized computing environment 100, such as for direct memory-to-memory transfers, which is beneficial to eliminate intermediate buffering, and utilizes hardware-accelerated data movement with integrated checksum validation. In an example, the IO buses bypassing is managed through custom device drivers that integrate with the kernel-level memory management subsystem and exposed through user-space access interfaces, enabling applications to directly utilize the low-latency paths while maintaining system security and stability through hardware-level access validation logic and integrated flow control mechanisms. In accordance with various embodiments of the invention, the resource controller 102 is configured to implement the IO bus bypassing mechanism that establishes direct memory access pathways between the at least one of the compute node 104, and the memory node 106, thereby achieving significantly reduced access latencies. In an example, the virtualized computing environment 100 includes at least (i) a dedicated switching fabric operating independently of traditional IO bus architectures, (ii) custom memory controllers with integrated bypass circuitry, and (iii) specialized address translation units supporting direct addressing modes. The implementation of the low-latency direct memory access includes utilization of a dedicated physical layer that includes an improved-speed point-to-point connections, optimized trace routing, and specialized buffer management systems operating within custom clock domains specifically optimized for memory access.
[0045] In an implementation, the low-latency direct memory access employs a Memory Access Controller (MAC) that implements direct memory access protocols, such as to manage bypass path selection, and coordinates with the resource controller 102. In an implementation, the virtualized computing environment 100 is configured to work in conjunction with a Bypass Switching Matrix that provides configurable direct connections between the one compute node 104, and the memory node 106, while supporting multiple concurrent direct access paths.
[0046] The resource controller 102 is further configured to determine a change and in response thereto dynamically remap memory tiers. In an implementation, the resource controller 102 is configured to determine a change and in response thereto dynamically remap the memory tiers. In an example, the resource controller 102 is configured to implement a dynamic memory tier remapping mechanism that responds to changes in performance characteristics. The remapping process begins with continuous monitoring of the performance characteristics, including the latency, the bandwidth utilization, and the error rates. When significant changes are detected, the resource controller 102 is configured to initiate a remapping procedure that reevaluates current tier assignments. The remapping algorithm implements a stability check to prevent unnecessary transitions, requiring sustained changes over a configurable time window before initiating remapping. In an example, the remapping process includes a phased transition mechanism that maintains stability during the remapping operations. In such example, the implementation of the remapping includes rollback capabilities in case remapping operations result in degraded performance
[0047] In accordance with another embodiment, the resource controller 102 is configured to determine a change in workload requirement and / or SLA parameters and in response thereto dynamically remap the memory tiers. In an implementation, the resource controller 102 is configured to determine the change in the workload requirement and / or SLA parameters. Thereafter, the resource controller 102 is configured to dynamically remap the memory tiers. As a result, the resource controller 102 is configured to improve adaptability and performance by dynamically remapping the memory tiers in response to changes in workload requirements or the SLA parameters, ensuring efficient resource management. In accordance with another embodiment, the categorization of the memory resources include mapping the memory resources based on cost-performance trade-offs to support tenant-specific SLA preferences. In an implementation, the resource controller 102 is configured to map the memory resources based on cost-performance trade-offs to support tenant-specific SLA preferences, such as for categorization of the memory resources.
[0048] The resource controller 102 is further configured to utilize memory tiering techniques by: monitoring memory access patterns. In an implementation, the resource controller 102 is configured to implement a comprehensive memory access monitoring framework that monitor the memory access patterns across all memory resources. The resource controller 102 is further configured to utilize hardware counters in the first DPU 108 to track memory access frequencies, read / write ratios, and access sizes. The implementation of the monitoring the memory access patterns includes circular buffers that maintain recent memory access history, with configurable retention periods. The resource controller 102 is further configured to implement sampling techniques to reduce overhead, with adaptive sampling rates based on system load. Thereafter, the collected data is aggregated and analysed using the resource controller 102 to identify access patterns and trends. The monitoring framework includes anomaly detection capabilities to identify unusual access patterns that might indicate system issues or optimization opportunities.
[0049] In accordance with another embodiment, the resource controller 102 is configured to monitor the memory access patterns using processor event-based sampling to identify frequently accessed data pages. In an implementation, the resource controller 102 is configured to monitor the memory access patterns using a comprehensive framework, including hardware counters, circular buffers, and adaptive sampling techniques. Moreover, the collected data is analysed to identify the frequently accessed data pages, such as based to identify trends, detect anomalies, and optimize memory tiering. As a result, the resource controller 102 is configured to configured to improve memory management efficiency by identifying the frequently accessed data pages through the processor event-based sampling, enabling optimized allocation and performance.
[0050] The resource controller 102 is further configured to utilize memory tiering techniques by: promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers. In an implementation, the resource controller 102 is configured to utilize the memory tiering techniques, such as by promoting frequently the accessed data pages with the access level meeting the high access condition to higher-performance tiers. In such implementation, the resource controller 102 is further configured to utilize the memory tiering techniques, such as by demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers. The resource controller 102 is further configured to implement an automated page management system that optimizes data placement across the memory tiers based on access patterns. The implementation of the automated page management system includes a page tracking mechanism that maintains access statistics for memory pages, including access frequency, access recency, and access type (e.g., read or write) . The resource controller 102 is further configured to evaluate pages against configurable thresholds for access level meeting the high access condition as well as meeting the low access conditions. In an example, when a page meets promotion criteria, the resource controller 102 is further configured to initiate a page migration to a higher-performance tier, implementing copy-on-write mechanisms to maintain data consistency during migration. Similarly, the pages meeting demotion criteria are moved to lower-performance tiers. The implementation includes a migration scheduler that optimizes the timing and ordering of page movements to minimize system impact. The page management system maintains history information to prevent thrashing of frequently promoted / demoted pages.
[0051] The virtualized computing environment 100 is beneficial for categorizing and dynamically allocating the memory resources to the workloads based on meta data, which ensures that the workloads get the memory resources according to the requirement, while reducing resource wastage. The virtualized computing environment 100 is also beneficial to utilize memory tiering based on access patterns, which ensure that high-performance memory is reserved for frequently accessed data, improving overall performance. In addition, the virtualized computing environment 100 is beneficial to reduce latency by ensuring that critical data is moved to faster memory tiers, while less critical data is stored in slower tiers. Furthermore, by virtue of using the DPU as the memory broker, the virtualized computing environment 100 facilitates seamless memory management across multiple compute nodes and memory nodes. In addition, by allocating the memory resources efficiently and remapping the memory tiers based on access patterns, the virtualized computing environment 100 can be used to respond to dynamic workloads with minimal impact on performance. In addition, as the number of the compute nodes and the memory nodes increases, the virtualized computing environment 100 ensures that the memory resources are managed consistently, adapting to changes without compromising performance. Furthermore, the dynamic remapping of the memory tiers based on access conditions promotes and demotes data efficiently, which is beneficial to reduce latency. As a result, the frequently accessed data is moved to higher-performance tiers, ensuring that the data is readily available, while infrequently accessed data is stored in lower-performance memory. Furthermore, by virtue of managing the memory resources across multiple compute nodes and memory nodes, the virtualized computing environment 100 is beneficial to ensure optimal usage of available memory resources in large-scale environments.
[0052] FIG. 2A is a diagram that represents a virtualized computing environment configured for optimizing memory performance using memory tier provisioning, in accordance with an embodiment of the present disclosure. FIG. 2A is described in conjunction with FIG. 1. With reference to FIG. 2A, there is shown a virtualized computing environment 200A that is configured for optimizing memory performance using memory tier provisioning. With reference to FIG. 2A there is shown that the virtualized computing environment 200A includes the resource controller 102, the compute node 104 and the memory node 106. There is further shown that the first DPU 108 includes a memory tiering engine 202, a first memory provider 204, a second memory provider 206, a compute provision 208, and a memory client 210. There is further shown that the compute node 104 includes a quick emulator (QEMU) 212, which includes a virtual machine 214, a first memory driver 216, a second memory driver 218, virtual memory device 220, an IO memory device 222, and a Kernel-based Virtual Machine (KVM) 224.
[0053] The memory tiering engine 202 is an engine that manages the allocation and movement of data across different types of memory, each with distinct performance and cost characteristics. By analysing memory access patterns, the memory tiering engine 202 ensures that frequently accessed ( "hot" ) data resides in faster memory tiers, such as DRAM, while less frequently accessed ( "cold" ) data is placed in slower, more cost-effective tiers, like NVMe-based storage. This dynamic data placement optimizes overall performance and resource utilization of the virtualized computing environment 200A.
[0054] The first memory provider 204 and the second memory provider 206 are responsible for supplying and managing memory resources for computing tasks. Each of the first memory provider 204 and the second memory provider 206 abstracts an underlying memory hardware, ensuring efficient allocation and deallocation of memory across different types of memory (e.g., RAM, storage, or specialized memory tiers) . In the virtualized computing environment 200A, each of the first memory provider 204 and the second memory provider 206 are configured to manage virtual memory allocation across multiple servers, ensuring that each virtual machine gets the necessary amount of memory based on current memory providers. Examples of implementation of each of the first memory provider 204 and the second memory provider 206 may include but are not limited to a physical memory provider, a virtual memory provider, a cloud memory provider, a cloud service providers, a distributed memory provider, a memory tiering provider, a memory tiering engine, a specialized memory provider, a non-volatile memory provider, a persistent memory provider, a software-based memory provider, a hardware memory provider, and the like.
[0055] The compute provision 208 is configured to provision the memory resources in datacentre and categorize them in terms of distance (latency) , bandwidth and capacity, such as to provide a linear scale of memory tiers. Similarly, the memory client 210 is in communication with the KVM 224 and the memory server 118.
[0056] The QEMU 212 is a versatile open-source tool that provides virtualization and emulation capabilities for various architectures. The QEMU 212 includes the VM 214, which can either be used for full system emulation, where the QEMU 212 replicates an entire physical system including CPU, memory, and devices, or for user mode emulation, which focuses on running individual applications from one architecture on another. Additionally, when integrated with the KVM 224, the QEMU 212 is configured to provide hardware-accelerated virtualization, combining the strengths of an I / O emulation of the QEMU 212 with the KVM 224 and provides an efficient processing and memory management.
[0057] The VM 214 is a software-based simulation of a physical computer. The VM 214 runs an operating system and applications just like a physical machine, but the VM 214 exists in the virtualized computing environment 200A provided by a hypervisor or virtualization software, such as the QEMU 212. The VM 214 operates independently with own virtualized hardware components, such as central processing unit, a memory, a storage, and one or more network interfaces. In an example, the VM 214 allow multiple operating systems to run simultaneously on a single physical machine. In an example, the virtual memory device 220 are configured to work with the VM 214. Examples of implementation of the virtual memory device 220 may include a distributed virtual memory, a stable virtual memory, a fixed virtual memory, and the like.
[0058] The first memory driver 216 and the second memory driver 218 are configured to interact with and manage memory hardware or virtual memory resources. In an example, the first memory driver 216 is configured to interact with and manage the virtual memory device 220. In such example, the second memory driver 218 is configured to interact with and manage the IO memory device 222. In another example, the first memory driver 216 is configured to interact with and manage the IO memory device 222. In such examples, the second memory driver 218 is configured to interact with and manage the virtual memory device 220. Examples of implementation of each of the first memory driver 216 and the second memory driver 218 may include but are not limited to a physical memory driver, a virtual memory driver, a swap space driver, and a memory-mapped I / O (MMIO) driver.
[0059] The KVM 224 is configured to allow multiple virtual machines (VMs) to run on a physical host by utilizing hardware virtualization extensions in modern processors. Each VM in the KVM 224 is treated as a regular process, but each VM in the KVM 224 runs a full-fledged guest operating system with own virtualized hardware, including CPU, memory, and network interfaces. The KVM 224 leverages the host operating system's resources and kernel features like process scheduling, memory management, and I / O handling, providing a flexible and efficient virtualization solution.
[0060] In an implementation, the resource controller 102 is configured to firstly communicates with the memory tiering engine 202 to identify available memory tiers. Thereafter, the memory tiering engine 202 is configured to coordinate with each of the first memory provider 204 and the second memory provider 206 to understand memory availability, which is used to determine what resources can be allocated. In accordance with another embodiment, the resource controller 102 is configured to utilize an application programming interface (API) that reflects the memory tiers as discrete allocation values. In an example, the API reflects the memory tiers to an application via allocation of the API with the discrete allocation values.
[0061] Thereafter, the memory client 210 is configured to initiate a memory access request, such as the memory requests for one or more applications for memory resources from specific memory tiers. In an example, the request goes through the compute provision 208 and also through the memory tiering engine 202, which processes the received request. Furthermore, at least one of the first memory provider 204 or the second memory provider is engaged based on the tier requirements. In an example, the API enables receiving memory requests for one or more applications for memory from specific tiers, with fallback mechanisms to slower tiers in case of resource unavailability, and / or exposing memory tiering to applications through Non-Uniform Memory Access (NUMA) -aware APIs. Therefore, supporting configurations via Advanced Configuration and Power Interface (ACPI) tables. Alternatively stated, the virtualized computing environment 100 implements the API for exposing the memory tiering to the application, such as through the discrete allocation values, enabling fine-grained control over memory resource utilization. In an example, the discrete allocation values include at least one of a fast allocation value, a medium allocation value, and a slow allocation value. In an implementation, the resource controller 102 is configured to abstract physical memory resources into performance tiers, such as "TIER_HIGH" , "TIER_MEDIUM" , and "TIER_LOW" . Therefore, each performance tier represents a performance category characterized by defined latency parameters, bandwidth parameters, and capacity parameters.
[0062] In an implementation, each of the first memory driver 216 and the second memory driver 218 in the QEMU 212 are configured to interact with the virtual memory device 220 and the IO memory device 222. Moreover, each of the first memory driver 216 and the second memory driver 218 are configured to work together under the KVM 224 supervision to manage the actual memory access through the virtual memory device 220 and the IO memory device 222.
[0063] In an implementation, when a memory request is initiated, the memory server 118 receives the request from the memory client 210 and communicates the received request to the memory tiering engine 202. Thereafter, the memory tiering engine 202 is configured to checks with the resource controller 102 for tier availability. based on this, the request is directed to the appropriate memory providers, such as the first memory provider 204 and the second memory provider 206. Thereafter, the second DPU 114 is configured to handle the data movement between the compute node 104 and the memory node 106. Moreover, the first DPU 108 is configured to coordinate with the memory tiering engine 202, the first memory provider 204, and the second memory provider 206 for memory allocation, while managing the physical data transfer. Thereafter, the compute provision 208 is configured to continuously monitor system state, receiving usage data from the memory client 210 and also configured to check resource availability with the resource controller 102, ensuring adjustments are made through the memory tiering engine 202. In an example, when memory resource usage changes, then the memory client 210 is configured to report to the compute provision 208, which consults the resource controller 102. Thereafter, the memory tiering engine 202 is configured to adjust the allocations by instructing each of the first memory provider 204 and the second memory provider 206 and updating the memory server 118. As a result, the synchronization across components is crucial with the memory server 118 ensuring consistency in the first host memory 120A and the second host memory 120B, while the second DPU 114 ensures efficient data transfer and coordination.
[0064] FIG. 2B is a diagram that represents a virtualized computing environment configured for optimizing memory performance using NUMA tier provisioning, in accordance with an embodiment of the present disclosure. FIG. 2B is described in conjunction with FIG. 1 and FIG. 2A. With reference to FIG. 2B, there is shown a virtualized computing environment 200B that is configured for optimizing memory performance using memory tier provisioning. With reference to FIG. 2B there is shown that the virtualized computing environment 200B includes the resource controller 102, the compute node 104 and the memory node 106. There is further shown that the first DPU 108 includes the memory tiering engine 202, the compute provision 208, and the memory client 210. There is further shown that the compute node 104 includes the QEMU 212, which includes the virtual machine 214, the first memory driver 216, and the KVM 224. There is further shown a virtual Non-Uniform Memory Access (vNUMA) 226, a memory device vNUMA 228, and an advanced configuration power interface (ACPI) table 230.
[0065] The vNUMA 226 is a configuration in the virtualized computing environment 200B where multiple virtual CPUs (vCPUs) are assigned to specific memory regions, mimicking the behaviour of a NUMA system. The vNUMA 226 is beneficial to improve performance by providing locality of memory access to the virtual machine 214. The vNUMA 226 further enable an improved memory access optimization by reducing latency and improving memory bandwidth usage. Examples of implementation of the vNUMA 226 may include but are not limited to a static vNUMA, a dynamic vNUMA, and the like.
[0066] The memory device vNUMA 228 is configured to ensure that the available memory is allocated in such a way that memory access patterns can be optimized, reducing latency and improving the performance of virtual machines (VMs) . Examples of implementation of the memory device vNUMA 228 may include but are not limited to a static memory device vNUMA, dynamic memory device vNUMA, and the like.
[0067] In an implementation, the memory tiering engine 202 is configured to coordinate with the vNUMA 226 to manage the available memory resources, while communicating with the resource controller 102 for resource allocation decisions. Furthermore, the QEMU 212 contains the VM 214 and the first memory driver 216, which interface with the memory device vNUMA 228 and the ACPI tables 230 along with the KVM 224. Furthermore, when memory operations are initiated, then the memory client 210 is configured to interface with the compute provision 208, which is further configured to coordinates with the memory tiering engine 202 to manage the memory allocations. Thereafter, the vNUMA 226 is configured to work in conjunction with memory device vNUMA 228 to maintain the memory organization and access patterns. In addition, the memory node 106 that includes the second DPU 114, and the memory server 118, which facilitate data transfer and memory management between the compute node 104 and the second host memory 120B, while first host memory 120A provides primary memory resources. Furthermore, the virtualized computing environment 200B maintains continuous synchronization through the ACPI tables 230, which store configuration and topology information, while the KVM 224 oversees the operations of the VM 214 and memory access patterns, ensuring efficient memory utilization and proper resource allocation across all components in the virtualized environment.
[0068] [Rectified under Rule 91, 19.03.2025]FIG. 2C is a diagram that represents a virtualized computing environment configured for optimizing memory performance using full tier provisioning, in accordance with an embodiment of the present disclosure. FIG. 2C is described in conjunction with FIG. 1, FIG. 2A, and FIG. 2B. With reference to FIG. 2C, there is shown a virtualized computing environment 200C that is configured for optimizing memory performance using memory tier provisioning. With reference to FIG. 2C there is shown that the virtualized computing environment 200C includes the resource controller 102, the compute node 104 and the memory node 106. There is further shown another memory node 232, a third DPU 234, another memory server 236, a third host memory 238. There is further shown another compute node 240, a third DPU 242, another resource controller 244, another memory tiering engine 246, third memory provider 248, a fourth memory provider 250, another memory client 252, another QEMU 254, another VM 256, another memory driver 258, another virtual memory device 260, another KVM 262, and another host memory 264.
[0069] In an implementation, when a memory request is initiated, the other memory server 236 receives the request from the other memory client 252 and communicates the received request to the other memory tiering engine 246. Thereafter, the other memory tiering engine 246 is configured to check with the other resource controller 244 for tier availability, such as the request is directed to the appropriate memory providers, for example, the third memory provider 248 and the fourth memory provider 250. Thereafter, the third DPU 242 is configured to handle the data movement between the other compute node 240 and the compute node 104. Moreover, the third DPU 242 is configured to coordinate with the other memory tiering engine 246, the third memory provider 248, and the fourth memory provider 250 for memory allocation, while managing the physical data transfer. Thereafter, the other memory tiering engine 246 is configured to adjust the allocations by instructing each of the third memory provider 248 and the fourth memory provider 250 and updating the memory server 118 as well as the other memory server 236. As a result, the synchronization across components is crucial with the memory server 118 as well as the other memory server 236 ensuring consistency in the first host memory 120A, the second host memory 120B, and the other host memory 264, while each of the second DPU 114 and the third DPU 242 ensures efficient data transfer and coordination.
[0070] FIG. 3 is a flowchart of a method for optimizing memory performance in a virtualized computing environment, in accordance with an embodiment of the present disclosure. With reference to FIG. 3 there is shown a flowchart of a method 300 for optimizing memory performance in the virtualized computing environment 100. The method includes steps 302-to-322.
[0071] The method 300 is used for optimizing memory performance in a virtualized computing environment 100. The virtualized computing environment 100 includes a resource controller 102, the compute node 104, and the memory node 106. Moreover, each of the compute node 104 further include a compute node resource locator module 110. Similarly, the memory node 106 includes a memory node resource locator module 116.
[0072] In an implementation, the computer node further includes a first Data Processing Unit (DPU) , which further includes metadata 112 and the resource controller 102. Moreover, the compute node resource locator module 110 is in communication with each of the metadata 112, the resource controller 102, and also with the first host memory 120A. Similarly, the memory node 106 includes a second Data Processing Unit (DPU) , which also includes the memory node resource locator module 116 and a memory server, which is in communication with a second host memory 120B.
[0073] In accordance with another embodiment, the method 300 further includes utilizing an application programming interface (API) that reflects memory tiers as discrete allocation values. In an example, the API reflects the memory tiers to an application via allocation of the API with the discrete allocation values. Moreover, the API enables receiving memory requests for one or more applications for memory from specific tiers, with fallback mechanisms to slower tiers in case of resource unavailability, and / or exposing memory tiering to applications through Non-Uniform Memory Access (NUMA) -aware APIs and supporting configurations via Advanced Configuration and Power Interface (ACPI) tables. Alternatively stated, the method 300 includes, implementing the API for exposing the memory tiering to the application, such as through the discrete allocation values, enabling fine-grained control over memory resource utilization. In an example, the discrete allocation values include at least one of a fast allocation value, a medium allocation value, and a slow allocation value. In an implementation, the method 300 includes abstracting physical memory resources into performance tiers, such as "TIER_HIGH" , "TIER_MEDIUM" , and “TIER_LOW" . Therefore, each performance tier represents a performance category characterized by defined latency parameters, bandwidth parameters, and capacity parameters.
[0074] At step 302, the method 300 includes, collecting metadata 112, by the compute node resource locator module 110 of each compute node 104, such as the metadata 112 is collected on memory resources associated with the compute node 104. In one embodiment, the compute node resource locator module 110 executes an automated scanning protocol to collect the metadata 112 from the memory resources that are associated with the compute node 104. In an implementation, the automated scanning protocol initiates by identifying all memory interfaces on a system bus of the compute node 104, including but not limited to Double Data Rate (DDR) interfaces, High Bandwidth Memory (HBM) interfaces, and Peripheral Component Interconnect Express (PCIe) -attached memory devices. For each identified memory resource, the compute node resource locator module 110 queries the resource controller 102 to obtain one or more performance characteristics including but not limited to a memory type, capacity, bandwidth capabilities, and access latency measurements. Moreover, the compute node resource locator module 110 further identifies the NUMA domain associations through ACPI (Advanced Configuration and Power Interface) tables. In an example, the collected metadata 112 is stored in the first DPU 108 of the compute node 104. Thereafter, the collected metadata 112 is structured in a standardized format, including but not limited to JavaScript Object Notation (JSON) objects that further include key-value pairs for each measured characteristic. Such characteristics include, but are not limited to, memory type identifier (e.g., "DDR4" , "HBM2" , " (non-volatile memory express or “NVME" ) ) , total capacity in bytes, read / write bandwidth in GB / s, access latency in nanoseconds, and NUMA node identifier. In an implementation, the metadata 112 collection process executes periodically, with configurable intervals, such as to maintain current information about available memory resources. Thereafter, method 300 includes, transmitting, by the compute node 104, the metadata 112 on the memory resources from the compute node 104 to the resource controller 102.
[0075] In accordance with an embodiment, the metadata 112 include performance characteristics, the performance characteristics including one or more of latency, bandwidth, and capacity. In other words, the method 300 includes, implementing the metadata 112 that includes the performance characteristics for memory resources, such as the performance characteristics are collected through a measurement system that quantifies memory resource capabilities.
[0076] In an example, the performance characteristics including the one or more of latency, which determines access latency values through precise timing mechanisms utilizing hardware performance counters and memory controller statistics. Furthermore, the compute node resource locator module 110 is configured to capture different access latency values, such as to capture read latency values and write latency values under varying load conditions measured in nanoseconds. Furthermore, the compute node resource locator module 110 is configured to determine bandwidth from the performance characteristics, such as through sustained transfer rate measurements. Similarly, the compute node resource locator module 110 is configured to determine the capacity metrics through direct queries to the resource controller 102 and the first memory hub. In an example, the resource controller 102 is also configured to determine each of the one or more of latency, the bandwidth as well as the capacity from the metadata 112. In an example, the compute node resource locator module 110 is configured to record total available capacity, used capacity, and free capacity in standardized units of measurement. Thereafter, the compute node resource locator module 110 is configured to combine the performance characteristics into one or more structured performance profiles. In an example, each performance profile contains numerical values for latency measurements, bandwidth measurements, and capacity measurements, stored in a standardized format enabling systematic comparison and evaluation of the metadata 112 as well as the first host memory 120A. The compute node resource locator module 110 is further configured to periodically refresh the performance characteristics of the metadata 112 at configurable intervals. In an example, the compute node resource locator module 110 is further configured to maintain historical performance data related the metadata 112, such as to enable trend analysis and performance degradation detection, thereby facilitating informed decision-making for memory resource allocation and optimization while ensuring optimal utilization of available memory resources across different performance tiers.
[0077] In accordance with another embodiment, the Metadata 112 further include one or more of Memory type, capacity per NUMA, server connector information. In an implementation, the method includes implementing the metadata 112 collection and management for memory resources, such as the compute node 104 is configured to collect and organizes the memory characteristics through multiple collection mechanisms. In an implementation, the metadata 112 includes the one or more of the memory types, which is identified and classified as a Dynamic Random Access Memory (DRAM) , High Bandwidth Memory (HBM) , Non-Volatile Memory express over Fabric (NVMEoF) , and Memory over Fabric (MoF) and the like. Furthermore, the compute node resource locator module 110 is configured to collect the metadata 112 based on the one or more of the memory types of each compute node 104, which enable the workload allocation optimization and resource management. Similarly, when the metadata 112 includes the one or more of the capacities per NUMA, then, a NUMA capacity tracking mechanism measures and records the memory capacity distribution across the NUMA. Similarly, when the metadata 112 includes the server connector information, then a server connector analysis mechanism is configured to collect and record detailed connectivity information between the memory resources and the compute node 104, including interface specifications, remote memory latency measurements, and bandwidth characteristics. Moreover, the server connector information enables optimal routing of memory access requests and efficient data path utilization. In an implementation, the metadata 112 combines each of the one or more of Memory type, capacity per NUMA, server connector information into unified resource profiles that enable intelligent resource allocation, optimal workload placement, and performance optimization across distributed memory resources while maintaining efficiency and meeting application performance requirements.
[0078] At step 304, the method 300 includes, the memory node resource locator module 116 collecting the metadata 112 on memory resources associated with the memory node 106. In an example, the metadata 112 is collected from the compute node 104. In one embodiment, the memory node resource locator module 116 executes an automated scanning protocol to collect the metadata 112 from the memory resources associated with the memory node 106.
[0079] In an example, the scanning protocol initiates by identifying all memory interfaces on the memory node 106 and corresponding system bus, including but not limited to DDR interfaces, HBM interfaces, and PCIe-attached memory devices. For each identified memory resource, the memory node resource locator module 116 is configured to query the resource controller 102 to obtain the performance characteristics of the metadata 112, such as including memory type, capacity, bandwidth capabilities, and access latency measurements. The memory node resource locator module 116 is further configured to identify the NUMA domain associations by analysing topology through the ACPI tables. Thereafter, the collected metadata 112 is structured in a standardized format, comprising JSON objects that contain key-value pairs for each measured characteristic. The performance characteristics of the metadata 112 include, but are not limited to, memory type identifier (e.g., "DDR4" , "HBM2" , "NVME" ) , total capacity in bytes, read / write bandwidth in GB / s, access latency in nanoseconds, and the NUMA node identifier. The metadata 112 collection process executes periodically, with configurable intervals defaulting to maintain current information about available memory resources.
[0080] In accordance with another embodiment, the memory resources include disaggregated memory devices and / or locally attached memory. In an implementation, the memory resources include the disaggregated memory devices. In another implementation, the memory resources include the locally attached memory. The technical benefit of incorporating both the disaggregated memory devices and the locally attached memory enables a flexible, scalable memory architecture that optimizes performance through intelligent resource allocation. Similarly, the disaggregated memory devices and / or locally attached memory are also beneficial to maximize memory capacity utilization across distributed and local memory resources, thereby reducing total cost and improving application performance through dynamic memory tiering.
[0081] At step 306, the method 300 includes, transmitting the metadata 112 on the memory resources from the compute node 104 (s) and the memory node 106 to the resource controller 102. The virtualized computing environment 100 implements a secure and reliable transmission protocol for the transmitting the metadata 112 between the compute node 104, the memory node 106, and the resource controller 102. In an example, the transmission of the metadata 112 begins with the establishment of TLS (Transport Layer Security) encrypted channels between the compute node 104 and the memory node 106. In an implementation, the metadata 112 is serialized into Protocol Buffer messages, which include version information, timestamp, node identifier, and the collected resource metrics.
[0082] In an example, such transmission protocol implements automatic retries with exponential backoff for failed transmissions, with a maximum of three retry attempts. To optimize network utilization, the virtualized computing environment 100 implements delta encoding, transmitting only changed values rather than a complete set of the metadata 112.
[0083] At step 308, the method 300 includes, categorizing the received memory resources based on the metadata 112 on the memory resources. In an implementation, the resource controller 102 is configured to employs a sophisticated categorization algorithm to process and organize the received metadata 112 and also to categorize the received memory resources based on the metadata 112 on the memory resources. The resource controller 102 is further configured to normalizes all performance metrics to common units (e.g., converting all capacity measurements to bytes, all latency measurements to nanoseconds) . Thereafter, the resource controller 102 is configured to apply a multi-dimensional clustering algorithm that considers key performance indicators including the latency, the bandwidth, and the capacity. In an example, the clustering algorithm utilizes k-means clustering with a dynamically determined number of clusters based on the silhouette coefficient optimization. Each cluster represents a distinct category of the memory resources with similar performance characteristics. The categorization process maintains historical data of the metadata 112 to ensure stability in memory resource categories updates.
[0084] At step 310, the method 300 includes, mapping each memory resource to one or more discrete memory tiers, such as the number of discrete memory tiers is fewer than the available memory types. In an implementation, the resource controller 102 is configured to map each memory resource to one or more discrete memory tiers, such as the number of discrete memory tiers is fewer than the available memory types. In an example, the number of discrete memory tier is implementing a flexible mapping layer that associates categorized memory resources with discrete performance tiers. The mapping process begins by defining a limited number of tiers (e.g., three or four number of tiers) based on the performance characteristics of the metadata 112. Furthermore, each tier is defined by a set of minimum and maximum performance requirements for the latency, the bandwidth, and the capacity. The mapping algorithm evaluates each memory resource against corresponding tier definitions using a scoring function that combines normalized values of key performance metrics. The scoring function implements weighted averaging, with configurable weights for each metric based on system priorities. The memory resources that meet multiple tier criteria are mapped to all compatible tiers, with a primary tier assignment based on a score higher than a threshold value. In addition, the mapping layer maintains a dynamic index of memory resource-to-tier mappings, which is updated whenever significant changes in the memory resource characteristics are detected.
[0085] In accordance with another embodiment, mapping each memory resource include allowing tenants to select desired memory tiers through a memory marketplace interface, such as the memory tiers are described by performance attributes and cost, resulting in a service-level agreement (SLA) . In an implementation, the resource controller 102 is configured to map each memory resource to allow the tenants to select desired memory tiers through a memory marketplace interface. The memory marketplace interface enables the resource controller 102 to allow the tenants to make informed, cost-optimized decisions about the memory resource allocation based on specific performance requirements and budget constraints. Similarly, the SLA-driven tier selection ensures guaranteed performance levels through automated memory resource mapping and provisioning, while maintaining quality of service across heterogeneous memory resources.
[0086] At step 312, the method 300 includes, allocating the memory resources to workloads dynamically. In an implementation, the resource controller 102 is configured to implement a dynamic memory resource allocation mechanism that optimizes memory placement based on the workload requirements and the memory resource availability. The allocation process begins when the workload requests the memory resources, specifying the performance characteristics through the API. The allocation algorithm first identifies candidate memory resources from appropriate memory tiers that meet the workload's requirements. Thereafter, the resource controller 102 is configured to apply a multi-factor optimization algorithm that considers current resource utilization, access patterns, and system-wide performance goals. The resource controller 102 is further configured to implement a cost function that balances performance requirements against memory resource availability. For each allocation request, the resource controller 102 is configured to generate multiple candidate allocations and selects the optimal configuration based on a predefined function evaluation.
[0087] In accordance with another embodiment, the method 300 further include allocating the memory resources to the workloads dynamically based on the SLA requirements and the availability of the memory tiers. In an implementation, the resource controller 102 is configured to enable efficient resource utilization by dynamically allocating the memory resources to the workloads based on the SLA requirements and the memory tier availability, ensuring optimal performance and adherence to service-level agreements.
[0088] At step 314, the method 300 includes, utilizing the first DPU 108 as a memory broker to manage the memory resource allocation across the compute node 104 and the memory node 106. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 of the computer node as the memory broker and also to manage the memory resource allocation across the compute node 104 and the memory node 106. In another implementation, the second DPU 114 of the memory node 106 is utilized as another memory broker and also to manage the memory resource allocation across the compute node 104 and the memory node 106. In an example, the implementation of the DPU as the memory broker utilizes a specialized firmware that manages the memory resource allocation and access across the compute node 104 and the memory node 106. The DPU firmware implements a memory management unit that maintains memory mapping tables and handles address translation between virtual memory spaces and physical memory spaces. The memory broker functionality includes a request handling queue that processes memory allocation requests based on priority levels.
[0089] At step 316, the method 300 includes, utilizing the first DPU 108 as the memory broker to expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators. In an implementation, the resource controller 102 is configured to utilize the first DPU 108 of the computer node as the memory broker to expose the node-attached memory and the remote memory areas as the virtual memory devices via the hardware accelerators. In an example, the resource controller 102 is configured to implement a virtual memory device framework that abstracts the physical memory resources through the hardware acceleration. The virtual memory device framework begins with the first DPU 108 implementing the resource controller 102 that presents standardized memory interfaces to the compute node 104. Furthermore, the virtual memory devices are exposed through PCIe device functions, with separate functions for different memory tiers. The implementation of the virtual memory devices via the hardware accelerators includes custom device drivers that integrate with the first host memory 120A. The hardware accelerators implement memory access protocols optimized for both local and remote memory access, including prefetching algorithms and access pattern optimization.
[0090] In accordance with an embodiment, the method 300 includes bypassing IO buses for low-latency direct memory access. In an example, the method 300 includes, utilizing the resource controller 102 to bypass the IO buses for low-latency direct memory access. The method 300 further includes, implementing zero-copy data paths for direct memory-to-memory transfers, which is beneficial to eliminate intermediate buffering, and utilizes hardware-accelerated data movement with integrated checksum validation. In an example, the IO buses bypassing is managed through custom device drivers that integrate with the kernel-level memory management subsystem and exposed through user-space access interfaces, enabling applications to directly utilize the low-latency paths while maintaining system security and stability through hardware-level access validation logic and integrated flow control mechanisms. In accordance with various embodiments of the invention, the method 300 implements the IO bus bypassing mechanism that establishes direct memory access pathways between the compute node 104, and the memory node 106, thereby achieving significantly reduced access latencies. In an example, the virtualized computing environment 100 includes at least (i) a dedicated switching fabric operating independently of traditional IO bus architectures, (ii) custom memory controllers with integrated bypass circuitry, and (iii) specialized address translation units supporting direct addressing modes. The implementation of the low-latency direct memory access includes utilization of a dedicated physical layer that includes an improved-speed point-to-point connections, optimized trace routing, and specialized buffer management systems operating within custom clock domains specifically optimized for memory access. In an implementation, the low-latency direct memory access employs a Memory Access Controller (MAC) that implements direct memory access protocols, such as to manage bypass path selection, and coordinates with the resource controller 102. In an implementation, the virtualized computing environment 100 is configured to work in conjunction with a Bypass Switching Matrix that provides configurable direct connections between the compute node 104, and the memory node 106, while supporting multiple concurrent direct access paths.
[0091] At step 318, the method 300 includes, determining a change and in response thereto dynamically remap the memory tiers. In an implementation, the resource controller 102 is configured to determine a change and in response thereto dynamically remap the memory tiers. In an example, the resource controller 102 is configured to implement a dynamic memory tier remapping mechanism that responds to changes in performance characteristics. The remapping process begins with continuous monitoring of the performance characteristics, including the latency, the bandwidth utilization, and the error rates. When significant changes are detected, the resource controller 102 is configured to initiate a remapping procedure that reevaluates current tier assignments. The remapping algorithm implements a stability check to prevent unnecessary transitions, requiring sustained changes over a configurable time window before initiating remapping. In an example, the remapping process includes a phased transition mechanism that maintains stability during the remapping operations. In such example, the implementation of the remapping includes rollback capabilities in case remapping operations result in degraded performance.
[0092] In accordance with another embodiment, the method 300 further include determining a change in workload requirement and / or SLA parameters and in response thereto dynamically remap the memory tiers. In an implementation, the resource controller 102 is configured to determine the change in the workload requirement and / or SLA parameters. Thereafter, the resource controller 102 is configured to dynamically remap the memory tiers. As a result, the resource controller 102 is configured to improve adaptability and performance by dynamically remapping the memory tiers in response to changes in workload requirements or the SLA parameters, ensuring efficient resource management. In accordance with another embodiment, the categorization of the memory resources include mapping the memory resources based on cost-performance trade-offs to support tenant-specific SLA preferences. In an implementation, the resource controller 102 is configured to map the memory resources based on cost-performance trade-offs to support tenant-specific SLA preferences, such as for categorization of the memory resources. In an example, the resource controller 102 is further configured to optimize the memory resource utilization by categorizing and mapping the memory resources based on cost-performance trade-offs, aligning with tenant-specific SLA preferences for tailored performance.
[0093] At step 320, the method 300 includes, utilizing memory tiering techniques by: monitoring memory access patterns. In an implementation, the resource controller 102 is configured to utilize the memory tiering techniques by: monitoring the memory access patterns. In an implementation, the resource controller 102 is configured to implement a comprehensive memory access monitoring framework that monitors the memory access patterns across all memory resources. The resource controller 102 is further configured to utilize hardware counters in the first DPU 108 to track memory access frequencies, read / write ratios, and access sizes. The implementation of the monitoring the memory access patterns includes circular buffers that maintain recent memory access history, with configurable retention periods. The resource controller 102 is further configured to implement sampling techniques to reduce overhead, with adaptive sampling rates based on system load. Thereafter, the collected data is aggregated and analysed using the resource controller 102 to identify access patterns and trends. The monitoring framework includes anomaly detection capabilities to identify unusual access patterns that might indicate system issues or optimization opportunities.
[0094] In accordance with another embodiment, the method 300 further include monitoring the memory access patterns using processor event-based sampling to identify frequently accessed data pages. In an implementation, the resource controller 102 is configured to monitor the memory access patterns using a comprehensive framework, including hardware counters, circular buffers, and adaptive sampling techniques. Moreover, the collected data is analysed to identify the frequently accessed data pages, such as based to identify trends, detect anomalies, and optimize memory tiering. As a result, the method 300 enhances memory management efficiency by identifying the frequently accessed data pages through the processor event-based sampling, enabling optimized allocation and performance.
[0095] At step 322, the method 300 includes, utilizing memory tiering techniques by: promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers. In an implementation, the resource controller 102 is configured to utilize the memory tiering techniques, such as by promoting frequently the accessed data pages with the access level meeting the high access condition to higher-performance tiers. In such implementation, the resource controller 102 is further configured to utilize the memory tiering techniques, such as by demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers. The resource controller 102 is further configured to implement an automated page management system that optimizes data placement across the memory tiers based on access patterns. The implementation of the automated page management system includes a page tracking mechanism that maintains access statistics for memory pages, including access frequency, access recency, and access type (e.g., read or write) . The resource controller 102 is further configured to evaluate pages against configurable thresholds for access level meeting the high access condition as well as meeting the low access conditions. In an example, when a page meets promotion criteria, the resource controller 102 is further configured to initiate a page migration to a higher-performance tier, implementing copy-on-write mechanisms to maintain data consistency during migration. Similarly, the pages meeting demotion criteria are moved to lower-performance tiers. The implementation includes a migration scheduler that optimizes the timing and ordering of page movements to minimize system impact. The page management system maintains history information to prevent thrashing of frequently promoted / demoted pages.
[0096] In accordance with another embodiment, the method 300 further include promoting pages with an access level meeting a high access condition to higher-performance tiers and demoting pages with an access level meeting a low access condition to lower-performance tiers in batch operations. In an implementation, the method 300 includes, using the resource controller 102 to promote the pages with the access level meeting the high access condition to higher-performance tiers and demoting pages with the access level meeting the low access condition to lower-performance tiers in batch operations. Therefore, the method 300 includes optimizing the memory usage by promoting frequently accessed pages to higher-performance tiers and also by demoting infrequently accessed pages to lower-performance tiers, and such process is performed in batches to minimize operational overhead. Therefore, the method 300 is beneficial to improve performance and resource utilization of the compute node 104 by dynamically aligning the memory tiers with access frequency, reducing latency and maximizing efficiency.
[0097] In accordance with another embodiment, the method 300 further include enabling shared persistent memory across multiple workloads by: distributing remote memory resources across storage nodes with domain-isolated access. In an implementation, the method 300 includes, using the resource controller 102 to distribute the remote memory resources across storage nodes with domain-isolated access. As a result, the method 300 enables shared persistent memory for multiple workloads by distributing the remote memory resources across the storage nodes, which ensures secure and efficient access through domain isolation, preventing interference between workloads. As a result, the method 300 is beneficial to improve scalability and resource utilization while maintaining workload isolation and secure access to shared persistent memory.
[0098] In accordance with another embodiment, the memory tiering includes capabilities for thin provisioning and load balancing across distributed memory systems. In an implementation, the method 300 includes, using the resource controller 102 for thin provisioning and load balancing across distributed memory systems. Furthermore, the method 300 incorporates memory tiering with thin provisioning to allocate memory efficiently and load balancing to distribute the workloads evenly across the distributed memory systems, which ensures optimal utilization and reduces resource contention. Therefore, the method 300 improves memory efficiency and performance by enabling the dynamic allocation and the balanced workload distribution in the distributed memory environments.
[0099] In accordance with another embodiment, the method 300 further include the resource controller 102 dynamically reallocating the memory tiers based on telemetry data, including real-time utilization and performance metrics of memory resources. In other words, the resource controller 102 is configured to dynamically reallocate the memory tiers by analysing the telemetry data, such as real-time utilization and performance metrics. Therefore, the use of the resource controller 102 ensures that the memory resources are aligned with the workload demands for optimal performance. As a result, the method 300 enhances adaptability and efficiency by leveraging telemetry data to dynamically optimize memory tier allocation based on real-time system conditions.
[0100] The method 300 is beneficial for categorizing and dynamically allocating the memory resources to the workloads based on meta data, which is ensures that the workloads get the memory resources according to the needs, while reducing resource wastage. The method 300 is also beneficial to utilize memory tiering based on access patterns, which ensure that high-performance memory is reserved for frequently accessed data, improving overall performance. Therefore, the method 300 is beneficial to reduce latency by ensuring that critical data is moved to faster memory tiers, while less critical data is stored in slower tiers. Furthermore, by virtue of using the DPU as the memory broker, the method facilitates seamless memory management across multiple compute nodes and memory nodes. In addition, by allocating the memory resources efficiently and remapping the memory tiers based on access patterns, the method 300 can be used to respond to dynamic workloads with minimal impact on performance. In addition, as the number of the compute nodes and the memory nodes increases, the method 300 ensures that the memory resources are managed consistently across the virtualized computing environment, adapting to changes without compromising performance. Furthermore, the dynamic remapping of the memory tiers based on access conditions promotes and demotes data efficiently, which is beneficial to reduce latency. As a result, the frequently accessed data is moved to higher-performance tiers, ensuring that the data is readily available, while infrequently accessed data is stored in lower-performance memory. Furthermore, by virtue of managing the memory resources across multiple compute nodes and memory nodes, the method 300 is beneficial to ensure optimal usage of available memory resources in large-scale environments.
[0101] Modifications to embodiments of the present disclosure described in the foregoing are possible without departing from the scope of the present disclosure as defined by the accompanying claims. Expressions such as "including" , "comprising" , "incorporating" , "have" , "is" used to describe and claim the present disclosure are intended to be construed in a non-exclusive manner, namely allowing for items, components or elements not explicitly described also to be present. Reference to the singular is also to be construed to relate to the plural. The word "exemplary" is used herein to mean "serving as an example, instance or illustration" . Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or to exclude the incorporation of features from other embodiments. The word "optionally" is used herein to mean "is provided in some embodiments and not provided in other embodiments" . It is appreciated that certain features of the present disclosure, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable combination or as suitable in any other described embodiment of the disclosure.
Claims
1.A method (300) for optimizing memory performance in a virtualized computing environment (100, 200A, 200B, 200C) , the virtualized computing environment (100, 200A, 200B, 200C) comprising a resource controller (102) , at least one compute node (104) and a memory node (106) , wherein each of the compute node (104) comprises a compute node resource locator module (110) and the memory node (106) comprises a memory node resource locator module (116) , the method comprising:the compute node resource locator module (110) of each compute node (104) collecting meta data on memory resources associated with the compute node (104) ,the memory node resource locator module (116) collecting meta data on memory resources associated with the memory node (106) ,transmitting the meta data on the memory resources from the compute node (s) (104) and the memory node (106) to the resource controller (102) , whereby the method (300) further comprises the resource controller (102) ,categorizing the received memory resources based on the metadata (112) on the memory resources,mapping each memory resource to one or more discrete memory tiers, wherein the number of discrete memory tiers is fewer than the available memory types,allocating memory resources to workloads dynamically,utilizing a Data Processing Unit (DPU) as a memory broker to:manage memory resource allocation across compute nodes and memory nodes.expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators, anddetermining a change and in response thereto dynamically remap memory tiers utilizing memory tiering techniques by:monitoring memory access patterns,promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers.2.The method 300 of Claim 1, wherein the method 300 further comprises bypassing IO buses for low-latency direct memory access.3.The method 300 of Claim 1 or 2, wherein the method 300 further comprisesutilizing an application programming interface (API) that reflects memory tiers as discrete allocation values, wherein the API enablesreceiving memory requests for one or more applications for memory from specific tiers, with fallback mechanisms to slower tiers in case of resource unavailability, and / orexposing memory tiering to applications through NUMA-aware APIs and supporting configurations via Advanced Configuration and Power Interface (ACPI) tables.4.The method (300) of any preceding Claim, wherein the metadata (112) may comprise performance characteristics, the performance characteristics comprising one or more of latency, bandwidth, and capacity.5.The method (300) of Claim 4, wherein the metadata (112) may further comprise one or more of Memory type, capacity per NUMA, server connector information.6.The method (300) of any preceding Claim, wherein the memory resources include disaggregated memory devices and / or locally attached memory.7.The method (300) of any preceding Claim, wherein mapping each memory resource comprises allowing tenants to select desired memory tiers through a memory marketplace interface, wherein the memory tiers are described by performance attributes and cost, resulting in a service-level agreement (SLA) .8.The method (300) of Claim 7, wherein the method (300) further comprises allocating memory resources to workloads dynamically based on SLA requirements and the availability of memory tiers.9.The method (300) of Claim 7 or 8, wherein the method (300) further comprises determining a change in workload requirement and / or SLA parameters and in response thereto dynamically remap memory tiers.10.The method (300) of any of Claims 7, 8 or 9, wherein the categorization of memory resources includes mapping memory resources based on cost-performance trade-offs to support tenant-specific SLA preferences.11.The method (300) of any preceding Claim, wherein the method (300) further comprises monitoring memory access patterns using processor event-based sampling to identify frequently accessed data pages.12.The method (300) of any preceding Claim, wherein the method (300) further comprises promoting pages with an access level meeting a high access condition to higher-performance tiers and demoting pages with an access level meeting a low access condition to lower-performance tiers in batch operations.13.The method (300) of any preceding Claim, wherein the method (300) further comprises enabling shared persistent memory across multiple workloads by:distributing remote memory resources across storage nodes with domain-isolated access.14.The method (300) of any preceding Claim, wherein memory tiering includes capabilities for thin provisioning and load balancing across distributed memory systems.15.The method (300) of any preceding Claim, wherein the method further comprises the resource controller (102) dynamically reallocating memory tiers based on telemetry data, including real-time utilization and performance metrics of memory resources.16.A virtualized computing environment (100, 200A, 200B, 200C) configured for optimizing memory performance, the virtualized computing environment (100, 200A, 200B, 200C) comprising a resource controller 102, at least one compute node (104) and a memory node (106) , wherein each of the compute nodes (104) comprises a compute node resource locator module (110) and the memory node (106) comprises a memory node resource locator module (116) , whereinthe compute node resource locator module (110) of each compute node (104) is configured to collect metadata (112) on memory resources associated with the compute node (104) and transmit the meta data on the memory resources from the compute node (s) (104) to the resource controller (102) ,the memory node resource locator module (116) is configured to collect metadata (112) on memory resources associated with the memory node (106) and transmit the metadata (112) on the memory resources from the memory node (106) to the resource controller (102) , whereby the resource controller (102) is configured to,categorize the received memory resources based on the metadata (112) on the memory resources,map each memory resource to one or more discrete memory tiers, wherein the number of discrete memory tiers is fewer than the available memory types,allocate memory resources to workloads dynamically,utilize a Data Processing Unit (DPU) as a memory broker to:manage memory resource allocation across compute nodes and memory nodes.expose node-attached memory and remote memory areas as virtual memory devices via hardware accelerators,bypass IO buses for low-latency direct memory access,determine a change and in response thereto dynamically remap memory tiers, and utilize memory tiering techniques by:monitoring memory access patterns,promoting frequently accessed data pages with an access level meeting a high access condition to higher-performance tiers and demoting infrequently accessed data pages with an access level meeting a low access condition to lower-performance tiers.