Methods, systems, media, and computer programs for reducing placement conflicts
By dynamically updating the collision avoidance system and randomizing the allocation strategy, the resource allocation conflict problem in the cloud computing system is solved, and the resource allocation efficiency and response speed are improved.
Patent Information
- Application Number
- CN202180062763.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-09-14
- Filing Date
- 2021-09-14
- Publication Date
- 2025-09-26
- Estimated Expiration
- 2041-09-14
AI Technical Summary
Traditional cloud computing resource allocation systems are prone to conflicts and delays when faced with a large number of placement requests, and are unable to effectively manage different types of services and provide sufficient resources to customers.
A collision avoidance system is adopted to reduce conflicts between allocation agents by maintaining and dynamically updating placement strategies, pseudo-randomly allocating computing resources, and selectively modifying certain types of placement requests.
It effectively reduces the placement conflicts between allocation agents, optimizes the utilization of computing resources, and improves the response speed and resource allocation efficiency of the cloud computing system.
Smart Images

Figure CN116261846B_ABST
Abstract
Description
Background Art
[0001] A cloud computing system is a collection of computing devices that can provide remote services and resources. For example, modern cloud computing infrastructure typically includes a collection of physical server devices organized in a hierarchical structure, including computing zones, virtual local area networks (VLANs), racks, fault domains, etc. For example, many cloud computing services are divided into clusters of nodes (e.g., node clusters). Cloud computing systems often use different types of virtual services (e.g., computing containers, virtual machines) that provide remote storage and computing capabilities to various clients or customers. These virtual services can be hosted by server nodes on the cloud computing system.
[0002] As cloud computing continues to gain popularity, managing different types of services and providing customers with sufficient cloud-based resources is becoming increasingly difficult. For example, as demand for cloud computing resources continues to grow, more and more customers and tenants are requesting cloud computing resources at a higher rate. However, as the demand for computing resources increases, traditional systems for allocating computing resources to accommodate resource requests have many problems and shortcomings.
[0003] For example, conventional allocation systems are often limited by the allocation system's ability to process a large number of incoming requests. For example, allocation agents are often deployed on server devices (e.g., server nodes) with limited computing power. Thus, while conventional allocation systems can typically allocate hundreds of discrete resources per minute, an allocation agent receiving thousands of resource requests in a short period of time may experience delays in allocating resources to accommodate sudden spikes in received resource requests. Furthermore, while processing resources continue to improve, the demand for cloud computing resources continues to increase, and modern server devices cannot provide sufficient throughput to accommodate the large number of deployment requests over a short period of time.
[0004] To accommodate a larger number of service requests, some conventional systems operate multiple server devices that provide multiple allocation agents capable of operating in parallel. For example, conventional systems can process received placement requests concurrently, enabling a greater number of resource requests to be placed on available computing resources. However, these parallel allocation agents often encounter placement conflicts, as one or more allocation agents attempt to allocate overlapping computing resources to two or more resource requests. These placement conflicts can cause significant delays and often result in placement requests being processed multiple times before resources are successfully placed on the cloud computing system.
[0005] These and other problems exist with allocating computing resources in response to receiving a large number of placement requests. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Figure 1An example environment is shown that includes a computing area of a collision avoidance system in accordance with one or more embodiments.
[0007] Figure 2 An example implementation of a collision avoidance system in maintaining and updating a deployment strategy in accordance with one or more embodiments is shown.
[0008] Figure 3A-3B An example implementation is shown in which a placement policy is modified to accommodate a large number of placement requests in accordance with one or more embodiments.
[0009] Figure 4 An example implementation of a collision avoidance system in selectively modifying a placement strategy in accordance with one or more embodiments is shown.
[0010] Figure 5A-5B An example implementation is shown in which a placement policy is selectively modified to accommodate a large number of placement requests in accordance with one or more embodiments.
[0011] Figure 6 An example series of acts is shown for modifying and implementing a placement policy to reduce allocation conflicts in accordance with one or more embodiments.
[0012] Figure 7 Some components that may be included in a computer system are shown. DETAILED DESCRIPTION
[0013] The present disclosure generally relates to systems and methods for reducing conflicts in the placement (e.g., allocation, deployment) of services (e.g., virtual machines) on server nodes of a cloud computing system. In particular, the present disclosure relates to a collision avoidance system that prevents or otherwise reduces conflicts caused by allocation agents operating in parallel and attempting to allocate overlapping computing resources to accommodate a large number of placement requests (e.g., container or virtual machine placement requests). The collision avoidance system can reduce placement conflicts by maintaining and dynamically updating a placement policy that causes the allocation agent to allocate computing resources so as to maximize or otherwise optimize utilization of the computing resources on a particular computing region.
[0014] As will be discussed in further detail herein, the collision avoidance system can reduce placement conflicts in various ways. For example, the collision avoidance system can implement a placement policy that causes allocation agents to pseudo-randomly allocate computing resources in response to incoming placement requests. In one or more embodiments, the collision avoidance system reduces placement conflicts by modifying the policy in a manner that reduces the probability that an allocation implemented by a first allocation agent will collide with a concurrent allocation implemented by a second allocation agent. Additionally, the collision avoidance system can selectively modify how and where certain types of placement requests are allocated to further reduce placement conflicts between allocation agents.
[0015] As an example, and as will be discussed in further detail below, a collision avoidance system may maintain a placement store including records of deployed services (e.g., containers, virtual machines) across multiple compute nodes in a compute region, where the compute region has multiple proxy allocators implemented thereon. The collision avoidance system may determine that a number of placement conflicts between the multiple proxy allocators regarding incoming placement requests exceeds a threshold number of placement conflicts within a recent period of time. Based on detecting the threshold number of placement conflicts, the collision avoidance system may modify the placement strategy by lowering one or more restrictions from the placement strategy associated with allocating resources across the multiple compute nodes in the compute region. Additional information related to one or more examples will be discussed herein.
[0016] The present disclosure includes many practical applications that provide benefits and / or solve problems associated with reducing or otherwise preventing the occurrence of placement conflicts due to multiple allocation agents operating in parallel with each other on a particular computational region. Some examples of these applications and advantages are discussed in further detail below.
[0017] For example, in one or more embodiments, the collision avoidance system partially randomizes the allocation of computing resources according to a placement strategy. In particular, in situations where a placement strategy with the same set of allocation rules would likely cause concurrently operating allocation agents to conflict with each other, one or more embodiments described herein relate to randomly allocating resources from a set of computing nodes using a partially randomized placement strategy. For example, the collision avoidance system reduces the probability that two or more concurrently operating allocation agents will allocate overlapping sets of resources by selecting a sufficiently large set of eligible computing nodes to reduce placement conflicts.
[0018] In addition to partially randomizing the placement of services, the collision avoidance system can also dynamically modify placement strategies based on observed conflicts within a compute region. Specifically, in the event that a large number of placement requests begins to result in placement conflicts between two or more allocation agents, the collision avoidance system can relax or otherwise reduce one or more allocation rules to increase the number of eligible compute nodes that can accommodate the allocation of computing resources. This temporary expansion of eligible compute nodes allows the collision avoidance system to reduce placement conflicts while continuing to enable the allocation agents to pursue valuable allocation goals for the compute region (e.g., reducing fragmentation, optimizing resources).
[0019] Furthermore, in one or more embodiments, the collision avoidance system enables selective randomization of resource allocation for specific types of resources. For example, when the collision avoidance system observes that only certain types of virtual machines are associated with a small increase in observed placement conflicts, the collision avoidance system can selectively update the placement policy to affect the first type of virtual machines, while not modifying the placement policy to affect other types of virtual machines. In this way, collision avoidance can reduce placement conflicts while allowing the allocation agent to continue to optimize the allocation of cloud computing resources as much as possible.
[0020] As indicated in the foregoing discussion, the present disclosure utilizes various terms to describe the features and advantages of the systems described herein. Additional details regarding the meaning of some example terms are now provided.
[0021] For example, as used herein, a "cloud computing system" refers to a network of connected computing devices that provides various services to client devices (e.g., client devices, network devices). For example, as described above, a distributed computing system may include a collection of physical server devices (e.g., server nodes) organized in a hierarchical structure, including clusters, computing zones, virtual local area networks (VLANs), racks, fault domains, etc. A cloud computing system may refer to a private or public cloud computing system.
[0022] As used herein, a "computing region" or "region" refers to any grouping or set of multiple computing nodes on a cloud computing system. For example, a computing region may refer to a cluster of nodes, a set of node clusters, a data center, multiple data centers (e.g., a region of multiple data centers), a server rack, a row or multiple server racks, a group of nodes powered by a common power source, or other hierarchical structure in which network devices are physically or virtually grouped together. In one or more embodiments, a computing region refers to a cloud computing system. Alternatively, a computing region may refer to any subset of the network devices of a cloud computing system. A computing region may include any number of nodes thereon. By way of example and not limitation, in one or more embodiments, a computing region may include anywhere between 1,000 nodes and 250,000 nodes.
[0023] In one or more embodiments described herein, a computing area may include multiple allocation agents. As used herein, an "allocation agent" refers to an application, routine, executable instruction, or other software and / or hardware mechanism used by a server device to allocate resources on a server node in a computing area. For example, an allocation agent may refer to a service on a cloud computing system deployed on a server device that is configured to execute instructions for allocating computing resources in response to a received placement request. In one or more embodiments, an allocation agent allocates resources for the deployment of virtual machines, computing containers, or any other type of service that can be deployed on a server node in a cloud computing system. In fact, although one or more embodiments described herein specifically refer to an allocation agent that arranges virtual machines on nodes in a computing area, similar features may also be applied to arrange any type of service, such as computing containers or other cloud-based services. As will be discussed in more detail herein, a computing area may include multiple allocation agents that operate in parallel to allocate resources according to one or more placement strategies.
[0024] As used herein, a "placement request" refers to any request for deploying a service on a cloud computing system. For example, a placement request may refer to a request to deploy or start a virtual machine according to a virtual machine specification. A placement request may include an identification of a customer, an indicative specification for a virtual machine (or other resource), such as the size of the virtual machine (e.g., the number of computing cores), the type of virtual machine, or any other information that may be used by an allocation agent to determine the location on which to deploy (multiple) virtual machines (e.g., a server node, a set of (multiple) cores on a server node). A placement request may include a request to deploy a single instance of a computing resource (e.g., a single virtual machine). A placement request alternatively includes a request to deploy multiple service instances (e.g., multiple virtual machines) for one or more customers.
[0025] As used herein, a "placement conflict" or "placement collision" refers to a conflict between two or more allocation agents when attempting to allocate computing resources for a computing area. Specifically, in one or more embodiments described herein, a placement conflict refers to a situation where a first allocation agent attempts to allocate computing resources for a first virtual machine in the same location (e.g., using the same set of computing resources) as a second virtual machine (or other type of service). For example, a placement conflict may exist where a first allocation agent allocates a first set of resources to a first service (e.g., a first virtual machine) and a second allocation agent attempts to allocate the same set of resources (or some overlapping sets of resources) to a second service (e.g., a second virtual machine). In fact, a placement conflict may refer to any situation where an allocation agent is unable to place a virtual machine or other service on a computing resource due to a previous action by another allocation agent.
[0026] As used herein, a "placement policy" refers to any instruction or rule associated with allocating resources on a computing area. For example, a placement policy may include a hierarchy of rules that an allocation agent follows when allocating resources for arranging services on the computing resources of a computing area. The placement policy may include information such as the number of computing cores, the type or generation of (multiple) server nodes, the maximum fragmentation of candidate computing nodes, or (multiple) other characteristics of the hardware on which allocation is performed for associated requests. The placement policy may include a goal associated with a desired state of the computing area, such as the desired fragmentation of computing nodes, a target or minimum number of healthy empty nodes on which no virtual machines are deployed, or other preferences associated with the computing area. In one or more embodiments described herein, the placement policy includes a list of rules that manage the placement of virtual machines (and other services) on the computing area. For example, in one or more implementations, the placement policy includes a list of rules sorted by importance.
[0027] As used herein, "placement," "service placement," or "deployment" may interchangeably refer to one or more associated services and allocations provided by a cloud computing system via a computing region. For example, a placement may refer to the deployment of one or more service instances (e.g., virtual machines, containers) on one or more server nodes that are capable of providing computing resources according to the specifications of a placement request(s). A placement may involve one or more services provided based on a single placement request. In one or more implementations, a placement refers to one or more service instances provided via a server node.
[0028] As used herein, "core," "computing core," or "node core" may interchangeably refer to a computing resource or unit of computing resource provided via a computing node (e.g., a server node) of a cloud computing system. A computing core may refer to a virtual core that uses the same processor without interfering with other virtual cores operating with the processor. Alternatively, a computing core may relate to a physical core that is physically separated from other computing cores. A computing core implemented on one or across multiple server nodes may refer to a variety of different cores having different sizes and capabilities. A server node may include one or more computing cores implemented thereon. In addition, a multi-core set may be allocated for hosting one or more virtual machines or other cloud-based services.
[0029] Additional details regarding the collision avoidance system will now be provided in conjunction with illustrative figures depicting example implementations. For example, Figure 1 An example environment 100 is shown that includes a computing area 102. The computing area 102 may include any number of devices. For example, in one or more embodiments, the computing area 102 refers to a cloud computing system or a portion of a cloud computing system having any number of networked devices. Figure 1As shown, the computing area 102 includes server device(s) 104 having a collision avoidance system 106 implemented thereon.
[0030] like Figure 1 As shown, the collision avoidance system 106 includes a collision detector 108, an allocation area manager 110, and a data storage device 112. The data storage device 112 may include placement strategy data 114 and placement status data 116. As will be discussed in further detail below, according to one or more embodiments described herein, the collision avoidance system 106 performs features and functions related to maintaining placement storage, identifying placement conflicts, and modifying placement strategies to be implemented by allocation agents. Additional details related to each of the components 108-116 of the collision avoidance system 106 will be described in more detail below.
[0031] like Figure 1 As shown, the computing area 102 includes a plurality of distribution agents 118a-118b. Specifically, Figure 1 The example computing area 102 shown in includes a first allocation agent 118a and a second allocation agent 118b. The computing area 102 may include any number of allocation agents in communication with (or incorporated into) the collision avoidance system 106. In one or more embodiments, the allocation agents 118a-118b are implemented on a single server device. Alternatively, in one or more implementations, the environment 100 includes one or more agents implemented across multiple server devices. As described above, the allocation agents 118a-118b may include applications, routines, software, and / or hardware implemented on one or more server devices that are configured to allocate computing resources of the computing area 102 to enable deployment of virtual machines (or other services) on the allocated resources.
[0032] In one or more embodiments, the allocation agents 118a-118b may include thereon a placement policy 120 that includes rules and instructions for allocating computing resources across the compute zone 102. As will be discussed in further detail below, in addition to determining the number of placement conflicts that occur between the allocation agents 118a-118b (e.g., due to a large number of incoming placement requests), the placement policy 120 may include updated or modified placement policies for allocation or deployment goals of the compute zone 102. Additional information related to allocating resources and placing virtual machines is discussed below.
[0033] like Figure 1As shown, the computing region 102 may also include multiple node clusters 122a-122n. The node clusters 122a-122n may be grouped by geographic location (e.g., region of the node cluster). The node clusters 122a-122n may be implemented across multiple geographic regions (e.g., in different data centers and / or on different server racks). Note that although one or more embodiments described herein are specifically about grouping server nodes within respective node clusters, other device groupings may similarly be used in allocating resources and implementing placement strategies according to one or more embodiments described herein.
[0034] Each of the node clusters 122a-122n may include various server nodes 124a-124n having multiple and diverse computing cores. Figure 1 As shown, server nodes 124a-124n can include virtual machines 126a-126n implemented thereon. For illustration, first node cluster 122a can include first server node set 124a having first virtual machine set(s) 126a. In particular, first server node set 124a can have computing cores capable of hosting virtual machine(s) 126a for customers of the cloud computing system. Each of additional node clusters 122b-122n having server nodes 124b-124n and virtual machines 126b-126n thereon can have similar features and functionality as first node cluster 122a, first server node set 124a, and associated virtual machine(s) 126a.
[0035] (Multiple) virtual machines 126a-126n can occupy a portion of the computing resources (e.g., computing cores) of server nodes 124a-124n with varying degrees of fragmentation. Figure 1 Not shown, but the server nodes 124a-124n may include a combination of occupied nodes, empty nodes, and shard nodes.
[0036] As used herein, an occupied node may refer to a server node whose every computing core is occupied by a virtual machine or other cloud-based service (e.g., such that no computing cores are available on the server node for new allocations of cloud-based resources thereon). An empty node may refer to a server node on which no virtual machines are deployed and on which no computing cores are allocated for use in preventing virtual machines or other cloud-based services. An empty node may refer to a server node that can be used to deploy a variety of virtual machines thereon, or can act as a recovery node in the event that another server node with a virtual machine thereon goes down, thereby contributing to the greater overall health of the associated node cluster. As used herein, a fragmented node may refer to a server node in which one or more computing cores are occupied by virtual machines or other cloud-based services and one or more computing cores are available for allocation. Fragmented nodes may have an associated degree of fragmentation based on the ratio of empty cores to occupied cores (or the number of empty cores available for allocation).
[0037] like Figure 1 As shown, the environment 100 includes a plurality of client devices 128a-128n that communicate with the computing area 102 (e.g., communicating with different server nodes 124a-124n) via a network 130. The client devices 128a-128n can refer to various types of computing devices, including, for example, mobile devices, desktop computers, server devices, or other types of computing devices. The network 130 can include one or more networks that use one or more communication platforms or technologies to transmit data. For example, the network 130 can include the Internet or other data links that enable electronic data to be transported between the corresponding client devices 128a-128n and the devices of the computing area 102. In one or more embodiments described herein, the client devices 128a-128n can provide a placement request to the allocation agent 118a-118b requesting the allocation of resources and / or the placement of virtual machines 126a-126n on the node cluster 122a-122n. Furthermore, while one or more embodiments described herein relate to client devices 128a-128n providing placement requests, other types of clients (eg, internal cloud clients) may serve as sources for placement requests.
[0038] In one or more embodiments, the collision avoidance system 106 and the allocation agents 118a-118b cooperate to cause the computing resources of the node clusters 122a-122n to be allocated in response to incoming placement requests. For example, a client device 128a-128n can provide a placement request comprising a request for the deployment of a virtual machine, container, or other cloud computing resource on the available resources of the node clusters 122a-122n. As described above, the placement request can indicate a specific type of (multiple) virtual machine families and an indicated number of virtual machine instances to be deployed on the computing area 102. In one or more embodiments, the placement request is provided to one of the allocation agents 118a-118b to determine a location for the deployment of the requested resources. In one or more embodiments, the placement request(s) are provided to one of the respective allocation agents 118a-118b via a load balancer or other mechanism for routing the placement request(s) to any allocation agent available to receive the request.
[0039] The allocation agents 118a-118n may determine the placement of the requested service(s) based on the placement policy 120 implemented thereon. As described above, the placement policy 120 may include a set of instructions and / or rules that affect the placement of the service(s) on the computing resources of the node cluster 122a-122n. The placement policy 120 may include any number of rules to optimize the placement of services on the computing resources in order to achieve maximum utilization of the computing resources and reduce fragmentation of the selected server nodes and / or the node cluster as a whole.
[0040] As an example, in one or more embodiments, the placement policy 120 includes rules for prioritizing the placement of services on server nodes based on the node clusters and / or the fragmentation of the server nodes on the node clusters. For example, in response to receiving a placement request, the first allocation agent 118a may identify the first node cluster 122a based on the overall fragmentation of the first node cluster 122a relative to the additional node clusters. Within the first node cluster 122a, the first allocation agent 118a may also selectively identify one or more server nodes (e.g., fragmented server nodes) with a sufficient number of computing cores that are capable of hosting the virtual machine indicated by the placement request.
[0041] In one or more embodiments, the placement strategy 120 includes a series of multiple rules that indicate criteria for the server nodes on which the allocation agent should place the virtual machine. The allocation agent can iterate through each rule until it finds the optimal placement for the virtual machine on a particular node cluster and / or server node. Where the allocation agent does not necessarily identify the most likely placement (e.g., according to each placement rule), the allocation agent can identify the next best or acceptable placement of the virtual machine on any computing resource indicated by the placement rule.
[0042] As described above, in one or more embodiments, the placement rules may be too specific and cause the allocation agents 118a-118b to attempt to place virtual machines on the same set of available computing resources according to the same set of placement rules from the same placement strategy 120. Therefore, in one or more embodiments, the allocation agent performs semi-random placement of virtual machines (and other services) according to one or more embodiments described herein. For example, rather than identifying specific servers, the allocation agent may apply the placement rules of the placement strategy 120 to identify a placement area having multiple possible server nodes that meet (or mostly meet) the criteria indicated by the placement rules. The placement area may represent a subset of a cluster or a subset of server nodes from a larger set of capable nodes for hosting the virtual machine(s). After identifying the placement area, the allocation agent(s) may randomly allocate computing resources for placement of the virtual machines in response to the placement request.
[0043] While randomizing the placement of resources can significantly reduce placement conflicts between allocation agents 118 a-118 b, allocation agents 118 a-118 b may still attempt to allocate the same or overlapping computing resources for placement of two or more services. In particular, in situations where the volume of incoming placement requests is particularly high, allocation agents 118 a-118 b may begin to experience a large number of placement conflicts that cause the allocation agents to reprocess incoming placement requests, which may result in a slowdown in resource deployment on compute region 102.
[0044] As described above, the collision avoidance system 106 can implement the features and functionality described herein to enable the allocation agents 118a-118b to experience fewer placement conflicts with each other. Figure 1 As shown, the collision avoidance system 106 includes a collision detector 108. The collision detector 108 can detect conflicts between the allocation agents 118a-118b within a predetermined time period. For example, in one or more embodiments, the collision detector 108 monitors instances of conflicts to determine whether placement conflicts are occurring at an increasing rate. More specifically, in one or more implementations, the collision detector 108 determines whether the number of placement conflicts within a predetermined time period is greater than or equal to a threshold number of placement conflicts. This can involve determining whether the number of placement conflicts exceeds a predetermined number and / or percentage of conflicts (e.g., relative to the number of incoming placement requests within the predetermined time period).
[0045] Collision detector 108 can detect placement conflicts in a variety of ways. For example, in one or more embodiments, collision detector 108 queries a placement store (e.g., placement state data 116) for the current state of a computing resource being attempted to be placed by one of allocation agents 118a-118b. If the placement store indicates that the computing resource(s) are already being used by another allocation, collision detector 108 can determine that a conflict exists and provide an indication of the conflict to the allocation agent.
[0046] In one or more embodiments, the allocation agent provides an indication of the identified set of computing resources (e.g., the identified set of computing cores and / or the identified (multiple) server nodes) to enable the collision detector 108 to locally determine whether a placement conflict exists. For example, upon receiving the identification of the computing resources, the collision detector 108 can compare the identified computing resources with information from the placement storage to determine whether one or more allocation agents 118a-118b have previously allocated the same set of computing resources for placement of another service. In one or more embodiments, the collision detector 108 provides an indication of the placement conflict to the allocation agent(s) 118a-118b.
[0047] The collision detector 108 can track these conflicts to determine the number of conflicts within a predetermined time period. For example, the collision detector 108 can maintain a running total of detected conflicts over a 1-2 minute period (or any other time interval) to determine whether placement conflicts are occurring with increasing frequency. As described above, the collision detector 108 can determine whether the number of tracked placement conflicts for the predetermined time period exceeds a threshold number or percentage of placement conflicts, which can be used to determine whether adjustments need to be made to how computing resources are allocated in response to incoming placement requests.
[0048] like Figure 1 As further shown in FIG. 1 , the collision avoidance system 106 includes an allocation region manager 110. As described above, the allocation agents 118a-118b can perform partially random placement of virtual machines in an attempt to reduce placement conflicts between them. In one or more embodiments described herein, the allocation region manager 110 can manage the degree of randomness with which virtual machines are placed on corresponding resources of the computing region 102.
[0049] For example, in one or more embodiments, the allocation zone manager 110 identifies a set of candidate server nodes, which may include a subset of the server nodes within the computing zone 102. The candidate nodes may serve as a set of target nodes to which the allocation agents 118a-118b may allocate computing resources in response to incoming placement requests. For example, in one or more embodiments, the allocation agents 118a-118b randomly place virtual machines on server nodes based on the set of candidate server nodes identified by the allocation zone manager 110.
[0050] In one or more embodiments, the allocation area manager 110 modifies the placement area based on the number of placement conflicts identified. For example, in one or more embodiments, the allocation area manager 110 expands the placement area to include a greater number of server nodes based on a determination that the number of placement conflicts identified exceeds a threshold number or percentage of placement conflicts (e.g., within a predetermined time period). In one or more embodiments, the allocation area manager 110 may further expand the placement area based on a determination that the number of placement conflicts continues to exceed the threshold number of placement conflicts. Alternatively, in one or more embodiments, the allocation area manager 110 may reduce or shrink the placement area to a more targeted set of candidate server nodes based on a determination that the number of placement conflicts identified has decreased by a certain threshold amount.
[0051] Thus, the allocation zone manager 110 can modify the degree of randomness associated with the allocation of computing resources and the placement of virtual machines in response to incoming placement requests. Specifically, the allocation zone manager 110 can increase or decrease the size of the placement zone (e.g., increase or decrease the number of candidate server nodes) based on the number of identified placement conflicts experienced by the allocation agents 118a-118b, and randomly place the virtual machines on one or more server nodes in the placement zone.
[0052] It will be understood that the collision detector 108 and the allocated area manager 110 can perform actions associated with identifying placement conflicts and modifying placement areas in a variety of ways. Additional details related to each of these features and functions of the collision avoidance system 106 will be discussed in further detail and will be discussed in detail with reference to FIG. Figure 2-5B The example configuration shown in and the manner of implementing the associated examples are discussed.
[0053] As mentioned above, and as Figure 1As further shown in FIG, the collision avoidance system 106 includes a data storage device 112 having placement strategy data 114 stored thereon. The placement strategy data 114 may include any information used by the allocation agents 118a-118b in determining the placement of virtual machines or other cloud-based services. For example, the placement strategy data 114 may include a list of allocation or placement rules that the allocation agents 118a-118b follow when determining where to place virtual machines in response to incoming placement requests. In one or more embodiments, the rules of the placement strategy data 114 may also include a hierarchy of rules corresponding to allocation goals, such as optimizing allocation or resources to optimize the fragmentation of cloud computing resources on the compute region 102.
[0054] Although Figure 1 While an example is shown where the placement strategy data 114 is maintained within the data storage 112 on the collision avoidance system 106, in one or more embodiments, the placement strategy data is represented as a series of hard-coded rules as part of the allocation agents 118a-118b. In one or more embodiments, the behavior of the allocation agents 118a-118b can be controlled by changing one or more configuration settings.
[0055] like Figure 1 As further shown in , the data storage device 112 may include placement state data 116. The placement state data 116 may include any information related to the current state of resource allocation on the computing area 102. For example, the placement state data 116 may include a record of current allocations indicating which server nodes are currently occupied by virtual machines. The placement state data 116 may include information identifying any number of computing cores that are occupied or available for allocation, and may also include an indication of the shards for each server node on the computing area 102. In one or more embodiments, the placement state data 116 includes a placement store having key-value pairs representing the placement of services on corresponding server nodes of the computing area 102. Specifically, the placement state data 116 may include stored virtual machine identifier pairs and identifiers of server nodes (or specific cores of corresponding server nodes) that are occupied by the identified virtual machines.
[0056] Although Figure 1 1 , but in one or more embodiments, the allocation agents 118a-118b can be coupled to the collision avoidance system 106 via a communication backchannel (or simply "backchannel"). Specifically, the allocation agents 118a-118b and the collision avoidance system 106 can maintain communication. This backchannel can be used in a variety of ways.
[0057] For example, in one or more embodiments, a backchannel is used to enable allocation agents 118a-118b to communicate information about new allocations to collision avoidance system 106 for storage in the placement store. For example, after identifying a computing resource (e.g., a server node, a set of computing cores), the allocation agent can provide the identification of the computing resource to collision avoidance system 106 for verification against the current version of the placement store. The collision avoidance system 106 can provide confirmation of availability or an indication that the identified computing resource has recently been allocated to a placement for another virtual machine.
[0058] In one or more embodiments, the collision avoidance system 106 can provide periodic updates to the allocation agents 118a-118b via a backchannel every few seconds or minutes to provide an updated view of the current allocation status on the compute region 102. In this way, the collision avoidance system 106 can maintain a record of the current allocations on the compute region while providing the allocation agents 118a-118b with a semi-current version of the placement state data 116. While this may not eliminate placement conflicts for the most recent placement request, it can still reduce placement conflicts because the allocation agents attempt to allocate computing resources that were previously allocated before receiving the most recent placement storage update.
[0059] Now combine Figure 2-5B For example, Figure 2-3B 1 shows an example implementation of the collision avoidance system 106 according to one or more embodiments described herein. Specifically, Figure 2 An example workflow is shown that displays actions that may be performed in conjunction with an example implementation. Figure 3A-3B shows that when combined with an example multiple node cluster implementation, Figure 2 An example visualization of the workflow shown in .
[0060] Specifically, Figure 2 An example workflow 200 is shown that includes a series of actions that may be performed by the collision avoidance system 106 to reduce placement conflicts between two or more allocation agents resulting from a large number of placement requests received within a short period of time. Figure 2 Each of the actions shown in may be performed by the collision avoidance system 106 and / or by one or more assigned agents associated with the computational domain.
[0061] like Figure 2 As shown, the collision avoidance system 106 may perform an action 202 to implement an initial deployment strategy. The initial deployment strategy may include Figure 1The placement strategy 120 shown may include any of the features discussed above. In one or more embodiments, the initial placement strategy includes a default placement strategy implemented by each of the plurality of allocation agents on the computing region. For example, the initial placement strategy may refer to a strategy that considers each of the plurality of placement rules when determining where to place a virtual machine (or other cloud-based service) on the computing region.
[0062] In one or more embodiments, the initial placement policy refers to the most restrictive or optimistic version of the placement policy. For example, as described above, the initial placement policy may include instructions to consider each of any number of placement rules that affect the placement of virtual machines on server nodes in a computing area. To illustrate, where the placement policy includes instructions to randomly allocate computing resources across a set of candidate server nodes, the initial placement policy may refer to identifying a smaller set of candidate nodes for random allocation, rather than other versions of the placement policy or a set of potentially modified rules. As another example, where the placement policy includes a hierarchy of placement rules (e.g., rules ordered by importance), the initial placement policy may include instructions to consider each placement rule ordered by importance when determining which computing resources to allocate for placement of virtual machines.
[0063] like Figure 2 As further shown in , the collision avoidance system 106 can perform an action 204 of tracking placement conflicts. In particular, where the computing area includes multiple allocation agents that allocate computing resources according to a placement policy, the collision avoidance system 106 can observe whether one or more attempts to place a virtual machine result in a placement conflict between the multiple placement agents. As described above, the collision avoidance system 106 can track placement conflicts by way of a placement storage that identifies the server node and the associated virtual machine identifier (or other identifier of the service) deployed thereon. Specifically, the collision avoidance system 106 can receive allocation information from the allocation agent and determine whether the indicated allocation attempt conflicts with an allocation previously performed by another allocation agent of the computing area.
[0064] In addition to generally tracking placement conflicts, the collision avoidance system 106 may also perform an act of determining whether placement conflicts exceed a threshold 206. For example, the collision avoidance system 106 may determine whether the number of placement conflicts exceeds a threshold number and / or percentage of placement conflicts. In one or more embodiments, the collision avoidance system 106 determines whether the identified placement conflicts exceed the threshold within a predetermined time period (e.g., 1-2 minutes). Figure 2 As shown, in the event that the placement conflict does not exceed the threshold, the collision avoidance system 106 may perform action 204 and continue tracking the placement conflict.
[0065] Alternatively, if the collision avoidance system 106 observes that the number of recently identified placement conflicts exceeds a threshold, the collision avoidance system 106 may perform an action to modify the placement strategy to identify a larger placement area. The collision avoidance system 106 may modify the placement strategy in a variety of ways. For example, in one or more implementations, the collision avoidance system 106 may modify the placement strategy by reducing, discarding, or otherwise relaxing one or more restrictions of the placement strategy so that the previously applicable placement area (e.g., the placement area based on the initial placement strategy) becomes larger.
[0066] In one or more embodiments, the collision avoidance system 106 modifies the placement strategy by providing an indication of the modification to one or more of the plurality of allocation agents. In one or more implementations, the collision avoidance system 106 provides an indication of the modified placement strategy to each of the plurality of allocation agents such that each of the plurality of allocation agents begins allocating computing resources across a wider range of server nodes (e.g., relative to a placement area based on the initial placement strategy).
[0067] like Figure 2 As shown, after revising the arrangement strategy, the collision avoidance system 106 can perform actions 204-206 again to determine whether the arrangement conflict exceeds the threshold value. Then, the collision avoidance system 106 can further modify the arrangement strategy accordingly. For example, when the number of observed conflicts continues to exceed the threshold number or percentage of arrangement attempts, the collision avoidance system 106 can further modify the arrangement strategy by further relaxing one or more arrangement rules and / or further expanding the arrangement area on which the allocation agent can allocate resources. Alternatively, when the number of observed conflicts predictably reduces, and when the reduction of arrangement conflicts remains low for a certain predetermined time period, the collision avoidance system 106 can modify the arrangement strategy by restoring the modified arrangement strategy to the initial or default arrangement strategy.
[0068] In one or more embodiments, modifying the placement strategy involves an adaptive approach based on an observed collision rate. For example, in the case of a collision rate of 30% or other proportional value, the collision avoidance system 106 can modify the placement strategy by applying a relaxed strategy to a corresponding number or percentage of incoming requests. In this example, in response to a collision rate of 30%, 30% (or other proportional value) of the requests will be placed using the relaxed strategy, while the remaining number or percentage of requests will be placed using the default strategy (e.g., not relaxing one or more rules). As another example, in the case of a collision rate of 60%, 60% (or other proportional value) of the requests can be placed using the relaxed strategy, while the remaining number or percentage of requests will be placed using the default strategy. Therefore, as will be discussed in conjunction with one or more example implementations, the collision avoidance system 106 can modify the placement strategy using a self-adjusting or adaptive approach based on observed varying degrees of placement conflicts.
[0069] In this example, the threshold number or percentage of placement conflicts can refer to any non-zero proportion of placement conflicts. In addition, modifying the placement strategy in response to observed placement conflicts can involve selectively modifying or relaxing the placement strategy for the corresponding proportion of incoming placement requests while using the default placement strategy used in other incoming placement requests. Thus, according to a non-limiting example, the collision avoidance system 106 can utilize a sliding scale or dynamic modification of the placement strategy based on the proportion of observed placement conflicts relative to the total number of incoming placement requests. The collision avoidance system 106 can then dynamically modify the proportion of placement requests to which the relaxed placement strategy is applied (e.g., selectively applied) based on the real-time collision rate of the incoming placement requests.
[0070] Figure 3A-3B An example visualization of one implementation of the collision avoidance system 106 is shown in accordance with one or more embodiments described herein. For example, Figure 3A The collision avoidance system 106 is shown in communication with a plurality of distribution agents 118. Figure 3A As shown, the collision avoidance system 106 may enable the initial placement strategy 301a to be implemented on each allocation agent 118. Figure 3A In the example shown, allocation agent 118 can receive incoming virtual machine requests (eg, from multiple client devices 128). Allocation agent 118 can then allocate computing resources according to initial placement policy 301a.
[0071] like Figure 3AAs shown, the allocation agent 118 can place virtual machines on a computing region 300 that includes multiple node clusters 302a-302f. Each of the node clusters 302a-f can include any number of server nodes. In addition, one or more node clusters can be located in one or more data centers. For example, the node clusters can be located in a single regional data center, or in different geographical locations across different data centers.
[0072] like Figure 3A As shown, and based on the initial placement strategy 301a, the allocation agent 118 can selectively allocate computing resources on one of the plurality of server nodes within the identified placement area 304. In this example, the allocation agent 118 can identify the placement area 304 that includes the first node cluster 302a of the plurality of node clusters 302a-302f. Thus, the allocation agent 118 can selectively allocate computing resources in response to incoming virtual machine requests on one or more server nodes of the first node cluster 302a.
[0073] More specifically, in this example, the allocation agent 118 can identify a placement area 304 that includes the first node cluster 302a based on a determination that the first node cluster 302a satisfies criteria of one or more placement rules from the initial placement strategy 301a. For example, the allocation agent 118 can determine that the first node cluster 302a has a threshold number of empty nodes or a degree of fragmentation that would enable placement of a particular type of virtual machine on the server nodes of the first node cluster 302a, which would result in more efficient resource utilization across the compute area 300 compared to identifying one or more additional node clusters 302b-302f as candidate node clusters.
[0074] According to one or more embodiments described herein, after identifying the placement area 304, the allocation agent 118 may randomly allocate computing resources within the placement area 304. For example, in response to each of the incoming virtual machine requests, the allocation agent 118 may randomly identify a server node within the first node cluster 302a and allocate computing resources for placement of the virtual machine(s) on the randomly identified server node.
[0075] As above combined Figure 2 As discussed, if the allocation agent 118 successfully places virtual machines in response to virtual machine requests without exceeding a threshold number of placement conflicts, the allocation agent 118 can continue to allocate resources and place virtual machines on the first node cluster 302a. This process can continue until the first node cluster 302a is full or no longer meets the criteria for being designated as a placement zone 304. However, in one or more embodiments, the allocation agents 118 may begin to conflict with each other due to receiving a large number of virtual machine requests in a short period of time.
[0076] As described above, the collision avoidance system 106 may identify that the number of placement conflicts exceeds a threshold and modify the placement strategy accordingly. Figure 3B As shown, the collision avoidance system 106 can provide a modified placement strategy 301b to the allocation agent 118. The modified placement strategy 301b can cause the allocation agent 118 to identify an updated placement area 306 that includes a larger group of node clusters. In this example, as a result of reducing one or more restrictions on the initial placement strategy 301a to arrive at the modified placement strategy 301b, the allocation agent 118 can identify a new placement area 306 that includes a first node cluster 302a, a second node cluster 302b, and a third node cluster 302c.
[0077] Although Figure 3B An example is shown where the size of the deployment area is increased threefold (e.g., from one node cluster to three node clusters), but the deployment area can be increased by any number of server nodes. Figure 3B Compared to the example shown in FIG. 1 , the placement area can be expanded by fewer server nodes (e.g., some or all of the node clusters) or more server nodes. Furthermore, in one or more embodiments, the size of the placement area can be changed based on a measure of placement conflicts relative to a threshold. For example, if the collision avoidance system 106 identifies significantly more placement conflicts than a threshold (e.g., due to a large influx of placement requests), the placement area can be expanded by more server nodes than if the collision avoidance system 106 determines that the number of placement conflicts exceeds the threshold by a smaller number (e.g., a lower percentage).
[0078] Alternatively, as above combined Figure 2 As discussed, the placement area can be modified incrementally until the number of placement conflicts no longer exceeds a threshold. For example, the collision avoidance system 106 can modify the initial placement strategy 301a multiple times while arriving at the modified placement strategy 301b by gradually relaxing one or more placement rules from the original placement strategy. In this example, the placement area can be increased by an incremental number of server nodes, such as by increasing the size of the placement area by a single node cluster, to arrive at Figure 3B A placement area 306 of three node clusters is shown. Alternatively, the placement area may be incrementally increased relative to the size of the initial placement area 304 by some fixed number of server nodes and / or percentage of server nodes.
[0079] In each of the above examples, the allocation agent 118 may randomly allocate computing resources from the identified placement areas. Figure 3BAfter the modified placement region 306 shown in FIG, the allocation agent 118 can randomly allocate computing resources and place virtual machines on random server nodes from any one of the three node clusters 302a-302c based on the modified placement strategy 301b. Although the placement region 306 includes a greater number of node clusters 302a-302c, the allocation agent 118 can experience fewer placement conflicts due to the greater number of server nodes to which computing resources can be randomly allocated.
[0080] Figure 4-5B Another example implementation is shown in which the collision avoidance system 106 and the plurality of allocation agents 118 can collaboratively reduce instances of placement conflicts on server nodes of a computational region. Specifically, Figure 4 An example workflow 400 is shown illustrating a series of actions that may be performed by the collision avoidance system 106 in reducing placement conflicts between assigned agents. Figure 4 One or more actions shown in may be performed by the collision avoidance system 106 and / or by one or more assigned agents for the associated computational area.
[0081] like Figure 4 As shown, the workflow 400 includes the above Figure 2 For example, actions 402-406 may include features and functions similar to corresponding actions 202-206 discussed above in connection with implementing an initial placement strategy, tracking placement conflicts, and determining whether the number of placement conflicts observed within a predetermined time period is greater than or equal to a threshold value (e.g., a threshold number of percentages).
[0082] In this example, and in other embodiments, the placement policy can include different rules or instructions for placing different types of virtual machines (or other cloud-based services). For example, a first type of virtual machine associated with a first feature set can be associated with a different placement area or a different set of placement rules than a second type of virtual machine associated with a second feature set. In fact, the different characteristics of the virtual machines may cause the virtual machines to be more suitable for placement on different clusters rather than another part of a cluster. This can be the result of different characteristics of the servers themselves, different sizes of the virtual machines, differences in the virtual machine applications, or other factors.
[0083] Therefore, if Figure 4As shown, in addition to generally determining whether placement conflicts exceed a threshold, collision avoidance system 106 may also perform an action of determining whether the identified placement conflict is specific to a particular machine type 408. For example, collision avoidance system 106 may determine that the identified placement conflict occurs for placement of a first type of virtual machine, while placement requests for a second type of virtual machine do not cause any placement conflicts (or at least cause less than a threshold).
[0084] The collision avoidance system 106 can then selectively modify the placement strategy based on the determination of the specific type of virtual machine for which the placement conflict is located. For example, if the collision avoidance system 106 determines that the placement conflict is not unique to a particular virtual machine, the collision avoidance system 106 can perform act 410 of modifying the placement strategy to identify a larger placement area. This act 410 can include the above-mentioned steps in conjunction with Figure 2 Similar features are discussed for action 208 .
[0085] Alternatively, if collision avoidance system 106 determines that placement conflicts are unique to a particular virtual machine type, collision avoidance system 106 can perform act 412 of selectively modifying the placement strategy for the particular virtual machine type. Specifically, similar to one or more embodiments described herein, collision avoidance system 106 can selectively modify the placement strategy to identify a larger placement area for virtual machine types that experience placement conflicts at a higher rate.
[0086] In either case (e.g., whether the collision avoidance system 106 determines that the placement conflict is specific to a virtual machine type), the collision avoidance system 106 can return to action 404 and continue tracking placement conflicts between the assigned agents of the compute region. Furthermore, the collision avoidance system 106 can continue to modify or restore placement strategies or portions of placement strategies applicable to different virtual machine types based on observed changes in the rate at which placement conflicts occur across the compute regions.
[0087] continue, Figure 5A-5B An example visualization of one implementation of the collision avoidance system 106 is shown in accordance with one or more embodiments described herein. Figure 3A-3B Examples of discussions, Figure 5A The collision avoidance system 106 is shown in communication with a plurality of assigned agents 118. Figure 3A , the collision avoidance system 106 can cause the initial placement strategy 501a to be implemented on each allocation agent 118. Similarly, the allocation agent 118 can receive virtual machine placement requests from multiple client devices 128. Figure 5A As shown, the placement requests may include a first set of placement requests associated with a first type of virtual machine (denoted as VM-A requests) and a second type of virtual machine (denoted as VM-B requests).
[0088] like Figure 5A As shown, the allocation agent 118 can place virtual machines on a computing zone 500 that includes a plurality of node clusters 502a-502f. Each of the node clusters 502a-502f can include similar features as the other node clusters discussed herein.
[0089] Based on the initial placement strategy 501a, the allocation agent 118 is able to selectively allocate computing resources on server nodes based on the identified placement areas 504a-504b. In this example, the allocation agent 118 can allocate resources for a first type of virtual machine on server nodes in a first placement area 504a (e.g., in response to a first set of placement requests). Similarly, the allocation agent 118 can allocate resources for a second type of virtual machine on server nodes in a second placement area 504b (e.g., in response to a second set of placement requests). In this example, the first placement area 504a includes a first node cluster 502a, and the second placement area 504b includes a third node cluster 502c. The placement areas may include overlapping server nodes that are shared between the placement areas. Alternatively, the placement areas may include, for example, Figure 5A Non-overlapping groupings of server nodes are shown.
[0090] The allocation agent 118 may allocate resources within the corresponding area according to the initial placement strategy 501a. For example, similar to one or more embodiments described herein, the allocation agent 118 may randomly select server nodes within the corresponding placement area 504a-504b.
[0091] Based on the number of placement conflicts observed by the collision avoidance system 106, the placement policy can be modified by reducing one or more restrictions on how the allocation agent 118 is instructed to allocate computing resources. In one or more embodiments, the initial placement policy 501a is modified similar to one or more of the examples discussed above. In this example, the initial placement policy 501a can be selectively modified with respect to rules associated with specific types of virtual machines.
[0092] Specifically, if Figure 5B As shown, the collision avoidance system 106 can selectively relax one or more placement rules associated with the placement of a first type of virtual machine associated with the first placement area 504a. Specifically, when the collision avoidance system 106 determines that placement conflicts occur with a higher frequency with respect to the first type of virtual machine (e.g., associated with the first set of placement requests), the collision avoidance system 106 can selectively modify the rules associated with the placement of the first type of virtual machine. This can be performed without modifying the rules associated with the placement of the second type of virtual machine.
[0093] like Figure 5B As shown, the collision avoidance system 106 can implement a modified placement strategy 501b on the allocation agent 118. As further shown, the modified placement strategy 501b can include one or more relaxed placement rules, thereby resulting in a first modified placement area 506a associated with the first virtual machine type and an original placement area 504b associated with the second virtual machine type. Figure 5B As shown, the updated first deployment area 506a includes the first node cluster 502a and the fourth node cluster 502b, while the second deployment area 504b again includes the third node cluster 502c.
[0094] Now go to Figure 6 , which illustrates an example flow diagram comprising a series of actions for reducing placement conflicts between allocation agents when placing cloud-based services on computing regions. Figure 6 Actions according to one or more embodiments are shown, but alternative embodiments may omit, add, reorder, and / or modify Figure 6 Any action shown in . Figure 6 Alternatively, the non-transitory computer readable medium may include instructions that, when executed by one or more processors, cause a computing device (e.g., a server device) to execute Figure 6 In a further embodiment, the system may perform Figure 6 action.
[0095] Figure 6 A series of example actions 600 for reducing placement conflicts between allocation agents is shown. For example, the series of actions 600 includes an action 610 of maintaining a placement storage device that includes a record of services allocated across a plurality of compute nodes in a compute region. In one or more embodiments, the action 610 involves maintaining a placement storage device that includes a record of computing resources allocated across a plurality of compute nodes in a compute region, wherein the compute region includes a plurality of agent allocators for allocating resources according to a placement policy in response to incoming placement requests. In one or more embodiments, maintaining the placement storage device includes a pairing of a storage service identifier and a node identifier that indicates placement of one or more services on corresponding compute nodes in the compute region.
[0096] As further shown, the series of acts 600 includes determining that a number of placement conflicts between the plurality of proxy allocators with respect to the incoming placement request is greater than a threshold value 620. For example, act 620 can include determining, based on information from the record of the allocated computing resources, that a number of placement conflicts between the plurality of proxy allocators with respect to the incoming placement request is greater than or equal to a threshold number of placement conflicts within a predetermined time period.
[0097] In one or more embodiments, the series of actions 600 includes identifying placement conflicts based on detected conflicts between service placements attempted by one or more of the plurality of proxy allocators and previously placed services indicated within the record of the allocated computing resource. Further, in one or more embodiments, determining that the number of placement conflicts is greater than or equal to a threshold number of placement conflicts includes detecting a threshold percentage of submission failures for incoming placement requests by the plurality of proxy allocators.
[0098] As further shown, the series of acts 600 includes an act 630 of modifying a placement policy for the plurality of proxy allocators based on a number of placement conflicts being greater than a threshold by reducing constraints from the placement policy associated with allocating resources on the compute region. For example, act 630 can include modifying a placement policy for the plurality of proxy allocators associated with allocating resources on the plurality of compute nodes of the compute region by reducing one or more constraints from the placement policy based on determining that the number of placement conflicts is greater than or equal to a threshold number of placement conflicts.
[0099] In one or more embodiments, a placement policy includes a set of rules executable by a plurality of proxy allocators to identify candidate nodes for resource allocation by identifying a subset of compute nodes from a plurality of compute nodes in a compute region, and randomly allocating resources for an incoming placement request on the identified candidate nodes. In one or more embodiments, modifying the placement policy includes modifying the set of rules to cause the plurality of proxy allocators to expand the candidate nodes to include the subset of compute nodes and additional compute nodes from the plurality of compute nodes in the compute region. In one or more embodiments, modifying the set of rules includes omitting one or more rules from the set of rules to expand the eligible candidate nodes for resource allocation.
[0100] In one or more embodiments, a series of actions 600 includes identifying, from incoming placement requests, a first set of placement requests for resources of a first type and a second set of placement requests for resources of a second type. The series of actions 600 also includes determining that a number of placement conflicts greater than or equal to a threshold number of placement conflicts is associated with the first set of placement requests. In one or more implementations, modifying the placement policy includes selectively reducing one or more restrictions from the placement policy for the first set of placement requests while not reducing the one or more restrictions from the placement policy for the second set of placement requests.
[0101] In one or more embodiments, the series of acts 600 includes determining that the updated number of placement conflicts between the plurality of proxy allocators continues to be greater than or equal to a threshold number of placement conflicts under the modified placement policy. In one or more implementations, the series of acts 600 includes further modifying the placement policy by reducing one or more additional restrictions in the placement policy based on determining that the updated number of placement conflicts continues to be greater than or equal to the threshold number of placement conflicts.
[0102] In one or more embodiments, the series of actions 600 includes determining that the number of updates for placement conflicts between the plurality of proxy allocators has decreased by a threshold amount under the modified placement policy. The series of actions 600 may also include, based on determining that the number of updates for placement conflicts has decreased by the threshold amount, causing the plurality of proxy allocators to revert to the placement policy.
[0103] Figure 7 Illustrated are certain components that may be included within computer system 700. One or more computer systems 700 may be used to implement the various devices, components, and systems described herein.
[0104] Computer system 700 includes a processor 701. Processor 701 may be a general-purpose single-chip or multi-chip microprocessor (e.g., Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a dedicated microprocessor (e.g., a Digital Signal Processor (DSP)), a microcontroller, a programmable gate array, etc. Processor 701 may be referred to as a central processing unit (CPU). Although in Figure 7 Just a single processor 701 is shown in the computer system 700 , but in an alternative configuration, a combination of processors (eg, an ARM and DSP) could be used.
[0105] The computer system 700 also includes a memory 703 in electronic communication with the processor 701. The memory 703 can be any electronic component capable of storing electronic information. For example, the memory 703 can be embodied as a random access memory (RAM), a read-only memory (ROM), a magnetic disk storage medium, an optical storage medium, a flash memory device in a RAM, on-board memory included in the processor, an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM) memory, a register, etc., including combinations thereof.
[0106] Instructions 705 and data 707 may be stored in memory 703. Instructions 705 may be executed by processor 701 to implement some or all of the functionality disclosed herein. Executing instructions 705 may involve using data 707 stored in memory 703. Any of the various examples of modules and components described herein may be implemented in part or in whole as instructions 705 stored in memory 703 and executed by processor 701. Any of the various examples of data described herein may be data in data 707 stored in memory 703 and used during execution of instructions 705 by processor 701.
[0107] The computer system 700 may also include one or more communication interfaces 709 for communicating with other electronic devices. The communication interface(s) 709 may be based on wired communication technology, wireless communication technology, or both. Some examples of the communication interface 709 include a Universal Serial Bus (USB), an Ethernet adapter, a wireless adapter operating according to the Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless communication protocol, a Bluetooth Wireless communication adapter and infrared (IR) communication port.
[0108] The computer system 700 may also include one or more input devices 711 and one or more output devices 713. Some examples of input devices 711 include a keyboard, a mouse, a microphone, a remote control device, buttons, a joystick, a trackball, a touchpad, and a light pen. Some examples of output devices 713 include speakers and a printer. One specific type of output device typically included in the computer system 700 is a display device 715. The display device 715 used with the embodiments disclosed herein may utilize any suitable image projection technology, such as a liquid crystal display (LCD), a light emitting diode (LED), gas plasma, electroluminescence, etc. A display controller 717 may also be provided for converting data 707 stored in the memory 703 into text, graphics, and / or moving images (as appropriate) displayed on the display device 715.
[0109] The various components of the computer system 700 may be coupled together via one or more buses, which may include a power bus, a control signal bus, a status signal bus, a data bus, etc. For clarity, the various buses are shown in FIG. Figure 7 Shown in FIG. 7 is a bus system 719 .
[0110] The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a particular manner. Any features described as modules, components, etc. may also be implemented together in an integrated logic device, or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be implemented at least in part by a non-transitory processor-readable storage medium comprising instructions that, when executed by at least one processor, perform one or more of the methods described herein. Instructions may be organized into routines, programs, objects, components, data structures, etc., which may perform specific tasks and / or implement specific data types, and may be combined or distributed as needed in various embodiments.
[0111] As used herein, non-transitory computer-readable storage media (devices) may include RAM, ROM, EEPROM, CD-ROM, solid-state drives (“SSD”) (e.g., RAM-based), flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code means in the form of computer-executable instructions or data structures and that can be accessed by a general purpose or special purpose computer.
[0112] The steps and / or actions of the methods described herein may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is required for proper operation of the method being described, the order and / or use of specific steps and / or actions may be modified without departing from the scope of the claims.
[0113] The term "determining" includes a wide variety of actions, and thus, "determining" may include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, database, or other data structure), ascertaining, etc. Furthermore, "determining" may include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), etc. Furthermore, "determining" may include resolving, selecting, choosing, establishing, etc.
[0114] The terms "comprising," "including," and "having" are intended to be inclusive, meaning that additional elements may be present in addition to the listed elements. Furthermore, it should be understood that references to "one embodiment" or "an embodiment" of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the described features. For example, any element or feature described with respect to an embodiment herein can be combined with any element or feature of any other embodiment described herein, where compatible.
[0115] The present disclosure may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered illustrative rather than restrictive. The scope of the present disclosure is therefore indicated by the appended claims rather than by the foregoing description. Changes within the meaning and range of equivalence of the claims are intended to be within their scope.
Claims
1. A method for reducing placement conflicts, comprising: maintaining a placement storage device comprising a record of computing resources allocated across a plurality of computing nodes of a computing region, the computing region comprising a plurality of proxy allocators, the plurality of proxy allocators configured to allocate resources in parallel in response to an incoming placement request according to a placement policy applicable to each of the plurality of proxy allocators; determining, based on the recorded information from the allocated computing resources, that a number of placement conflicts between the plurality of proxy allocators regarding incoming placement requests is greater than or equal to a threshold number of placement conflicts within a predetermined time period; based on a determination that the number of placement conflicts is greater than or equal to the threshold number of placement conflicts, modifying the placement policy applicable to each of the plurality of proxy allocators by reducing one or more constraints from the placement policy, the placement policy associated with allocating resources across the plurality of compute nodes of the compute region; as well as The plurality of proxy allocators are caused to allocate resources on the plurality of computing nodes according to the modified placement policy applicable to each of the plurality of proxy allocators.
2. The method of claim 1 , wherein maintaining the arrangement storage device comprises: A pairing of a storage service identifier and a node identifier, the pairing indicating placement of one or more services on corresponding compute nodes of the compute zone.
3. The method according to any one of claims 1 to 2, further comprising: The placement conflict is identified based on a detected conflict between placement of a service attempted by one or more of the plurality of proxy allocators and a previously placed service indicated within the record of allocated computing resources.
4. The method according to any one of claims 1 to 2, wherein determining that the number of placement conflicts is greater than or equal to the threshold number of placement conflicts comprises: A threshold percentage of submission failures for incoming placement requests by the plurality of proxy allocators is detected.
5. The method of any one of claims 1-2, wherein the placement strategy comprises a set of rules executable by each of the plurality of agent allocators to: identifying candidate nodes for resource allocation by identifying a subset of computing nodes from the plurality of computing nodes of the computing region; and Resources for the incoming placement request are randomly allocated on the identified candidate nodes.
6. The method of claim 5, wherein modifying the placement strategy comprises: The set of rules is modified to cause the plurality of proxy allocators to expand the candidate nodes to include a subset of the compute nodes and additional compute nodes from the plurality of compute nodes of the compute region.
7. The method of claim 6, wherein modifying the set of rules comprises: One or more rules are omitted from the set of rules to expand the candidate nodes eligible for resource allocation.
8. The method according to any one of claims 1-2, 6 and 7, further comprising: identifying, from the incoming placement requests, a first set of placement requests for resources of a first type and a second set of placement requests for resources of a second type; as well as determining that said number of placement conflicts is greater than or equal to said threshold number of placement conflicts is associated with said first set of placement requests, Wherein modifying the placement policy comprises: selectively reducing one or more restrictions from the placement policy for the first set of placement requests, and not reducing one or more restrictions from the placement policy for the second set of placement requests.
9. The method according to any one of claims 1-2, 6 and 7, further comprising: determining that, under the modified placement policy, the updated number of placement conflicts between the plurality of proxy allocators continues to be greater than or equal to the threshold number of placement conflicts; as well as Based on determining that the number of updates for placement conflicts continues to be greater than or equal to the threshold number of placement conflicts, the placement policy is further modified by reducing one or more additional restrictions from the placement policy.
10. The method according to any one of claims 1-2, 6 and 7, further comprising: determining that a number of updates of placement conflicts between the plurality of proxy allocators has decreased by a threshold amount under the modified placement policy; as well as Based on determining that the number of updates that place conflicts has decreased by the threshold amount, the plurality of proxy allocators are caused to revert to the placement policy.
11. The method of claim 1 , wherein causing the plurality of proxy allocators to allocate resources comprises: Each of the plurality of proxy allocators is enabled to process placement requests in parallel and allocate resources on the plurality of computing nodes of the computing area according to the modified placement policy.
12. A system for reducing placement conflicts, comprising: one or more processors; a memory in electronic communication with the one or more processors; instructions stored in the memory, the instructions executable by the one or more processors to: maintaining a placement storage device comprising a record of computing resources allocated across a plurality of computing nodes of a computing region, the computing region comprising a plurality of proxy allocators, the plurality of proxy allocators configured to allocate resources in parallel in response to an incoming placement request according to a placement policy applicable to each of the plurality of proxy allocators; determining, based on the recorded information from the allocated computing resources, that a number of placement conflicts between the plurality of proxy allocators regarding incoming placement requests is greater than or equal to a threshold number of placement conflicts within a predetermined time period; based on a determination that the number of placement conflicts is greater than or equal to the threshold number of placement conflicts, modifying the placement policy applicable to each of the plurality of proxy allocators by reducing one or more constraints from the placement policy, the placement policy associated with allocating resources across the plurality of compute nodes of the compute region; as well as The plurality of proxy allocators are caused to allocate resources on the plurality of computing nodes according to the modified placement policy applicable to each of the plurality of proxy allocators.
13. The system of claim 12, wherein the placement policy comprises a set of rules executable by the plurality of agent dispatchers to: identifying candidate nodes for resource allocation by identifying a subset of computing nodes from the plurality of computing nodes of the computing region; and Resources for the incoming placement request are randomly allocated on the identified candidate nodes.
14. The system according to claim 13, Modifying the arrangement strategy includes: modifying the set of rules to cause each of the plurality of proxy allocators to expand the candidate nodes to include a subset of the compute nodes and additional compute nodes from the plurality of compute nodes of the compute region, and Wherein modifying the set of rules includes: omitting one or more rules from the set of rules to expand the candidate nodes eligible for resource allocation.
15. The system of any one of claims 12-14, further comprising instructions executable by the one or more processors to: identifying, from the incoming placement requests, a first set of placement requests for resources of a first type and a second set of placement requests for resources of a second type; and determining that said number of placement conflicts is greater than or equal to said threshold number of placement conflicts is associated with said first set of placement requests, Modifying the arrangement strategy includes: One or more restrictions from the placement policy are selectively reduced for the first set of placement requests, while one or more restrictions from the placement policy are not reduced for the second set of placement requests.
16. The system of claim 12, wherein causing the plurality of proxy allocators to allocate resources comprises: Each of the plurality of proxy allocators is enabled to process placement requests in parallel and allocate resources on the plurality of computing nodes of the computing area according to the modified placement policy.
17. A non-transitory computer-readable medium having stored thereon instructions that, when executed by at least one processor, cause the at least one processor to perform the method according to any one of claims 1-11.
18. A computer program configured to perform the method of any one of claims 1 to 11 when executed on a process of a computing system.
Citation Information
Patent Citations
Selecting Resource Allocation Policies and Resolving Resource Conflicts
CN106020941A
Method for reliably transmitting messages, user equipment and base station
CN107306413A
US202016778855A