Nonuniform memory access placement reinforcement learner

The computing system addresses inefficiencies in VM placement on NUMA nodes by using a trained reinforcement learner to select a heuristic for assigning VMs, thereby reducing core overloading and remote memory access and enhancing execution efficiency.

WO2025055005A1PCT designated stage expired Publication Date: 2025-03-20MICROSOFT TECHNOLOGY LICENSING LLC +1
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/119270
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-09-16
Publication Date
2025-03-20

AI Technical Summary

Technical Problem

Existing approaches to assigning virtual machines (VMs) to Non-Uniform Memory Access (NUMA) nodes in data centers are inefficient due to the variability in computing resource usage patterns among VMs and the occurrence of mode collapse in reinforcement learning-based methods.

Method used

A computing system that includes a trained NUMA placement reinforcement learner, which selects a virtual NUMA placement heuristic from a set of heuristics based on received NUMA server data. This heuristic is used to assign VMs to physical NUMA nodes, balancing local and remote memory access to avoid core overloading and remote memory access.

Benefits of technology

The system effectively assigns VMs to NUMA nodes, reducing core overloading and remote memory access, thereby improving the efficiency of VM execution across a wide variety of workloads.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2023119270_20032025_PF_FP_ABST
    Figure CN2023119270_20032025_PF_FP_ABST
Patent Text Reader

Abstract

A computing system is provided, including one or more processing devices configured to receive nonuniform memory access (NUMA) server data. The NUMA server data includes respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes. The NUMA server data further includes virtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes. At a trained NUMA placement reinforcement learner, the one or more processing devices are further configured to select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data. The one or more processing devices are further configured to assign the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.
Need to check novelty before this filing date? Find Prior Art

Description

NONUNIFORM MEMORY ACCESS PLACEMENT REINFORCEMENT LEARNERBACKGROUND

[0001] Non-Uniform Memory Access (NUMA) is an approach to memory access in which processors are assigned local memory but are also capable of accessing remote memory. In a NUMA architecture, the processors and their local memory are grouped into NUMA nodes, and each processor is capable of accessing its local memory more quickly than the remote memory located in other NUMA nodes.

[0002] NUMA architectures are commonly used at server computing devices located in data centers. At those server computing devices, virtual machines (VMs) are executed using the processors and memory included in the NUMA nodes. Since access to local memory is faster than access to remote memory, a VM is executed more efficiently when a larger proportion of the memory access performed by that VM is local. In addition, different VMs have different processor and memory usage patterns, and the overall level of demand for computing resources at the data center varies over time. Thus, data centers are faced with the challenge of how to allocate VMs to NUMA nodes in a manner that utilizes computing resources efficiently.SUMMARY

[0003] According to one aspect of the present disclosure, a computing system is provided, including one or more processing devices configured to receive nonuniform memory access (NUMA) server data. The NUMA server data includes respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes. The NUMA server data further includes virtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes. At a trained  NUMA placement reinforcement learner, the one or more processing devices are further configured to select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data. The one or more processing devices are further configured to assign the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.

[0004] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.BRIEF DESCRIPTION OF THE DRAWINGS

[0005] FIG. 1 schematically shows a computing system including one or more processing devices at which a NUMA placement reinforcement learner is executed, according to one example of the present disclosure.

[0006] FIG. 2A shows a plurality of example vNUMA placement heuristics from among which the one or more processing devices are configured to select a selected vNUMA placement heuristic, according to the example of FIG. 1.

[0007] FIG. 2B schematically shows a processor core best fit heuristic, according to the example of FIG. 2A.

[0008] FIG. 2C schematically shows a memory best fit heuristic, according to the example of FIG. 2A.

[0009] FIG. 2D schematically shows a processor core most idle heuristic, according to the example of FIG. 2A.

[0010] FIG. 2E schematically shows a memory most idle heuristic, according to the example of FIG. 2A.

[0011] FIG. 3A schematically shows the computing system when the one or more processing devices are configured to receive training NUMA server data, according to the example of FIG. 1.

[0012] FIG. 3B schematically shows the computing system when the one or more processing devices are configured to compute a first reward term of a reward function during training of the NUMA placement reinforcement learner, according to the example of FIG. 3A.

[0013] FIG. 3C schematically shows the computing system when the one or more processing devices are configured to compute a second reward term of the reward function during training of the NUMA placement reinforcement learner, according to the example of FIG. 3B.

[0014] FIG. 4 schematically shows the computing system when the one or more processing devices are configured to iteratively filter a NUMA server data set over a plurality of continuous learning iterations, according to the example of FIG. 1.

[0015] FIG. 5A shows a flowchart of a method for use with a computing system to assign VMs to pNUMA nodes, according to the example of FIG. 1.

[0016] FIG. 5B shows additional steps of the method of FIG. 5A that may be performed in some examples during training of the NUMA placement reinforcement learner.

[0017] FIG. 5C shows additional steps of the method of FIG. 5A that may be used to perform additional training at the trained NUMA placement reinforcement learner subsequently to initial deployment.

[0018] FIG. 6 shows a schematic view of an example computing environment in which the computing system of FIG. 1 may be instantiated.DETAILED DESCRIPTION

[0019] Several previous approaches have been used to assign VMs to NUMA nodes at data centers. In some of these approaches, a heuristic policy is used to perform VM assignment. These heuristic policies are rule-based VM assignment policies that select NUMA nodes according to hard-coded functions of quantities such as available processor cores, available memory, and VM computing resource demands. However, the heuristic policies used in prior VM placement approaches are inefficient for many VM workloads. In addition, due to the variety of computing resource usage patterns exhibited by different VMs, a heuristic policy that achieves high performance under all VM workloads would be infeasible to program.

[0020] Other prior approaches to VM placement make use of reinforcement learning (RL) . In such approaches, rather than selecting NUMA nodes using a predefined heuristic, a reinforcement learner iteratively develops a NUMA placement policy over the course of its training. However, previous reinforcement learners trained for VM placement frequently experience mode collapse when deployed. Mode collapse refers to a drop in reinforcement learner performance between training and deployment as a result of the reinforcement learner failing to generalize outside the training distribution. Due to mode collapse, NUMA placement reinforcement learners trained  with conventional techniques sometimes have lower performance than heuristic policies under out-of-distribution inputs.

[0021] In order to address the shortcomings of previous approaches to VM placement at NUMA server devices, a computing system 10 is provided, as schematically shown in the example of FIG. 1. The computing system 10 includes one or more processing devices 12. The one or more processing devices 12 may, for example, include one or more central processing units (CPUs) , one or more graphics processing units (GPUs) , and / or one or more other hardware accelerators. The computing system 10 further includes one or more memory devices 14 that are communicatively coupled to the one or more processing devices 12. The one or more memory devices 14, may include one or more volatile memory devices and / or one or more non-volatile memory devices. In the example of FIG. 1, the computing system 10 is located in a data center. The computing system 10 may be instantiated at a single physical computing device or may alternatively be a virtual computing system instantiated across a plurality of interconnected physical computing devices.

[0022] FIG. 1 further shows a plurality of physical NUMA (pNUMA) server devices 20 located in the data center. The pNUMA server devices 20 each include one or more pNUMA nodes 21 that include respective NUMA server processor cores 22 and NUMA server memory devices 24. The NUMA server memory devices 24 included in each of the NUMA nodes 21 are configured as local memory devices of the corresponding NUMA server processor cores 22. The plurality of pNUMA server devices 20 may, as shown in the example of FIG. 1, be further organized into a plurality of NUMA clusters 26.

[0023] The pNUMA server devices 20 are configured to execute a plurality of VMs 30 using their respective NUMA server processor cores 22 and NUMA server  memory devices 24. Each of these VMs 30 may be executed at a single pNUMA node 21 or across a plurality of pNUMA nodes 21. However, due to the slower speed of inter-node memory access compared to local memory access, the efficiency of VM execution is reduced when a VM 30 uses more memory and / or processor cores than are available within a single pNUMA node 21.

[0024] The one or more processing devices 12 of the computing system 10 are configured to receive NUMA server data 32 associated with the plurality of pNUMA server devices 20. The one or more processing devices 12 are configured to receive the NUMA server data 32 as time series data. The NUMA server data 32 includes respective computing resource usage data 40 of the plurality of pNUMA nodes 21. The computing resource usage data 40 may include available core data 42 that indicates numbers of available NUMA server processor cores 22 included in the pNUMA nodes 21. The computing resource usage data 40 further includes available memory data 44 that indicates available amounts of NUMA server memory at the pNUMA nodes 21.

[0025] The NUMA server data 32 further includes VM resource request data 50 associated with the plurality of VMs 30 executed at the plurality of pNUMA nodes 21. The VM resource request data 50 may include a plurality of VM event types 52 of VM events that occur at the pNUMA nodes 21. These VM event types 52 may include VM arrival events and VM stop events. Thus, the VM resource request data 50 includes indications of VM execution beginning and ending. The VM resource request data 50 further includes a plurality of VM core requests 54 and a plurality of VM memory requests 56. The VM core requests 54 and the VM memory requests 56 respectively indicate numbers of NUMA server processor cores 22 and amounts of NUMA server memory utilized by the VMs 30. In some examples, the VM resource request data 50  further includes workload type data 58, which indicates types of computing tasks performed at the VMs 30.

[0026] Additional data is also included in the NUMA server data 32 in some examples. For example, the NUMA server data 32 may include pNUMA topology data 46 indicating respective sockets at which the pNUMA nodes 21 are located.

[0027] The one or more processing devices 12 are further configured to input the NUMA server data 32 into a trained NUMA placement reinforcement learner 60. At the trained NUMA placement reinforcement learner 60, the one or more processing devices 12 are further configured to select a virtual NUMA (vNUMA) placement heuristic 66 from among a plurality of vNUMA placement heuristics 62 based at least in part on the NUMA server data 32. Thus, a heuristic selection policy 64 implemented by the trained NUMA placement reinforcement learner 60 selects from among the vNUMA placement heuristics 62 rather than performing VM assignment directly, as discussed in further detail below. In some examples, the NUMA placement reinforcement learner 60 is included in a hypervisor.

[0028] The one or more processing devices 12 are further configured to assign the plurality of VMs 30 to the plurality of pNUMA nodes 21 as specified by the selected vNUMA placement heuristic 66. When the one or more processing devices 12 assign the plurality of VMS 30 to the plurality of pNUMA nodes 21, the one or more processing devices 12 are configured to generate VM assignment instructions 68 that indicate respective vNUMA placements 31 of the plurality of VMs 30. Each of the vNUMA placements 31 defines one or more vNUMA nodes 28 that the NUMA cluster 26 is configured to instantiate at a pNUMA node 21. Each vNUMA node 28 specifies a subset of the NUMA server processor cores 22 and NUMA server memory configured to execute the VM 30. Selecting a subset of the NUMA server processor cores 22 and  NUMA server memory accordingly allows the pNUMA server device 20 to instantiate multiple vNUMA nodes 28 at the same pNUMA node 21.

[0029] In some examples, such as in examples in which a VM 30 has high processing and / or memory demands, a plurality of vNUMA nodes 28 are used to execute a VM 30. These vNUMA nodes 28 are located either at the same pNUMA node 21 or at different pNUMA nodes 21.

[0030] In examples in which core or memory overloading occurs, the number of NUMA server processor cores 22 or the amount of NUMA server memory requested by vNUMA nodes 28 instantiated at the pNUMA node 21 exceeds the total processing or memory capacity of the pNUMA node 21. Thus, in such examples, the vNUMA placements 31 assign each of the VMs 30 to one or more other pNUMA nodes 21 in the VM assignment instructions 68. The one or more processing devices 12 are further configured to transmit the VM assignment instructions 68 to the pNUMA server devices 20.

[0031] FIG. 2A shows a plurality of example vNUMA placement heuristics 62 from among which the one or more processing devices 12 are configured to select the selected vNUMA placement heuristic 66 in some examples. In the example of FIG. 2A, the heuristic selection policy 64 implemented by the NUMA placement reinforcement learner 60 is configured to select from the group consisting of a processor core best fit heuristic 62A, a memory best fit heuristic 62B, a processor core most idle heuristic 62C, and a memory most idle heuristic 62D.

[0032] The example vNUMA placement heuristics 62 depicted in FIG. 2A are shown in additional detail in FIGS. 2B-2E. In FIG. 2B, the one or more processing devices 12 are configured to implement the processor core best fit heuristic 62A. According to the processor core best fit heuristic 62A, each of the VMs 30 is assigned  to a respective pNUMA node 21 that includes a number of unallocated NUMA server processor cores 43, as indicated by the available core data 42, that is closest to a number of requested processor cores 55 indicated in the VM resource request data 50. The one or more processing devices 12, in the example of FIG. 2B, are configured to compute a respective difference 70 in these numbers of cores for each pNUMA node 21 and select the pNUMA node 21 with the lowest difference 70. Accordingly, the processor core best fit heuristic 62A balances the VM assignment between leaving NUMA server processor cores 22 unused and drawing upon remote NUMA server processor cores 22 located in other pNUMA nodes 21. In other examples, some other processor core best fit metric may be used, such as a distance metric that weights the number of unallocated processor cores differently from the number of remote processor cores.

[0033] FIG. 2C schematically shows the memory best fit heuristic 62B. According to the memory best fit heuristic 62B, each of the VMs 30 is assigned to a respective pNUMA node 21 that includes an amount of unallocated NUMA server memory 45, as indicated by the available memory data 44, that is closest to an amount of requested memory 57 indicated in the VM resource request data 50. The one or more processing devices 12, in the example of FIG. 2C, are configured to compute a respective difference 72 between these amounts of memory for each of the pNUMA nodes 21. The one or more processing devices 12 are further configured to select the pNUMA node 21 for which this difference 72 is the lowest. Thus, the memory best fit heuristic 62B balances the VM assignment between unallocated local memory and calls to remote memory. In other examples, the memory best fit heuristic 62B may assign different weights to the unallocated local memory and the calls to remote memory, such that the selected pNUMA node 21 is identified according to a weighted difference.

[0034] FIG. 2D schematically shows the processor core most idle heuristic 62C. When the processor core most idle heuristic 62C is implemented, the one or more processing devices 12 are configured to assign each of the VMs 30 to a respective pNUMA node 21 that has a highest number of unallocated processor cores 74 among the plurality of pNUMA nodes 21. The highest number of unallocated processor cores 74 is determined from the respective numbers of unallocated NUMA server processor cores 43 indicated for the pNUMA nodes 21 in the available core data 42.

[0035] FIG. 2E schematically shows the memory most idle heuristic 62D. When the memory most idle heuristic 62D is implemented, the one or more processing devices 12 are configured to assign each of the VMs 30 to a respective pNUMA node 21 that has a highest amount of unallocated memory 76 among the plurality of pNUMA nodes 21. The highest amount of unallocated memory 76 is determined from the respective amounts of unallocated NUMA server memory 45 indicated for the pNUMA nodes 21 in the available memory data 44.

[0036] Returning to the example of FIG. 1, the architecture and training of the trained NUMA placement reinforcement learner 60 is discussed in additional detail. In the example of FIG. 1, the trained NUMA placement reinforcement learner 60 is a Q-network. The VM placement task performed by the NUMA placement reinforcement learner 60 during training is modeled as a Partially Observed Markov Decision Process (POMDP) . At each of a plurality of timesteps t, the NUMA placement reinforcement learner 60 receives a state st of its environment and selects an action at. After the NUMA placement reinforcement learner 60 outputs the action at, the observed state of the environment transitions to st+1 and the NUMA placement reinforcement learner 60 receives a reward rt. The state st received by the NUMA placement reinforcement learner 60 has the form where et= {0, 1} represents the event type  (VM start or stop) ,  is a vector of available NUMA server processor cores 22 and NUMA server memory at the plurality of pNUMA nodes 21, and is a vector of VM core requests 54 and VM memory requests 56. Thus, the state st specifies the computing resource usage data 40 and the VM resource request data 50.

[0037] The NUMA placement reinforcement learner 60 is trained to implement a policy π that approximately maximizes an expected cumulative discounted reward, also referred to as a return R. The return R is given by the following equation:

[0038] where γ∈ (0, 1) is a time discounting factor. In previous approaches that have used reinforcement learning to perform VM placement tasks, the policy π is an assignment of VMs to pNUMA nodes. However, as discussed above, such reinforcement learners are susceptible to mode collapse.

[0039] Instead of a direct vNUMA assignment policy, the policy π of the NUMA placement reinforcement learner 60 is a heuristic selection policy 64. During a forward pass through the NUMA placement reinforcement learner 60, according to the example of FIG. 1, the one or more processing devices 12 are configured to compute a Q-value Q (st, at) for each heuristic selection action at. The Q-value Q (st, at) measures the expected return conditional on selecting the action at. The NUMA placement reinforcement learner outputs the action at with the highest Q (st, at) , thereby computing the selected vNUMA placement heuristic 66. Accordingly, the performance of the trained NUMA placement reinforcement learner 60 is lower-bounded as the performance of the lowest-performing vNUMA placement heuristic 62. The heuristic selection policy 64 may also be more interpretable than vNUMA assignment policies generated by conventional reinforcement learners, since the set of actions at selectable by the trained NUMA placement reinforcement learner 60 is  smaller than the set of actions output by conventional reinforcement learners, and since the heuristic selection policy 64 selects from among a discrete set of human-explainable heuristics.

[0040] FIGS. 3A-3C schematically show the computing system during training of the NUMA placement reinforcement learner 60. The one or more processing devices 12 are configured to train the NUMA placement reinforcement learner 60 using training NUMA server data 132. The training NUMA server data 132 includes training computing resource usage data 140, which includes training available core data 142 and training available memory data 144. The training available core data 142 and training available memory data 144 may, for example, be historical computing resource usage data received from the plurality of pNUMA server devices 20 shown in FIG. 1. In other examples, at least a portion of the training computing resource usage data 140 is received for a different set of pNUMA server devices 20. For example, the NUMA placement reinforcement learner 60 may be pretrained with training computing resource usage data 140 collected from a first set of pNUMA server devices 20 and later fine-tuned with training computing resource usage data 140 collected from a second set of pNUMA server devices 20. Thus, transfer learning may be used to adapt a trained NUMA placement reinforcement learner 60 to a different data center configuration. The training NUMA server data 132 further includes training pNUMA topology data 146 in some examples.

[0041] The training NUMA server data 132 further includes training VM resource request data 150. The training VM resource request data 150 includes a plurality of training event types 152, a plurality of training VM core requests 154, and a plurality of training VM memory requests 156. The training VM resource request data 150 is received for a plurality of training VMs 130. In some examples, the training VM  resource request data 150 further includes training workload type data 158 associated with the training VM resource requests. The training VM resource request data 150 may, for example, be historical data associated with a plurality of previously executed training VMs 130.

[0042] In some examples, the training NUMA server data 132 further includes ticket data 159. The ticket data 159 indicates reports of VM performance degradation received from users of the training VMs 130. Thus, the ticket data 159 may be used as a proxy for VM placement efficiency, as discussed in further detail below.

[0043] FIG. 3B schematically shows the computing system 10 when the one or more processing devices 12 are further configured to compute a first reward term 102 included in a reward function 100 of the NUMA placement reinforcement learner 60. In the example of FIG. 3B, the reward function 100 includes the first reward term 102 and a second reward term 104. The one or more processing devices 12 are configured to compute a reward value 106 of the reward function 100 and train the NUMA placement reinforcement learner 60 based at least in part on the reward value 106.

[0044] The NUMA placement reinforcement learner 60 is trained to approximately maximize the return R by taking the action at with the highest Q-value Q (s, a) at each timestep t. The NUMA placement reinforcement learner 60 is trained to estimate Q (s, a) by approximately minimizing the temporal difference error (TD error) between the estimated Q-value Q (st, at) and an expected Q-value qt. The NUMA placement reinforcement learner 60 may have the following loss function:

[0045] In the above equation, the expected Q-value qt is computed as follows:

[0046] where γ is the discount factor and a′is the action that maximizes the Q-value of the state st+1. During training, upper confidence bound (UCB) sampling may be used to increase the tendency of the NUMA placement reinforcement learner 60 to explore previously unvisited state space regions.

[0047] When the NUMA placement reinforcement learner 60 is executed during training, the one or more processing devices 12 are further configured to identify a training selected placement heuristic 166 from among the vNUMA placement heuristics 62. A respective training selected placement heuristic 166 is selected for each value of the state st included in the training NUMA server data 132. The one or more processing devices 12 are further configured to generate training VM assignment instructions 168 using the training selected placement heuristic 166. The training VM assignment instructions 168 include training vNUMA placements 131 that identify respective training vNUMA nodes 128 at which the plurality of training VMs 130 are configured to be executed.

[0048] The first reward term 102, in this example, is computed based at least in part on respective core overloading ratios 110 of the plurality of pNUMA nodes 21. The core overloading ratio 110 of a pNUMA node 21 is defined as follows:

[0049] In the above equation, vCoresi is the number of NUMA server processor cores 22 requested by the ith VM core request 54, and Core_Capacity is the number of NUMA server processor cores 22 provided by the pNUMA node 21. Thus, using the above equation for the core overloading ratio 110, the one or more processing devices 12 are configured to determine the extent to which the number of requested NUMA server processor cores 22 exceeds the number of available NUMA server processor cores 22 at the pNUMA node 21.

[0050] The first reward term 102 is further based at least in part on respective remote memory ratios 112 associated with each of the plurality of training VMs 130 executed at the pNUMA nodes 21. The remote memory ratio 112 is defined as follows:

[0051] In the above equation, i is a vNUMA node index, and RMRi is the remote memory ratio 112 for the ith vNUMA node. Memremote_i is the amount of remote memory allocated to the ith vNUMA node. Memtotal_i is the total amount of memory requested by the ith vNUMA node, as indicated in the corresponding VM memory request 56. Thus, the remote memory ratio 112 indicates a proportion of the memory used by a training VM 130 that is remote.

[0052] When the one or more processing devices 12 compute the first reward term 102, the one or more processing devices 12 are further configured to compute a respective core score 114 and a respective memory score 116 for each of the plurality of training vNUMA nodes 128. The core score 114 and the memory score 116 are computed as follows: CoreScorei=-2×CORi+1 MemScorei=-2×RMRi+1

[0053] Whereas the core overloading ratio 110 and the remote memory ratio 112 both have ranges of [0, 1] , the core score 114 and the memory score 116 both have ranges of [-1, 1] , which is more conducive to RL training.

[0054] Computing the first reward term 102 further includes computing a performance score Pv for each training VM v. The performance score Pv is computed as follows:

[0055] In the above equation, α and β are constant weighting factors and K is the number of training vNUMA nodes 128 at which the VM v is executed.

[0056] In some examples, the constant weighting factors α and β are computed based at least in part on the ticket data 159. In such examples, as discussed in further detail below, the one or more processing devices 12 are further configured to compute a sigmoid function of a performance degradation PDi of an ith VM. The performance degradation PDi is a function of the core overloading ratio CORi and the remote memory ratio RMRi. This sigmoid function is used as an estimate of a probability of receiving a user report of degraded VM performance. The one or more processing devices 12 are further configured to fit the sigmoid function to the observed ticket data 159 by adjusting respective values of the constant weighting factors α and β.

[0057] In the example of FIG. 3B, the one or more processing devices 12 are further configured to compute the first reward term 102 according to the following equation:

[0058] In the above equation, N is the number of active training VMs 130. The one or more processing devices 12 are accordingly configured to compute the first reward term 102 as the mean performance score of the training VMs 130.

[0059] FIG. 3C schematically shows the computing system 10 when the one or more processing devices 12 are configured to compute the second reward term 104. The second reward term 104 is used to perform reward shaping such that the extent to which the weights of the NUMA placement reinforcement learner 60 are updated depends upon the differences in performance between the different vNUMA placement  heuristics 62. Based at least in part on training NUMA server data 132, the one or more processing devices 12 are further configured to compute respective placement heuristic simulations 120 of VM assignment according to each of the vNUMA placement heuristics 62. The one or more processing devices 12 are further configured to compute the second reward term 104 based at least in part on a plurality of differences between the respective values of the first reward term 102 obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations 120. The first reward term 102 is computed using the training selected placement heuristic 166, as discussed above, and a plurality of alternative first reward term values 124 are computed using the alternative vNUMA placement heuristics 122 that were not selected as the training selected placement heuristic 166.

[0060] The one or more processing devices 12 are configured to compute the second reward term 104 according to the following equation:

[0061] The overall reward function 100 is therefore given by: rload-aware (s, a) =r (s, a) +φ (s, a)

[0062] When the vNUMA placement heuristics 62 all result in no core or memory defects, such that the first reward term 102 has a value of r (s, a) =1, as shown in the equation for the second reward term φ (s, a) , the reward function 100 has a value of rload-aware (s, a) =0, resulting in no update to the NUMA placement reinforcement learner 60.

[0063] When the training selected placement heuristic 166 results in a first reward term value that is higher than any of the alternative first reward term values 124, the reward function 100 has a value of rload-aware (s, a) =r (s, a) . Thus, in such  examples, the one or more processing devices 12 are configured to reinforce the antecedent computations within the NUMA placement reinforcement learner 60 that resulted in selection of the training selected placement heuristic 166.

[0064] When the NUMA placement reinforcement learner 60 selects a vNUMA placement heuristic 62 that results in a first reward term value lower than the alternative first reward term value 124 computed for an alternative vNUMA placement heuristic 122 in a placement heuristic simulation 120, the one or more processing devices 12 are configured to set the value of the second reward term 104 to the largest negative alternative first reward term value 124. Thus, when an alternative vNUMA placement heuristic 122 achieves higher performance than the training selected placement heuristic 166, the reward value 106 is negative and is given by the difference in performance between those vNUMA placement heuristics 62.

[0065] Using the reward shaping approach discussed above, the extent to which the NUMA placement reinforcement learner 60 learns from different portions of the training NUMA server data 132 depends upon the relative performance of the different vNUMA placement heuristics 62 under the conditions the training NUMA server data 132 specifies. Using the load-aware reward function 100 allows the NUMA placement reinforcement learner 60 to converge more easily during training.

[0066] In some examples, as depicted in FIG. 4, the one or more processing devices 12 are further configured to perform additional training at the trained NUMA placement reinforcement learner 60 as the NUMA server data 32 is collected during deployment. In the example of FIG. 4, the one or more processing devices 12 are configured to receive a NUMA server data set 160 including respective NUMA server data 32 received at a plurality of NUMA clusters 26. As discussed above, the NUMA clusters 26 each include a plurality of pNUMA nodes 21.

[0067] The one or more processing devices 12 are further configured to filter the NUMA server data set 160 to obtain a filtered NUMA server data set 162. The NUMA server data set 160 is filtered by selecting a lowest-performance subset 164 of the plurality of NUMA clusters 26. In the example of FIG. 4, the lowest-performance subset 164 is identified using values of the first reward term 102 computed for subsets of the NUMA server data set 160 collected at different respective times. For example, the lowest-performance subset 164 may be a subset of the plurality of NUMA clusters 26 that have respective first reward terms 102 with values below a predefined reward threshold. In other examples, the lowest-performance subset 164 may include a plurality of NUMA clusters 26 with performance below a predefined percentile (e.g., the lowest-performing 1%of NUMA clusters) as measured by the respective values of the first reward term 102 computed from NUMA server data 32 obtained from those NUMA clusters 26.

[0068] The one or more processing devices 12 are further configured to perform the additional training at the trained NUMA placement reinforcement learner 60 using the respective NUMA server data 32 of the lowest-performance subset 164 as training data. Since the total number of NUMA clusters 26 may be large (e.g., millions of NUMA clusters 26) , this filtering narrows the additional training of the NUMA placement reinforcement learner 60 to scenarios in which mode collapse occurs. Accordingly, the efficiency of the additional training may be greatly increased.

[0069] In some examples, the one or more processing devices 12 are configured to iteratively filter the NUMA server data set 160 and perform the additional training in a plurality of continuous learning iterations 170. A respective lowest-performance subset 164 of the NUMA server data set 160 is selected in each of the continuous learning iterations 170, and additional training is performed at the trained NUMA  placement reinforcement learner 60 using that lowest-performance subset 164. In each of the continuous learning iterations 170, the NUMA server data 32 of the lowest-performance subset 164 selected in that continuous learning iteration 170 is removed from the NUMA server data set 160 subsequently to performing the additional training. Thus, the one or more processing devices 12 are configured to avoid repeating previously used NUMA server data 32 as training data of the trained NUMA placement reinforcement learner 60.

[0070] FIG. 5A shows a flowchart of a method 200 for use with a computing system to assign VMs to pNUMA nodes. At step 202, the method 200 includes receiving NUMA server data. The NUMA server data includes respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes. The pNUMA nodes may be grouped into a plurality of pNUMA clusters. In addition, the NUMA server data includes VM resource request data of a plurality of VMs executed at the plurality of pNUMA nodes. These VMs are each executed at one or more vNUMA nodes instantiated at the pNUMA nodes. When core or memory overloading occurs, a VM is executed across multiple pNUMA nodes, thereby resulting in higher memory access latency than execution of the VM on a single pNUMA node.

[0071] At step 204, the method 200 further includes selecting a vNUMA placement heuristic from among a plurality of vNUMA placement heuristics at a trained NUMA placement reinforcement learner. For example, the trained NUMA placement reinforcement learner may be a Q-network. At the NUMA placement reinforcement learner, the vNUMA placement heuristic is selected based at least in part on the NUMA server data. Each of the vNUMA placement heuristics defines a rule-based process of assigning, to one or more pNUMA nodes, one or more vNUMA nodes at which the VM is configured to be executed. At step 206, the method 200 further includes assigning  the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.

[0072] In some examples, the plurality of vNUMA placement heuristics include a processor core best fit heuristic. According to the processor core best fit heuristic, each of the VMs is assigned to a respective pNUMA node that includes a number of unallocated NUMA server processor cores closest to a number of requested processor cores indicated in the VM resource request data. The plurality of vNUMA placement heuristics may further include a memory best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes an amount of unallocated NUMA server memory closest to an amount of requested memory indicated in the VM resource request data. In addition, the plurality of vNUMA placement heuristics may further include a processor core most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest number of unallocated processor cores. The plurality of vNUMA placement heuristics may further include a memory most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest amount of unallocated memory. In some examples, one or more other vNUMA placement heuristics are selectable by the NUMA placement reinforcement learner.

[0073] FIG. 5B shows additional steps of the method 200 that may be performed in some examples during training of the NUMA placement reinforcement learner. At step 208, the method 200 further includes training the NUMA placement reinforcement learner using a reward function including a first reward term. This training is performed in a plurality of training iterations that each include step 210, step 212, and step 214. At step 210, step 208 includes computing a first reward term based at least in part on respective core overloading ratios of the plurality of pNUMA nodes  and respective remote memory ratios associated with each of a plurality of training VMs executed at the pNUMA nodes. The value of the first reward term is associated with a training selected placement heuristic that was used to perform vNUMA placement during a corresponding timestep indicated in the training NUMA server data.

[0074] At step 212, step 208 further includes, based at least in part on training NUMA server data, computing respective placement heuristic simulations of VM assignment according to each of the vNUMA placement heuristics. Step 212 includes computing respective alternative first reward term values of each of the alternative vNUMA placement heuristics that were not selected at the timestep of the training NUMA server data. Thus, the first reward term is evaluated for each of the eligible vNUMA placement heuristics.

[0075] At step 214, step 208 further includes computing a second reward term included in the reward function. The second reward term is computed based at least in part on a plurality of differences between the respective values of the first reward term obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations. In some examples, when none of the vNUMA placement heuristics result in core or memory overloading, the NUMA placement reinforcement learner may be left unchanged. When the NUMA placement reinforcement learner achieves a lower value of the first reward term that it would have with a different vNUMA placement heuristic, the NUMA placement reinforcement learner may be penalized to an extend determined by the difference between the first reward values. Accordingly, the second reward term may be used to shape the reward schedule of the NUMA placement reinforcement learner such that the NUMA placement reinforcement learner is updated to a greater extent when the vNUMA placement reward heuristics have different levels of performance.

[0076] FIG. 5C shows additional steps of the method 200 that may be used to perform additional training at the trained NUMA placement reinforcement learner subsequently to initial deployment. At step 216, the method 200 further includes filtering a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters that each include a plurality of pNUMA nodes. The NUMA server data set is filtered by selecting a lowest-performance subset of the plurality of NUMA clusters. The performance of a NUMA cluster may be measured by computing the value of the first reward term using NUMA server data obtained from that NUMA cluster. The lowest-performance subset may, for example, be a specific percentile of the NUMA clusters, or may alternatively be a subset of the NUMA clusters with a value of the first reward term below some threshold. At step 218, the method 200 may further include performing the additional training at the trained NUMA placement reinforcement learner using the respective NUMA server data of the lowest-performance subset as training data.

[0077] At step 220, the method 200 may further include removing the NUMA server data of the lowest-performance subset from the NUMA server data set. In some examples, the method 200 loops back to step 216 and includes a plurality of continuous learning iterations in which steps 216, 218, and 220 are iteratively performed. Thus, the NUMA placement reinforcement learner is iteratively updated over time. The plurality of continuous learning iterations may, for example, be performed over a period of time in which additional NUMA server data is received, such that the NUMA placement reinforcement learner adjusts to changes in VM workload patterns over time.

[0078] Experimental results obtained for the NUMA placement reinforcement learner discussed above are now provided. In these experiments, the NUMA placement reinforcement learner is a residual neural network with three residual blocks. The UCB  sampling hyperparameters were set to c=2×10-4 and p=0.8. The learning rate was set to α=1×10-4, the batch size was set to 128, and the discount factor was set to γ=0.1. A set of over 100 million VM requests received over the course of a month were used as the training and test data, with the VM requests received on days 1-15 used as training data and the VM requests received on days 16-30 used as the test data.

[0079] The metrics that were used to assess the performance of the NUMA placement reinforcement learner on the test set were defective VM ratio, defective resource degree, and ticket ratio. The defective VM ratio is defined as follows: Defective VM Ratio=M / N

[0080] In the above equation, N is the total number of VMs and M is the number of VMs for which COR>0 and / or RMR>0.

[0081] The defective resource degree is defined as follows, and indicates an average degree of core overloading and remote memory usage with a NUMA cluster:

[0082] The ticket ratio is defined as follows:

[0083] In the above equation, TicketProbi is the value, for the ith VM, of the sigmoid function used to estimate the probability of a user submitting a ticket to report low VM performance. TicketProbi is computed as follows:

[0084] In the above equation, PDi is the performance degradation of the ith VM, calculated as follows: PDi=α×CORi+β×RMRi

[0085] The fidelity of the placement heuristic simulations was tested during the experiments by replaying a sequence of approximately 200 VM requests on both the simulator and on a hypervisor in which the placement heuristic simulator was included. The results of the simulator fidelity test are provided below:

[0086] As seen from these results, the placement heuristic simulations are highly accurate.

[0087] The experiments further included comparing the NUMA placement reinforcement learner to the processor core best fit heuristic, the memory best fit heuristic, the processor core most idle heuristic, and the memory most idle heuristic. The following table shows the results of these comparisons:

[0088] As shown from the above table, the NUMA placement reinforcement learner has higher performance on all three of the metrics compared to the four tested heuristics.

[0089] The experiments also included a comparison between the NUMA placement reinforcement learner and a conventional RL method that directly outputs vNUMA placements. In this experiment, even though the conventional reinforcement learner typically had lower ticket ratios than the NUMA placement reinforcement learner during training, the conventional reinforcement learner exhibited mode collapse during testing, resulting in higher ticket ratios during most epochs.

[0090] The NUMA placement reinforcement learner, the conventional reinforcement learner, and the heuristics discussed above were also tested on simulations of adversarial VM requests. Although the NUMA placement reinforcement learner had a higher ticket ratio than the memory best fit heuristic under adversarial inputs, the NUMA placement reinforcement learner had lower ticket ratios than the other heuristics and the conventional reinforcement learner.

[0091] An ablation study using different combinations of heuristics was also performed. In this ablation study, the NUMA placement reinforcement learner was compared to reinforcement learners that each used only two of the heuristics discussed above. CoreRules used the processor core best fit heuristic and the core most idle heuristic; MemRules used the memory best fit heuristic and the memory most idle heuristic; BestFit used the processor core best fit heuristic and the memory best fit heuristic; and MostIdle used the core most idle heuristic and the memory most idle heuristic. The results of the ablation study are summarized below:

[0092] As shown in the above table, the NUMA placement reinforcement learner that made use of all four heuristics had higher performance on each of the metrics than any of the ablated reinforcement learners.

[0093] The effects of continuous learning on NUMA placement reinforcement learner performance were also tested. In this experiment, the NUMA placement reinforcement learner was first trained on 10%of the VMs in the training data set. After this training, the NUMA placement reinforcement learner performed worse than one of the four heuristics on approximately 5%of the NUMA clusters. By fine-tuning the NUMA placement reinforcement learner on training data received from those clusters over 11 continuous learning iterations, the ticket ratio of the NUMA placement reinforcement learner was reduced from 0.72%to 0.68%. In addition, compared to retraining the NUMA placement reinforcement learner with data received from all the NUMA clusters, selective fine-tuning with training data from the low-performance NUMA clusters reduced the retraining time from 784 hours to 48 hours, a 93.9%reduction in time.

[0094] Another ablation study was performed in which the second reward term used for reward shaping was omitted. In this experiment, copies of the NUMA placement reinforcement learner were trained and evaluated for 50 epochs. The reinforcement learner without the second reward term had a ticket ratio of 0.48%, which was higher than the 0.41%ticket ratio of the memory most idle heuristic. The NUMA placement reinforcement learner with the reward shaping term instead achieved a ticket  ratio of 0.08%. The NUMA placement reinforcement learner with the reward shaping term also had a lower training variance (0.18 rather than 0.64) .

[0095] Experiments were also performed in which additional information was included in the state vector received at the NUMA placement reinforcement learner. In a first such experiment, five different VM workload types were used, and respective values of the constant weighting factors α and β were computed for these five workload types via linear regression. Each of the VMs tested in this experiment was assigned one of the five workload types randomly with uniform probability, and the values of α and β were included in the state vector st. Including α and β in the state vector st decreased the average performance degradation from 7.23%to 3.08%and reduced the ticket ratio from 5.94%to 0.10%.

[0096] In another experiment, the state vector st further included NUMA server topology data. In this example, the NUMA cluster included four pNUMA nodes per NUMA server, with two of those pNUMA nodes located on a first socket and the other two pNUMA nodes located on a second socket. Intra-socket cross-NUMA communication is faster than cross-socket communication in this example. One NUMA placement reinforcement learner has access to the NUMA node and socket topology, whereas the other NUMA placement reinforcement learner observes four pNUMA nodes without the node-and-socket topology. In this experiment, the two NUMA placement reinforcement learners had similar defective VM ratios and defective resource degrees, but the ticket ratio of the NUMA placement reinforcement learner with access to the socket-level topology was 5.97 times lower.

[0097] In some embodiments, the methods and processes described herein may be tied to a computing system of one or more computing devices. In particular, such methods and processes may be implemented as a computer-application program or  service, an application-programming interface (API) , a library, and / or other computer-program product.

[0098] FIG. 6 schematically shows a non-limiting embodiment of a computing system 300 that can enact one or more of the methods and processes described above. Computing system 300 is shown in simplified form. Computing system 300 may embody the computing system 10 described above and illustrated in FIG. 1. Components of computing system 300 may be included in one or more personal computers, server computers, tablet computers, home-entertainment computers, network computing devices, video game devices, mobile computing devices, mobile communication devices (e.g., smartphone) , and / or other computing devices, and wearable computing devices such as smart wristwatches and head mounted augmented reality devices.

[0099] Computing system 300 includes processing circuitry 302, volatile memory 304, and a non-volatile storage device 306. Computing system 300 may optionally include a display subsystem 308, input subsystem 310, communication subsystem 312, and / or other components not shown in FIG. 3.

[0100] Processing circuitry 302 typically includes one or more logic processors, which are physical devices configured to execute instructions. For example, the logic processors may be configured to execute instructions that are part of one or more applications, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result.

[0101] The logic processors may include one or more physical processors configured to execute software instructions. Additionally or alternatively, the logic  processors may include one or more hardware logic circuits or firmware devices configured to execute hardware-implemented logic or firmware instructions. Processors of the processing circuitry 302 may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and / or distributed processing. Individual components of the processing circuitry 302 optionally may be distributed among two or more separate devices, which may be remotely located and / or configured for coordinated processing. Aspects of the processing circuitry 302 may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration. In such a case, these virtualized aspects are run on different physical logic processors of various different machines, it will be understood. These different physical logic processors of the different machines will be understood to be collectively encompassed by processing circuitry 302.

[0102] Non-volatile storage device 306 includes one or more physical devices configured to hold instructions executable by the processing circuitry 302 to implement the methods and processes described herein. When such methods and processes are implemented, the state of non-volatile storage device 306 may be transformed-e.g., to hold different data.

[0103] Non-volatile storage device 306 may include physical devices that are removable and / or built in. Non-volatile storage device 306 may include optical memory, semiconductor memory, and / or magnetic memory, or other mass storage device technology. Non-volatile storage device 306 may include nonvolatile, dynamic, static, read / write, read-only, sequential-access, location-addressable, file-addressable, and / or content-addressable devices. It will be appreciated that non-volatile storage device 306  is configured to hold instructions even when power is cut to the non-volatile storage device 306.

[0104] Volatile memory 304 may include physical devices that include random access memory. Volatile memory 304 is typically utilized by the processing circuitry 302 to temporarily store information during processing of software instructions. It will be appreciated that volatile memory 304 typically does not continue to store instructions when power is cut to the volatile memory 304.

[0105] Aspects of the processing circuitry 302, volatile memory 304, and non-volatile storage device 306 may be integrated together into one or more hardware-logic components. Such hardware-logic components may include field-programmable gate arrays (FPGAs) , program-and application-specific integrated circuits (PASIC  / ASICs) , program-and application-specific standard products (PSSP  / ASSPs) , system-on-a-chip (SOC) , and complex programmable logic devices (CPLDs) , for example.

[0106] The terms “module, ” “program, ” and “engine” may be used to describe an aspect of computing system 300 typically implemented in software by a processor to perform a particular function using portions of volatile memory, which function involves transformative processing that specially configures the processor to perform the function. Thus, a module, program, or engine may be instantiated via processing circuitry 302 executing instructions held by non-volatile storage device 306, using portions of volatile memory 304. It will be understood that different modules, programs, and / or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same module, program, and / or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms “module, ” “program, ” and “engine” may  encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc.

[0107] When included, display subsystem 308 may be used to present a visual representation of data held by non-volatile storage device 306. The visual representation may take the form of a graphical user interface (GUI) . As the herein described methods and processes change the data held by the non-volatile storage device, and thus transform the state of the non-volatile storage device, the state of display subsystem 308 may likewise be transformed to visually represent changes in the underlying data. Display subsystem 308 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with processing circuitry 302, volatile memory 304, and / or non-volatile storage device 306 in a shared enclosure, or such display devices may be peripheral display devices.

[0108] When included, input subsystem 310 may comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, camera, or microphone.

[0109] When included, communication subsystem 312 may be configured to communicatively couple various computing devices described herein with each other, and with other devices. Communication subsystem 312 may include wired and / or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem may be configured for communication via a wired or wireless local-or wide-area network, broadband cellular network, etc. In some embodiments, the communication subsystem may allow computing system 300 to send and / or receive messages to and / or from other devices via a network such as the Internet.

[0110] The following paragraphs discuss several aspects of the present disclosure. According to one aspect of the present disclosure, a computing system is provided, including one or more processing devices configured to receive nonuniform memory access (NUMA) server data. The NUMA server data includes respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes and virtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes. At a trained NUMA placement reinforcement learner, the one or more processing devices are further configured to select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data. The one or more processing devices are further configured to assign the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic. The above features may have the technical effect of performing NUMA placement in a manner that avoids core overloading and remote memory access for a wide variety of VM workloads.

[0111] According to this aspect, the plurality of vNUMA placement heuristics may include a processor core best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes a number of unallocated NUMA server processor cores closest to a number of requested processor cores indicated in the VM resource request data. The above features may have the technical effect of assigning the VMs to the pNUMA nodes in a manner that balances the VM assignment between leaving NUMA server processor cores unused and drawing upon remote NUMA server processor cores.

[0112] According to this aspect, the plurality of vNUMA placement heuristics may include a memory best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes an amount of unallocated NUMA server  memory closest to an amount of requested memory indicated in the VM resource request data. The above features may have the technical effect of assigning the VMs to the pNUMA nodes in a manner that balances the VM assignment between unallocated local memory and calls to remote memory.

[0113] According to this aspect, the plurality of vNUMA placement heuristics may include a processor core most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest number of unallocated processor cores. The above features may have the technical effect of efficiently utilizing the unallocated processor cores.

[0114] According to this aspect, the plurality of vNUMA placement heuristics may include a memory most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest amount of unallocated memory. The above features may have the technical effect of efficiently utilizing the unallocated memory.

[0115] According to this aspect, the trained NUMA placement reinforcement learner may be a Q-network. The above feature may have the technical effect of modeling NUMA placement as a Partially Observed Markov Decision Process.

[0116] According to this aspect, the one or more processing devices may be further configured to train the NUMA placement reinforcement learner using a reward function including a first reward term. The first reward term may be computed based at least in part on respective core overloading ratios of the plurality of pNUMA nodes and respective remote memory ratios associated with each of a plurality of training VMs executed at the pNUMA nodes. The above features may have the technical effect of accounting for both core overloading and remote memory access when determining whether to reinforce actions taken by the NUMA placement reinforcement learner.

[0117] According to this aspect, based at least in part on training NUMA server data, the one or more processing devices may be further configured to compute respective placement heuristic simulations of VM assignment according to each of the vNUMA placement heuristics. The reward function may further include a second reward term that is computed based at least in part on a plurality of differences between the respective values of the first reward term obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations. The above features may have the technical effect of performing reward shaping such that the extent to which the weights of the NUMA placement reinforcement learner are updated depends upon the differences in performance between the different vNUMA placement heuristics.

[0118] According to this aspect, the one or more processing devices may be further configured to perform additional training at the trained NUMA placement reinforcement learner at least in part by filtering a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters that each include a plurality of pNUMA nodes. The NUMA server data set may be filtered by selecting a lowest-performance subset of the plurality of NUMA clusters. Performing the additional training at the trained NUMA placement reinforcement learner may further include using the respective NUMA server data of the lowest-performance subset as training data. The above features may have the technical effect of updating the trained NUMA placement reinforcement learner over time to learn from scenarios in which its performance is low.

[0119] According to this aspect, the one or more processing devices may be configured to iteratively filter the NUMA server data set and perform the additional training in a plurality of continuous learning iterations. In each of the continuous  learning iterations, the NUMA server data of the lowest-performance subset selected in that continuous learning iteration may be removed from the NUMA server data set subsequently to performing the additional training. The above features may have the technical effect of prioritizing low-performance scenarios when performing additional training at the trained NUMA placement reinforcement learner.

[0120] According to another aspect of the present disclosure, a method for use with a computing system is provided. The method includes receiving nonuniform memory access (NUMA) server data including respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes and virtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes. The method further includes, at a trained NUMA placement reinforcement learner, selecting a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data. The method further includes assigning the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic. The above features may have the technical effect of performing NUMA placement in a manner that avoids core overloading and remote memory access for a wide variety of VM workloads.

[0121] According to this aspect, the plurality of vNUMA placement heuristics may include a processor core best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes a number of unallocated NUMA server processor cores closest to a number of requested processor cores indicated in the VM resource request data. The above features may have the technical effect of assigning the VMs to the pNUMA nodes in a manner that balances the VM assignment between leaving NUMA server processor cores unused and drawing upon remote NUMA server processor cores.

[0122] According to this aspect, the plurality of vNUMA placement heuristics may include a memory best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes an amount of unallocated NUMA server memory closest to an amount of requested memory indicated in the VM resource request data. The above features may have the technical effect of assigning the VMs to the pNUMA nodes in a manner that balances the VM assignment between unallocated local memory and calls to remote memory.

[0123] According to this aspect, the plurality of vNUMA placement heuristics may include a processor core most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest number of unallocated processor cores. The above features may have the technical effect of efficiently utilizing the unallocated processor cores.

[0124] According to this aspect, the plurality of vNUMA placement heuristics may include a memory most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest amount of unallocated memory. The above features may have the technical effect of efficiently utilizing the unallocated memory.

[0125] According to this aspect, the trained NUMA placement reinforcement learner may be a Q-network. The above feature may have the technical effect of modeling NUMA placement as a Partially Observed Markov Decision Process.

[0126] According to this aspect, the method may further include training the NUMA placement reinforcement learner using a reward function including a first reward term. The first reward term may be computed based at least in part on respective core overloading ratios of the plurality of pNUMA nodes and respective remote memory ratios associated with each of a plurality of training VMs executed at the  pNUMA nodes. The above features may have the technical effect of accounting for both core overloading and remote memory access when determining whether to reinforce actions taken by the NUMA placement reinforcement learner.

[0127] According to this aspect, the method may further include, based at least in part on training NUMA server data, computing respective placement heuristic simulations of VM assignment according to each of the vNUMA placement heuristics. The method may further include computing a second reward term included in the reward function based at least in part on a plurality of differences between the respective values of the first reward term obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations. The above features may have the technical effect of performing reward shaping such that the extent to which the weights of the NUMA placement reinforcement learner are updated depends upon the differences in performance between the different vNUMA placement heuristics.

[0128] According to this aspect, the method may further include performing additional training at the trained NUMA placement reinforcement learner. Performing the additional training may include filtering a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters that each include a plurality of pNUMA nodes. The NUMA server data set may be filtered by selecting a lowest-performance subset of the plurality of NUMA clusters. Performing the additional training at the trained NUMA placement reinforcement learner may further include using the respective NUMA server data of the lowest-performance subset as training data. The above features may have the technical effect of updating the trained NUMA placement reinforcement learner over time to learn from scenarios in which its performance is low.

[0129] According to another aspect of the present disclosure, a computing system is provided, including one or more processing devices configured to train a nonuniform memory access (NUMA) reinforcement learner. Training the NUMA placement reinforcement learner includes receiving a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters. The NUMA server clusters each include a plurality of physical NUMA (pNUMA) nodes. Training the NUMA placement reinforcement learner further includes filtering the NUMA server data set by selecting a lowest-performance subset of the plurality of NUMA clusters. Training the NUMA placement reinforcement learner further includes performing additional training at the NUMA placement reinforcement learner using the respective NUMA server data of the lowest-performance subset as training data. For each of the NUMA clusters, the NUMA placement reinforcement learner is configured to select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data. The NUMA placement reinforcement learner is further configured to assign a plurality of virtual machines (VMs) to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic. The above features may have the technical effect of performing NUMA placement in a manner that avoids core overloading and remote memory access for a wide variety of VM workloads.

[0130] “And / or” as used herein is defined as the inclusive or ∨, as specified by the following truth table:

[0131] It will be understood that the configurations and / or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. As such, various acts illustrated and / or described may be performed in the sequence illustrated and / or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes may be changed.

[0132] The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and / or properties disclosed herein, as well as any and all equivalents thereof.

Claims

1.A computing system comprising:one or more processing devices configured to:receive nonuniform memory access (NUMA) server data including:respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes; andvirtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes;at a trained NUMA placement reinforcement learner, select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data; andassign the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.2.The computing system of claim 1, wherein the plurality of vNUMA placement heuristics include a processor core best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes a number of unallocated NUMA server processor cores closest to a number of requested processor cores indicated in the VM resource request data.3.The computing system of claim 1, wherein the plurality of vNUMA placement heuristics include a memory best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes an amount of unallocated NUMA server memory closest to an amount of requested memory indicated in the VM resource request data.4.The computing system of claim 1, wherein the plurality of vNUMA placement heuristics include a processor core most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest number of unallocated processor cores.5.The computing system of claim 1, wherein the plurality of vNUMA placement heuristics include a memory most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest amount of unallocated memory.6.The computing system of claim 1, wherein the trained NUMA placement reinforcement learner is a Q-network.7.The computing system of claim 1, wherein the one or more processing devices are further configured to train the NUMA placement reinforcement learner using a reward function including a first reward term, wherein the first reward term is computed based at least in part on:respective core overloading ratios of the plurality of pNUMA nodes; andrespective remote memory ratios associated with each of a plurality of training VMs executed at the pNUMA nodes.8.The computing system of claim 7, wherein:based at least in part on training NUMA server data, the one or more processing devices are further configured to compute respective placement heuristic simulations of VM assignment according to each of the vNUMA placement heuristics; andthe reward function further includes a second reward term that is computed based at least in part on a plurality of differences between the respective values of the first reward term obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations.9.The computing system of claim 1, wherein the one or more processing devices are further configured to perform additional training at the trained NUMA placement reinforcement learner at least in part by:filtering a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters that each include a plurality of pNUMA nodes, wherein the NUMA server data set is filtered by selecting a lowest-performance subset of the plurality of NUMA clusters; andperforming the additional training at the trained NUMA placement reinforcement learner using the respective NUMA server data of the lowest-performance subset as training data.10.The computing system of claim 9, wherein:the one or more processing devices are configured to iteratively filter the NUMA server data set and perform the additional training in a plurality of continuous learning iterations; andin each of the continuous learning iterations, the NUMA server data of the lowest-performance subset selected in that continuous learning iteration is removed from the NUMA server data set subsequently to performing the additional training.11.A method for use with a computing system, the method comprising:receiving nonuniform memory access (NUMA) server data including:respective computing resource usage data of a plurality of physical NUMA (pNUMA) nodes; andvirtual machine (VM) resource request data of a plurality of VMs executed at the plurality of pNUMA nodes;at a trained NUMA placement reinforcement learner, selecting a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data; andassigning the plurality of VMs to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.12.The method of claim 11, wherein the plurality of vNUMA placement heuristics include a processor core best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes a number of unallocated NUMA server processor cores closest to a number of requested processor cores indicated in the VM resource request data.13.The method of claim 11, wherein the plurality of vNUMA placement heuristics include a memory best fit heuristic according to which each of the VMs is assigned to a respective pNUMA node that includes an amount of unallocated NUMA server memory closest to an amount of requested memory indicated in the VM resource request data.14.The method of claim 11, wherein the plurality of vNUMA placement heuristics include a processor core most idle heuristic according to which each of the VMs is  assigned to a respective pNUMA node that has a highest number of unallocated processor cores.15.The method of claim 11, wherein the plurality of vNUMA placement heuristics include a memory most idle heuristic according to which each of the VMs is assigned to a respective pNUMA node that has a highest amount of unallocated memory.16.The method of claim 11, wherein the trained NUMA placement reinforcement learner is a Q-network.17.The method of claim 11, further comprising training the NUMA placement reinforcement learner using a reward function including a first reward term, wherein the first reward term is computed based at least in part on:respective core overloading ratios of the plurality of pNUMA nodes; andrespective remote memory ratios associated with each of a plurality of training VMs executed at the pNUMA nodes.18.The method of claim 17, further comprising:based at least in part on training NUMA server data, computing respective placement heuristic simulations of VM assignment according to each of the vNUMA placement heuristics; andcomputing a second reward term included in the reward function based at least in part on a plurality of differences between the respective values of the first reward term obtained when each of the vNUMA placement heuristics are applied, as computed in the placement heuristic simulations.19.The method of claim 11, further comprising performing additional training at the trained NUMA placement reinforcement learner at least in part by:filtering a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters that each include a plurality of pNUMA nodes, wherein the NUMA server data set is filtered by selecting a lowest-performance subset of the plurality of NUMA clusters; andperforming the additional training at the trained NUMA placement reinforcement learner using the respective NUMA server data of the lowest-performance subset as training data.20.A computing system comprising:one or more processing devices configured to train a nonuniform memory access (NUMA) placement reinforcement learner at least in part by:receiving a NUMA server data set including respective NUMA server data received at a plurality of NUMA clusters, wherein the NUMA server clusters each include a plurality of physical NUMA (pNUMA) nodes;filtering the NUMA server data set by selecting a lowest-performance subset of the plurality of NUMA clusters; andperforming additional training at the NUMA placement reinforcement learner using the respective NUMA server data of the lowest-performance subset as training data,wherein, for each of the NUMA clusters, the NUMA placement reinforcement learner is configured to:select a virtual NUMA (vNUMA) placement heuristic from among a plurality of vNUMA placement heuristics based at least in part on the NUMA server data; andassign a plurality of virtual machines (VMs) to the plurality of pNUMA nodes as specified by the selected vNUMA placement heuristic.