System and method for sharing memory across a cluster of directly connected nodes
The system allows nodes to share and pool memory resources using a memory lending scheme, optimizing performance and storage by managing memory pools and ensuring authorized access, addressing the cost barrier of traditional memory expansions.
Patent Information
- Application Number
- JP2025532952
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-12-30
- Filing Date
- 2023-12-28
- Publication Date
- 2025-12-26
AI Technical Summary
The high cost of memory hardware prohibits the expansion of memory resources across data fabrics and node clusters, limiting performance and storage potential.
A system and method for sharing memory across directly connected nodes through a memory lending and borrowing scheme, where nodes share and pool memory resources based on workload, using a system memory manager to allocate and manage memory pools, and implement memory fencing to ensure authorized access.
Enables efficient utilization of unused memory across nodes, enhancing performance and storage capabilities without the prohibitive costs associated with traditional hardware expansions.
Smart Images

Figure 2025542577000001_ABST
Abstract
Description
[Background technology]
[0001] Memory is often one of the most expensive resources across a data fabric and / or node cluster. Expanding memory resources across a data fabric and / or node cluster could provide, support, and / or facilitate numerous improvements and / or benefits, such as increased performance, expanded service provisioning, and / or additional storage potential. Unfortunately, the cost of the memory hardware required to do so is often prohibitive and / or unreasonable. Accordingly, the present disclosure identifies and addresses the need for further improved systems and methods that facilitate the benefits of memory expansion without prohibitive hardware costs.
[0002] The accompanying drawings illustrate several exemplary embodiments and are a part of this specification, and together with the following description, these drawings demonstrate and explain various principles of the present disclosure. [Brief explanation of the drawings]
[0003] [Figure 1] FIG. 1 is a diagram of an example system for sharing memory across a cluster of directly connected nodes in accordance with one or more embodiments of the present disclosure. [Figure 2] FIG. 1 is a diagram of an example system for sharing memory across a cluster of directly connected nodes in accordance with one or more embodiments of the present disclosure. [Figure 3] FIG. 1 is a diagram of an example system for sharing memory across a cluster of directly connected nodes in accordance with one or more embodiments of the present disclosure. [Figure 4] FIG. 1 is a diagram of an example memory map that facilitates access to shared and / or pooled memory addresses, in accordance with one or more embodiments of the present disclosure. [Figure 5] FIG. 1 is a diagram of an example system for sharing memory across a cluster of directly connected nodes in accordance with one or more embodiments of the present disclosure. [Figure 6] 1 is a flowchart of an exemplary method for sharing memory across a cluster of directly connected nodes, in accordance with one or more embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0004] Throughout the drawings, like reference numerals and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
[0005] This disclosure describes various apparatus, systems, and methods for sharing memory across a cluster of directly connected nodes. As described in more detail below, multiple nodes may be clustered together via direct connections with one another. In some examples, the cluster of nodes implements a memory lending and / or borrowing scheme that accommodates and / or normalizes the nodes' different workloads across the memory resources of the cluster of nodes. For example, one or more of the clustered nodes may share and / or pool chunks of memory for use and / or access by other nodes in the cluster.
[0006] In some examples, upon bootup, each node scans its local memory ranges and broadcasts those memory ranges to other nodes in the cluster. In one example, each node deploys and / or implements a system memory manager that builds a memory map based on those broadcasted memory ranges to support a sharable memory pool distributed across the cluster. In this example, the system memory manager and / or pool manager of each node can add data to, remove data from, and / or request access to data within the shared memory pool distributed across the cluster. This memory lending and / or borrowing scheme can allow some nodes to utilize unused and / or available memory located on other nodes via the memory map. Under this scheme, the loaned and / or borrowed memory can appear the same as local memory to each of the clustered nodes.
[0007] In some examples, a system includes a cluster of nodes communicatively coupled to one another via at least one direct link and collectively including a plurality of memory devices. In such examples, the system includes at least one system memory manager communicatively coupled to the cluster of nodes. In one example, the system memory manager is configured to allocate a plurality of shareable memory pools across the memory devices.
[0008] In some examples, the system memory manager is configured to identify a workload of the node and / or allocate a shareable memory pool across the memory devices based at least in part on the workload of the node. Additionally or alternatively, the system memory manager is configured to reserve at least a portion of the shareable memory pool for exclusive use by a first node included within the node.
[0009] In some examples, a first node included within the nodes hosts a shareable memory pool included within the shareable memory pool. In such examples, a second node included within the nodes is configured to access at least a portion of the shareable memory pool via a direct link in association with at least one application executing on the second node, at least in part due to the second node being authorized to use the portion of the shareable memory pool. In one example, a third node included within the nodes is configured to access the shareable memory pool in association with an additional application executing on the third node.
[0010] In some examples, a third node included within the node hosts an additional shareable memory pool included within the shareable memory pool, and in such examples, the second node is configured to access at least a portion of the additional shareable memory pool in connection with an application executing on the second node, at least in part because the second node is authorized to use the portion of the additional shareable memory pool.
[0011] In some examples, the system memory manager is configured to generate at least one memory map including an address range corresponding to the shareable memory pool to enable the nodes to access the shareable memory pool. In one example, each of the nodes includes private local memory that is inaccessible to one another. In this example, the system memory manager is configured to generate the memory map to include an address range corresponding to the private local memory normalized across the nodes.
[0012] In some examples, the direct links communicatively coupling the nodes to one another include physical communication links that eliminate switches between the nodes. In one example, the system memory manager is configured to receive memory management requests from remote devices. In this example, the system memory manager is configured to increase or decrease the amount of memory allocated to at least one of the shareable memory pools in response to the memory management requests.
[0013] In some examples, the system memory manager is configured to detect the addition of at least one memory device to the plurality of memory devices during operation of the node. Additionally or alternatively, the system memory manager is configured to detect the removal of at least one memory device from the plurality of memory devices during operation of the node. In one example, the system memory manager is configured to reallocate a shareable memory pool across the memory devices to account for the addition or removal of the memory device during operation of the node. In another example, the system memory manager is configured to detect the addition or removal of the memory device via an advanced configuration and power interface (ACPI).
[0014] In some examples, the node includes a security processor that implements memory fencing over the shareable memory pools to ensure that unauthorized attempts to access any of the shareable memory pools are denied. In one example, the system memory manager is implemented by the node and includes multiple system memory controllers that communicate with each other to coordinate allocation of the shareable memory pools.
[0015] In some examples, nodes scan memory devices for address ranges and broadcast them to each other. In such examples, the nodes build memory maps based at least in part on the address ranges broadcast to each other. In one example, a system memory manager is centralized to manage the shareable memory pool.
[0016] In some examples, the method includes at least one system memory manager identifying ranges of memory addresses across a plurality of memory devices corresponding to the cluster of nodes. In such examples, the method includes the system memory manager allocating a plurality of shareable memory pools across the memory devices based at least in part on the ranges of memory addresses. Additionally or alternatively, the method includes the system memory manager enabling a remote node included in the node to access a portion of the shareable memory pool hosted by a local node included in the node due, at least in part, to the remote node being authorized to use the portion of the shareable memory pool.
[0017] In some examples, the method includes a system memory manager identifying a workload of the node. In such examples, the method further includes allocating the shareable memory pool based at least in part on the workload of the node. In one example, the method additionally includes the system memory manager denying at least one node included within the node access to a portion of the shareable memory pool hosted by the local node due, at least in part, to the node not being authorized to use the portion of the shareable memory pool.
[0018] In some examples, a non-transitory computer-readable storage medium comprises one or more computer-executable instructions. In such examples, the computer-executable instructions, when executed by at least one processing device implementing at least one system memory manager, cause the system memory manager to identify ranges of memory addresses across a plurality of memory devices corresponding to a cluster of nodes. In one example, the computer-executable instructions cause the system memory manager to allocate a plurality of shareable memory pools across the memory devices based at least in part on the ranges of memory addresses. In this example, the computer-executable instructions further cause the system memory manager to enable a remote node included within the node to access a portion of the shareable memory pool hosted by a local node included within the node, at least in part due to the remote node being authorized to use the portion of the shareable memory pool.
[0019] The following provides a detailed description of exemplary devices, systems, components and / or corresponding embodiments for sharing memory across a cluster of directly connected nodes with reference to Figures 1-5. A detailed description of an exemplary method for sharing memory across a cluster of directly connected nodes is provided in connection with Figure 6.
[0020] 1 illustrates an exemplary system 100 that includes and / or represents a cluster of nodes 102(1)-(N) and / or one or more system memory managers 110(1)-(N). In some examples, the nodes 102(1)-(N) are communicatively coupled to one another via at least one direct link 108. In such examples, the nodes 102(1)-(N) include and / or are attached to memory devices 104(1)-(N), respectively. In one example, the system memory manager 110(1)-(N) is communicatively coupled to the cluster of nodes 102(1)-(N). In this example, the system memory manager 110(1)-(N) allocates, designates, and / or distributes a shareable memory pool 106(1)-(N) across the memory devices 104(1)-(N).
[0021] In some examples, nodes 102(1)-(N) include and / or are attached to processing devices 114(1)-(N), respectively. In such examples, processing devices 114(1)-(N) execute and / or run applications 116(1)-(N), respectively.
[0022] In some examples, each of the nodes 102(1)-(N) may include and / or represent any type or form of computing device capable of performing computing tasks, facilitating communication, and / or sharing memory with other nodes in a cluster configuration. Examples of the nodes 102(1)-(N) include, but are not limited to, network devices, servers, routers, switches, data fabric devices, data centers, host devices, client devices, laptops, tablets, desktops, personal computers, cellular phones, personal digital assistants (PDAs), multimedia players, embedded systems, wearable devices (e.g., smart watches, smart glasses, etc.), gaming consoles, hubs, modems, bridges, repeaters, gateways, variations or combinations of one or more of these, portions of one or more of these, and / or any other suitable nodes.
[0023] In some examples, each of memory devices 104(1)-(N) may include and / or represent any type or form of storage device that maintains, stores, retains, and / or buffers data associated with one or more applications and / or mechanisms installed and / or executed on one or more nodes. For example, each of memory devices 104(1)-(N) may include and / or represent volatile and / or non-volatile storage and / or media capable of storing data and / or computer-readable instructions. In one example, memory devices 104(1)-(N) facilitate, support, and / or implement Compute Express Link (CXL) connections and / or interfaces for accessing and / or sharing data across nodes 102(1)-(N). In particular embodiments, each of memory devices 104(1)-(N) constitutes and / or represents multiple individual memory devices and / or components. Examples of memory devices 104(1)-(N) include, but are not limited to, random access memory (RAM) devices, dynamic RAM (DRAM) devices, read only memory (ROM) devices, flash memory devices, hard disk drives (HDDs), solid-state drives (SSDs), CXL compatible memory devices, optical disk drives, cache, main memory, variations or combinations of one or more of these, one or more portions of these, and / or any other suitable memory devices.
[0024] In some examples, memory devices 104(1)-(N) include and / or represent ranges of private and / or local-only memory in addition to shareable memory pools 106(1)-(N). In such examples, the private and / or local-only memory ranges are accessible to the corresponding node and / or inaccessible to remote nodes. For example, node 102(1) can access data in the private local memory resident in memory device 104(1), but cannot access data in the private local memory resident in memory device 104(N). Additionally or alternatively, node 102(N) can access data in the private local memory resident in memory device 104(N), but cannot access data in the private local memory resident in memory device 104(1). Accordingly, the private local memory, system memory managers 110(1)-(N) and / or corresponding memory maps may be configured to prevent access from unauthorized guests and / or hypervisors.
[0025] In some examples, each of the processing devices 114(1)-(N) may include and / or represent any type or form of hardware-implemented device capable of interpreting and / or executing computer-readable instructions. Examples of the processing devices 114(1)-(N) include, but are not limited to, a central processing unit (CPU), a graphics processing unit (GPU), a parallel-accelerated processor, a microprocessor, a multi-core processor, a microcontroller, a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a system on a chip (SoC), variations or combinations of one or more of these, one or more portions of these, and / or any other suitable processing device.
[0026] In some examples, each of system memory managers 110(1)-(N) may include and / or represent any type or form of controller capable of allocating sharable memory pools across memory devices in the clustered nodes. In one example, system memory managers 110(1)-(N) may be integrated into and / or implemented by nodes 102(1)-(N). In this example, system memory managers 110(1)-(N) communicate with one another to coordinate the allocation, release, expansion, and / or contraction of sharable memory pools 106(1)-(N). In another example, a single, centralized system memory manager manages and / or coordinates the allocation, release, expansion, and / or contraction of sharable memory pools 106(1)-(N) across all of nodes 102(1)-(N). In particular embodiments, system memory manager 110(1)-(N) of each node may include a baseboard management controller (BMC), a system firmware manager, and / or a system software manager.
[0027] In some examples, system memory managers 110(1)-(N) may include and / or represent one or more pieces of hardware devices, firmware, and / or software. In one example, one or more of system memory managers 110(1)-(N) may be implemented as stand-alone computing devices. Additionally or alternatively, one or more of system memory managers 110(1)-(N) may be implemented by a computing device (e.g., node 102(1)-(N)) that performs additional computing tasks and / or communication operations.
[0028] In some examples, each of the shareable memory pools 106(1)-(N) may include and / or represent a range of memory addresses allocated for sharing across the nodes 102(1)-(N) of the cluster. In one example, these ranges of memory addresses may constitute and / or represent allocations that the nodes 102(1)-(N) may spare and / or share based at least in part on their respective workload requirements. In particular embodiments, the shareable memory pools 106(1)-(N) may include and / or represent a uniform distribution and / or amount of memory across the memory devices 104(1)-(N). In other embodiments, the shareable memory pools 106(1)-(N) may include and / or represent a non-uniform distribution and / or amount of memory.
[0029] In some examples, the direct link 108 includes and / or represents a physical cable and / or connection between the nodes 102(1) and 102(N). In one example, the direct link 108 eliminates and / or omits switches and / or intermediate devices between the nodes 102(1) and 102(N). Examples of the direct link 108 include, but are not limited to, fiber optic cable, Ethernet cable, coaxial cable, twisted pair cable, electrical cable, network cable, variations or combinations of one or more of these, and / or any other suitable direct link.
[0030] In some examples, system memory manager 110(1)-(N) measures, determines, and / or identifies the workload of nodes 102(1)-(N), memory devices 104(1)-(N), and / or processing devices 114(1)-(N). In these examples, workload may constitute and / or represent the amount of resources, processing, and / or time required to execute one or more computing tasks scheduled on nodes 102(1)-(N). For example, the amount of memory required to execute one or more applications, processes, programs, and / or virtual machines on node 102(1) may contribute to and / or be considered in the workload of node 102(1). Additionally or alternatively, the amount of memory required to execute one or more applications, processes, programs, and / or virtual machines on node 102(N) may contribute to and / or be considered in the workload of node 102(N).
[0031] In some examples, the workload requirements of nodes 102(1)-(N) may consider and / or include virtual machine or thread latency, bandwidth, memory capacity, and / or termination. In one example, system memory manager 110(1)-(N) allocates sharable memory pools 106(1)-(N) across memory devices 104(1)-(N) based at least in part on the workload of nodes 102(1)-(N). In particular examples, the entire working set of a node's memory requirements may be realized and / or placed within one or more of sharable memory pools 106(1)-(N).
[0032] In some examples, system memory manager 110(1)-(N) detects, discovers, and / or recognizes topological changes within the cluster (e.g., isolated links, disconnected and / or down states). Additionally or alternatively, system memory manager 110(1)-(N) initiates and / or implements updates regarding the memory mappings of nodes 102(1)-(N).
[0033] 2 illustrates an exemplary system 200 that includes and / or represents a cluster of nodes 102(1), 102(2), 102(3), 102(4) communicatively coupled to one another via direct links 108(1), 108(2), 108(3), 108(4), 108(5), 108(6). In some examples, system 200 may include and / or represent particular components and / or features that perform and / or provide functionality similar and / or identical to that described above in connection with FIG. 1. In one example, node 102(1) includes and / or represents memory device 104(1) and system memory manager 110(1), and node 102(2) includes and / or represents memory device 104(2) and system memory manager 110(2). In this example, node 102(3) includes and / or represents memory device 104(3) and system memory manager 110(3), and node 102(4) includes and / or represents memory device 104(4) and system memory manager 110(4).
[0034] In some examples, memory device 104(1) includes and / or hosts shareable memory pool 106(1) and private local memory 206(1), and memory device 104(2) includes and / or hosts shareable memory pool 106(2) and private local memory 206(2). In such examples, memory device 104(3) includes and / or hosts shareable memory pool 106(3) and private local memory 206(3), and memory device 104(4) includes and / or hosts shareable memory pool 106(4) and private local memory 206(4).
[0035] In some examples, system memory managers 110(1)-(4) can reserve portions (e.g., specific address ranges) of shareable memory pools 106(1)-(4) for exclusive use by any of nodes 102(1)-(4) and / or corresponding applications, respectively. For example, system memory managers 110(1)-(N) can provide, support, and / or facilitate memory fencing across shareable memory pools 106(1)-(4) to ensure that all attempts by unauthorized nodes and / or applications to access such portions of shareable memory pools 106(1)-(4) are denied. In one example, such access attempts can include and / or represent any type or form of read, write, and / or update operations. Additionally or alternatively, such access attempts can be performed in association with one or more applications executing on nodes 102(1)-(4).
[0036] In some examples, node 102(1) can access at least a portion of shareable memory pool 106(2) via direct link 108(1), at least a portion of shareable memory pool 106(3) via direct link 108(3), and / or at least a portion of shareable memory pool 106(4) via direct link 108(4). Additionally or alternatively, node 102(2) can access at least a portion of shareable memory pool 106(1) via direct link 108(1), at least a portion of shareable memory pool 106(3) via direct link 108(2), and / or at least a portion of shareable memory pool 106(4) via direct link 108(5).
[0037] In some examples, node 102(3) can access at least a portion of shareable memory pool 106(1) via direct link 108(3), at least a portion of shareable memory pool 106(2) via direct link 108(2), and / or at least a portion of shareable memory pool 106(4) via direct link 108(6). Additionally or alternatively, node 102(4) can access at least a portion of shareable memory pool 106(1) via direct link 108(4), at least a portion of shareable memory pool 106(2) via direct link 108(5), and / or at least a portion of shareable memory pool 106(3) via direct link 108(6).
[0038] In some examples, when memory fencing is implemented, successful access attempts made on shareable memory pools 106(1)-(4) may occur and / or result, at least in part, from a node being permitted to use that portion of shareable memory pools 106(1)-(4). In one example, each portion of shareable memory pools 106(1)-(4) may be allocated for use by a particular node and / or restricted for use by a particular node. For example, nodes 102(1) and 102(2) may be permitted to access one or more portions of shareable memory pools 106(1)-(4) that are inaccessible to nodes 102(3) and 102(4).
[0039] In some examples, system memory managers 110(1)-(4) generate, create, and / or build memory maps that include address ranges corresponding to shareable memory pools 106(1)-(4) and / or address ranges corresponding to the private local memory of the node at issue. For example, nodes 102(1)-(4) and / or system memory managers 110(1)-(4) scan and broadcast to each other their respective memory devices 104(1)-(4) for address ranges in order to build corresponding memory maps and / or allocate address ranges for shareable memory pools 106(1)-(4). In this example, nodes 102(1)-(4) and / or system memory managers 110(1)-(4) receive the broadcasted memory ranges and then build their own memory maps that match each other. These memory maps may appear identical to one another in terms of addresses for the shared memory pool and private local memory, but the addresses for the private local memory within each memory map will correspond only to the node and / or memory device in question.
[0040] As a particular example, system memory manager 110(1)-(4) may generate, create, and / or construct memory maps that include address ranges corresponding to shareable memory pools 106(1)-(4) to enable nodes 102(1)-(4) to access shareable memory pools 106(1)-(4). In this example, the address ranges are statically partitioned across nodes 102(1)-(N). In addition, each of these memory maps may include and / or represent an address range corresponding to private local memory. In one example, the address range corresponding to private local memory is normalized to 0 for each memory map in a cluster. Thus, private local memory may start at the same memory address (e.g., 0) in each memory map for nodes 102(1)-(N).
[0041] In some examples, one or more of system memory managers 110(1)-(4) can receive memory management requests from remote devices (e.g., devices outside the cluster). In one example, one or more of system memory managers 110(1)-(4) can increase and / or decrease the amount of memory allocated to shareable memory pools 106(1)-(4) in response to the memory management requests.
[0042] Additionally or alternatively, one or more of system memory managers 110(1)-(4) may detect and / or discover the addition of a new memory device to a cluster during operation or startup of one or more of nodes 102(1)-(4). Similarly, one or more of system memory managers 110(1)-(4) may detect and / or discover the removal of one of memory devices 104(1)-(4) from a cluster during operation or startup of one or more of nodes 102(1)-(4). In one example, one or more of system memory managers 110(1)-(4) may detect and / or discover the addition or removal of a memory device via the Advanced Configuration and Power Interface (ACPI). In some embodiments, one or more of system memory managers 110(1)-(4) may reallocate a shareable memory pool across memory devices to account for the addition or removal of a memory device during operation or startup of one or more of nodes 102(1)-(4).
[0043] FIG. 3 illustrates an exemplary system 300 that includes and / or represents a cluster of nodes 102(1)-(4) communicatively coupled to one another via direct links 108(1)-(6). In some examples, system 300 may include and / or represent particular components and / or features that perform and / or provide functionality similar to and / or the same as that described above in connection with either of FIGS. 1 and 2. In one example, system 300 includes and / or represents a system memory manager 110 communicatively coupled to nodes 102(1)-(4). In this example, instead of each node implementing its own system memory manager, system memory manager 110 acts as a single, centralized unit that manages, allocates, and / or frees shareable memory pools 106(1)-(4) for the entire cluster. In particular embodiments, system memory manager 110 may issue and / or send Intelligent Platform Management Interface (IPMI) requests to define the shared memory configuration of the cluster and / or facilitate the distribution of allocations to nodes 102(1)-(4).
[0044] In some examples, system memory manager 110 generates, creates, and / or builds a memory map that includes address ranges corresponding to sharable memory pools 106(1)-(4) and / or address ranges corresponding to private local memory of nodes 102(1)-(4). For example, nodes 102(1)-(4) and / or system memory manager 110 may build the corresponding memory map and / or scan memory devices 104(1)-(N) for address ranges that are used to allocate address ranges for sharable memory pools 106(1)-(4). In this example, system memory manager 110 compiles the memory ranges scanned from memory devices 104(1)-(4) and then builds a memory map for distribution to nodes 102(1)-(4). In one example, the same memory map is implemented, applied, and / or used by each of nodes 102(1)-(4). In this example, the addresses for the private local memory in the memory map correspond only to the node and / or memory device in question.
[0045] In some examples, system memory manager 110 may receive memory management requests from remote devices 302. In such examples, system memory manager 110 then makes decisions regarding the system memory needs of each of the nodes. In one example, system memory manager 110 may increase and / or decrease the amount of memory allocated to shareable memory pools 106(1)-(4) in response to the memory management requests.
[0046] 4 illustrates an exemplary memory map 400 that includes and / or represents local memory range 416 and / or shareable memory ranges 402(1), 402(2), 402(3), and / or 402(4). In some examples, memory map 400 is distributed and / or provided to each of nodes 102(1)-(4) by system memory manager 110 in FIG. 3. In other examples, memory map 400 is generated, created, and / or constructed by each of system memory managers 110(1)-(4) in FIG. 2 based at least in part on memory addresses scanned across nodes 102(1)-(4).
[0047] In some examples, local memory range 416 includes and / or represents memory addresses 404(1)-(N). In one example, local memory range 416 is normalized to zero. In other words, memory addresses 404(1)-(N) start at 0 and go up. As a particular example, local memory range 416 may include and / or represent approximately 512 gigabytes of memory and / or data.
[0048] In some examples, shareable memory range 402(1) includes and / or represents memory addresses 406(1)-(N). In one example, shareable memory range 402(1) corresponds to and / or is located on memory device 104(1) and / or shareable memory pool 106(1). In this example, shareable memory range 402(1) follows local memory range 416 and / or precedes shareable memory range 402(2) in memory map 400. As a particular example, shareable memory range 402(1) may include and / or represent approximately 512 gigabytes of memory and / or data.
[0049] In some examples, shareable memory range 402(2) includes and / or represents memory addresses 408(1)-(N). In one example, shareable memory range 402(2) corresponds to and / or is located on memory device 104(2) and / or shareable memory pool 106(2). In this example, shareable memory range 402(2) follows shareable memory range 402(1) and / or precedes shareable memory range 402(3) in memory map 400. As a particular example, shareable memory range 402(2) may include and / or represent approximately 512 gigabytes of memory and / or data.
[0050] In some examples, shareable memory range 402(3) includes and / or represents memory addresses 410(1)-(N). In one example, shareable memory range 402(3) corresponds to and / or is located on memory device 104(3) and / or shareable memory pool 106(3). In this example, shareable memory range 402(3) follows shareable memory range 402(2) and / or precedes shareable memory range 402(4) in memory map 400. As a particular example, shareable memory range 402(3) may include and / or represent approximately 512 gigabytes of memory and / or data.
[0051] In some examples, shareable memory range 402(4) includes and / or represents memory addresses 412(1)-(N). In one example, shareable memory range 402(4) corresponds to and / or is located on memory device 104(4) and / or shareable memory pool 106(4). In this example, shareable memory range 402(4) follows shareable memory range 402(3) and / or ends memory map 400. As a particular example, shareable memory range 402(4) may include and / or represent approximately 512 gigabytes of memory and / or data.
[0052] 5 illustrates an example system 500 that includes and / or represents a decomposed, abstracted, and / or flattened version of a cluster of directly connected nodes capable of sharing memory with one another. In some examples, system 500 may include and / or represent specific components and / or features that perform and / or provide functionality similar and / or identical to that described in connection with any of FIGS. 1-4 above. In one example, system 500 includes and / or represents a memory allocation layer 502 that generates and / or communicates new memory allocations per node based at least in part on the requirements of applications executing on nodes 102(1)-(4) and / or the amount of memory required by virtual machines executing on nodes 102(1)-(4).
[0053] In some examples, system 500 includes and / or represents a system memory manager 110 communicatively coupled to memory allocation layer 502. In one example, system memory manager 110 can include and / or represent a fabric manager that communicates new memory allocations to host software 504(1), 504(2), 504(3), 504(4) corresponding to and / or executing on nodes 102(1)-(4), respectively. Additionally or alternatively, the fabric manager can adjust and / or change certain fabric settings.
[0054] In some examples, host software 504(1)-(4) can invoke and / or apply hot-add and / or hot-remove mechanisms to dynamically increase and / or decrease the amount of memory allocated to hosts and / or virtual machines running on nodes 102(1)-(4). In one example, host software 504(1)-(4) can directly invoke and / or instruct security processors 506(1), 506(2), 506(3), and / or 506(4) and / or root of trust (RoT) devices to adjust and / or change the memory sizes allocated to hosts and / or virtual machines, respectively. In particular embodiments, security processors 506(1)-(4) and / or RoT devices can be used by nodes 102(1)-(4) to ensure exclusive access to specific memory ranges within shareable memory pools 106(1)-(4) in a memory fencing scheme.
[0055] In some examples, a node and / or system memory manager responsible for loaning and / or granting memory to another node in a cluster may enable memory fencing for incoming attempts to access such memory. In such examples, incoming attempts to access the loaned and / or granted memory must hit a specific address range to be successful and / or receive permission to proceed.
[0056] In some examples, the various systems and / or devices described in connection with Figures 1-5 may include and / or represent one or more additional components, devices, and / or features not necessarily shown and / or labeled in Figures 1-5. In such examples, one or more of these additional components, devices, and / or features may be inserted between and / or applied to any of the components and / or devices shown in Figures 1-5 without contradicting the goals and / or objectives set forth herein. Thus, one or more of the communicative and / or electrical couplings described with reference to Figures 1-5 may be a direct connection, without intermediate components, devices, and / or nodes, or an indirect connection, involving one or more intermediate components, devices, and / or nodes.
[0057] In some examples, the phrase "to couple" and / or the term "coupling," as used herein, can refer to a direct connection and / or an indirect connection. For example, a direct communication coupling between two components can constitute and / or represent a coupling in which the two components are directly connected to one another to provide communication continuity from one of the two components to the other. In other words, a direct coupling can exclude and / or omit any additional components between the two components.
[0058] Additionally or alternatively, an indirect communication coupling between two components may constitute and / or represent a coupling in which the two components are indirectly connected to one another through one or more intermediate devices to provide electrical continuity from one of the two components to the other. In other words, an indirect coupling may include and / or incorporate at least one additional component between the two components.
[0059]
[0023] Figure 6 is a flow diagram of an example method 600 for sharing memory across a cluster of directly connected nodes. In one example, the steps illustrated in Figure 6 may be implemented and / or performed during a process and / or procedure for initiating memory sharing across clustered nodes. Additionally or alternatively, the steps illustrated in Figure 6 may incorporate and / or involve various substeps and / or variations consistent with the description provided above in connection with Figures 1-5.
[0060] 6, exemplary method 600 includes and / or involves identifying 610 a range of memory addresses across multiple memory devices corresponding to multiple nodes. Step 610 can be performed in a variety of ways, including any of the ways described above in connection with FIGS. 1-5. For example, at least one system memory manager identifies 610 a range of memory addresses across multiple memory devices corresponding to multiple nodes.
[0061] The example method 600 also includes allocating 620 multiple shareable memory pools across the memory devices based at least in part on the ranges of memory addresses. Step 620 can be performed in a variety of ways, including any of the ways described above in connection with Figures 1-5. For example, a system memory manager allocates 620 multiple shareable memory pools across the memory devices based at least in part on the ranges of memory addresses.
[0062] The example method 600 further includes enabling a remote node contained within the node to access the portion of the shareable memory pool hosted by the local node contained within the node, at least in part due to the remote node being authorized to use the portion of the shareable memory pool (630). Step 630 can be performed in various manners, including any of the manners described above in connection with Figures 1-5. For example, the system memory manager enables a remote node contained within the node to access the portion of the shareable memory pool hosted by the local node contained within the node, at least in part due to the remote node being authorized to use the portion of the shareable memory pool.
[0063] While the foregoing disclosure describes various embodiments using specific block diagrams, flow diagrams, and examples, each block diagram element, flow diagram step, operation, and / or component described and / or illustrated herein can be implemented individually and / or collectively using a wide variety of hardware, software, or firmware (or any combination thereof) configurations. It should be noted that any disclosure of components contained within other components should be considered exemplary in nature, since many other architectures can be implemented to achieve the same functionality. Furthermore, the various steps, events, and / or features performed by such components should be considered exemplary in nature, since many alternatives and / or variations can be implemented to achieve the same functionality within the scope of the disclosure.
[0064] The devices, systems, and methods described herein may employ any number of software, firmware, and / or hardware configurations. For example, one or more of the example embodiments disclosed herein may be encoded as a computer program (also referred to as computer software, a software application, computer-readable instructions, and / or computer control logic) on a computer-readable medium. In one example, when executed by at least one processor, the computer-readable medium encoding causes the processor to generate and / or create a computer-readable representation of an integrated circuit configured to perform, implement, and / or execute any of the tasks, features, and / or actions described herein with respect to FIGS. 1-6. The term "computer-readable medium" generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, but are not limited to, transmission-type media such as carrier waves, magnetic storage media (e.g., hard disk drives and floppy disks), optical storage media (e.g., compact disks (CDs) and digital video disks (DVDs)), electronic storage media (e.g., solid-state drives and flash media), and / or non-transitory media such as other distribution systems.
[0065] The process parameters and order of steps described and / or illustrated herein are given by way of example only and can be changed as desired. For example, although the steps illustrated and / or described herein are illustrated or described in a particular order, these steps do not necessarily have to be performed in the order illustrated or described. The various exemplary methods described and / or illustrated herein may omit one or more of the steps described or illustrated herein or may include additional steps in addition to those disclosed.
[0066] The foregoing description is provided to enable those skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many changes and modifications are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein are to be considered in all respects as illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.
[0067] Unless otherwise specified, the terms "connected to" and "coupled to" (and their derivatives) as used in this specification and claims should be interpreted as allowing both direct and indirect connections (i.e., via other elements or components). Additionally, the terms "a" or "an" as used in this specification and claims should be interpreted as meaning "at least one of." Finally, for ease of use, the terms "including" and "having" (and their derivatives) as used in this specification and claims are interchangeable with the term "comprising," and have the same meaning.
Claims
1. 1. A system comprising: a cluster of nodes communicatively coupled to each other via at least one direct link and collectively including a plurality of memory devices; at least one system memory manager communicatively coupled to the cluster of nodes, the system memory manager configured to allocate a plurality of shareable memory pools across the plurality of memory devices; system.
2. The system memory manager: identifying a workload of the node; allocating a plurality of sharable memory pools across the plurality of memory devices based at least in part on the workload of the node; configured to: The system of claim 1.
3. the system memory manager is configured to reserve at least a portion of the plurality of sharable memory pools for exclusive use by a first node included in the nodes; The system of claim 2.
4. a first node among the nodes hosts a shareable memory pool included in the plurality of shareable memory pools; a second node included in the node is configured to access at least the portion of the shareable memory pools via the direct link in association with at least one application executing on the second node due at least in part to being authorized to use the portion of the shareable memory pools; The system of claim 1.
5. a third node included in the node is configured to access the shareable memory pools in association with an additional application running on the third node; The system of claim 4.
6. a third node among the nodes hosts an additional shareable memory pool among the plurality of shareable memory pools; the second node is configured to access at least the portion of the additional shareable memory pool in connection with the application executing on the second node due, at least in part, to being authorized to use the portion of the additional shareable memory pool; The system of claim 4.
7. the system memory manager is configured to generate at least one memory map including address ranges corresponding to the plurality of shareable memory pools so that the nodes can access the plurality of shareable memory pools. The system of claim 1.
8. each of said nodes includes a private local memory that is inaccessible to one another; the system memory manager is configured to generate the memory map to include address ranges corresponding to the private local memory normalized across the nodes. The system of claim 7.
9. the direct links communicatively coupling the nodes to one another include physical communication links that eliminate switches between the nodes; The system of claim 1.
10. The system memory manager: receiving a memory management request from a remote device; In response to the memory management request, increasing or decreasing the amount of memory allocated to at least one of the plurality of sharable memory pools; configured to: The system of claim 1.
11. The system memory manager: detecting the addition of at least one memory device to the plurality of memory devices during operation of the node; or detecting, during operation of the node, the removal of at least one memory device from the plurality of memory devices; configured to perform at least one of The system of claim 1.
12. the system memory manager is configured to reallocate shareable memory pools across the memory devices to account for addition or removal of the memory devices during operation of the node. The system of claim 11.
13. the system memory manager is configured to detect the addition or removal of the memory device via an Advanced Configuration and Power Interface (ACPI); The system of claim 11.
14. the node includes a security processor configured to perform memory fencing across the shareable memory pools to ensure that unauthorized attempts to access any of the shareable memory pools are denied; The system of claim 1.
15. the system memory manager is implemented by the node and includes a plurality of system memory controllers that communicate with each other to coordinate allocation of the plurality of shareable memory pools; The system of claim 1.
16. The node scanning said memory devices for address ranges that broadcast to each other; constructing a memory map based at least in part on the address ranges broadcast to one another; configured to:
16. The system of claim 15.
17. the system memory manager includes a centralized memory manager that manages the plurality of shareable memory pools; The system of claim 1.
18. 1. A method comprising: at least one system memory manager identifying a range of memory addresses across a plurality of memory devices corresponding to a cluster of nodes; the system memory manager allocating a plurality of shareable memory pools across the memory devices based at least in part on the ranges of memory addresses; the system memory manager enabling a remote node included in the node to access a portion of the shareable memory pools hosted by a local node included in the node due, at least in part, to the remote node being permitted to use the portion of the shareable memory pools; method.
19. the system memory manager identifying a workload for the node; allocating a plurality of sharable memory pools across the memory devices includes allocating the plurality of sharable memory pools based at least in part on workloads of the nodes; 20. The method of claim 18.
20. A computer-readable storage medium comprising one or more computer-executable instructions, The one or more computer-executable instructions, when executed by at least one processing device implementing at least one system memory manager, identifying a range of memory addresses across a plurality of memory devices corresponding to a cluster of nodes; allocating a plurality of shareable memory pools across the memory devices based at least in part on the ranges of memory addresses; enabling a remote node included in the node to access a portion of the shareable memory pools hosted by a local node included in the node, due at least in part to the remote node being authorized to use the portion of the shareable memory pools; causing the system memory manager to A computer-readable storage medium.