Dynamic allocation of computing resources

By receiving computing resource requests in cloud computing resource management, organizing resource groups and splitting redundant resource groups, the problem of scattered segmentation of computing resources in traditional solutions is solved, and dynamic allocation and efficient utilization of computing resources are achieved.

CN112148467BActive Publication Date: 2025-03-04MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN201910578411.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-06-28
Publication Date
2025-03-04
Estimated Expiration
2039-06-28

AI Technical Summary

Technical Problem

When allocating computing resources, traditional cloud computing resource management solutions only consider whether there is a quota left of tenants, and do not pay attention to the location of resources, resulting in the computing resources being divided in scattered ways, making it difficult to provide services to tenants who need a large number of continuous computing resources in the future.

Method used

By receiving the target number of computing resources requests, the idle computing resources are organized into resource groups, and when it is determined that the resource group does not contain matching resource groups, the idle redundant resource groups are split to allocate the target number of computing resources.

Benefits of technology

Dynamic allocation of computing resources is realized, the proximity of resources is ensured, and the utilization efficiency and allocation flexibility of computing resources are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112148467B_ABST
    Figure CN112148467B_ABST
Patent Text Reader

Abstract

According to the implementation of the present disclosure, a solution for dynamic management of computing resources is provided. In the solution, a first request for using a target number of computing resources in a computing resource set is received, wherein at least one idle computing resource in the computing resource set is organized into at least one idle resource group. When it is determined that the first resource group set does not include an idle matching resource group and at least one idle resource group includes an idle redundant resource group, the target number of computing resources is allocated to the first request by splitting the idle redundant resource group, wherein the number of resources in the idle redundant resource group is greater than the target number. Thus, dynamic allocation of computing resources can be achieved.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] In recent years, with the development of computer technology, especially distributed computing, cloud computing has become a popular computing model. Cloud computing is a model that can access a configurable set of computing resources (including network servers, storage, graphics processing units, etc.) in a convenient and on-demand manner through the network. The manager of the computing resource set can quickly configure, provide or release resources with minimal management overhead. The core issue of cloud computing is the management of computing resources. The dynamic allocation method of cloud computing resources in cloud computing resource management has become a research hotspot. Summary of the invention

[0002] According to the implementation of the present disclosure, a solution for dynamic management of computing resources is provided. In the solution, a first request for using a target number of computing resources in a computing resource set is received, wherein at least one idle computing resource in the computing resource set is organized into at least one idle resource group. When it is determined that the first resource group set does not include an idle matching resource group and at least one idle resource group includes an idle redundant resource group, the target number of computing resources is allocated to the first request by splitting the idle redundant resource group, wherein the number of resources in the idle redundant resource group is greater than the target number. Thus, dynamic allocation of computing resources can be achieved.

[0003] The Summary is provided to introduce the concepts in a simplified form, which will be further described in the Detailed Description below. The Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] Figure 1 A block diagram illustrating a computing environment in which various implementations of the present disclosure can be implemented;

[0005] Figure 2 A flowchart illustrating a process for dynamic allocation of computing resources according to some implementations of the present disclosure;

[0006] Figure 3 A schematic diagram illustrating an example topology of a set of computing resources according to some implementations of the present disclosure; and

[0007] Figure 4 A flowchart illustrating a process for allocating using available computing resources according to some implementations of the present disclosure;

[0008] Figure 5 A flowchart showing a process of dynamic allocation of computing resources according to other implementations of the present disclosure;

[0009] Figure 6A block diagram of an example computing device is shown in accordance with some implementations of the present disclosure.

[0010] In these drawings, the same or similar reference symbols are used to designate the same or similar elements. DETAILED DESCRIPTION

[0011] The present disclosure will now be discussed with reference to several example implementations. It should be understood that these implementations are discussed only to enable those skilled in the art to better understand and thus implement the present disclosure, and do not imply any limitation on the scope of the present subject matter.

[0012] As used herein, the term "including" and variations thereof are to be interpreted as open-ended terms meaning "including but not limited to". The term "based on" is to be interpreted as "based at least in part on". The terms "an implementation" and "an implementation" are to be interpreted as "at least one implementation". The term "another implementation" is to be interpreted as "at least one other implementation". The terms "first", "second", etc. may refer to different or the same objects. Other explicit and implicit definitions may also be included below.

[0013] As discussed above, computing resource management of cloud computing is one of the core issues of cloud computing. Some traditional solutions allocate computing resources to multiple tenants who share a set of computing resources by means of quota management. For example, in a scenario where multiple tenants share a multi-graphics processing unit (GPU) cluster in cloud computing, a tenant may be allocated a certain number of tokens as its quota, and the tenant can consume tokens to obtain GPUs to process its submitted jobs. However, in the process of computing resource allocation, traditional solutions only consider whether the quota of the tenant applying for resources is remaining, without paying attention to the location of the allocated computing resources. This makes the allocation of a large number of small computing resource requirements (for example, a single GPU) cause the computing resources to be fragmented, making it difficult to provide services to tenants who subsequently require a large amount of continuous computing resources.

[0014] According to the implementation of the present disclosure, a solution for dynamic management of computing resources is provided. In the solution, a first request for using a target number of computing resources in a computing resource set is received, wherein at least one idle computing resource in the computing resource set is organized into at least one idle resource group. When it is determined that the first resource group set does not include an idle matching resource group and at least one idle resource group includes an idle redundant resource group, the target number of computing resources is allocated to the first request by splitting the idle redundant resource group, wherein the number of resources in the idle redundant resource group is greater than the target number. Thus, dynamic allocation of computing resources can be achieved.

[0015] The basic principles and several example implementations of the present disclosure are explained below with reference to the accompanying drawings.

[0016] Example Environment

[0017] Figure 1 1 is a block diagram of a computing environment 100 in which multiple implementations of the present disclosure can be implemented. It should be understood that Figure 1 The computing environment 100 shown is merely exemplary and should not constitute any limitation on the functionality and scope of the implementation described in the present disclosure. Figure 1 As shown, computing environment 100 includes computing resource scheduling device 115 and computing resource set 120, which may include multiple computing resources 125-1 to 125-N (individually or collectively referred to as computing resources 125). In some implementations, computing resource 125 may include a graphics processing unit GPU.

[0018] In some implementations, the computing resource scheduling device 115 can be implemented as various user terminals or service terminals. The service terminal can be a server, a large computing device, etc. provided by various service providers. The user terminal is such as any type of mobile terminal, fixed terminal or portable terminal, including a mobile phone, a multimedia computer, a multimedia tablet, an Internet node, a communicator, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a tablet computer, a personal communication system (PCS) device, a personal navigation device, a personal digital assistant (PDA), an audio / video player, a digital camera / camcorder, a positioning device, a television receiver, a radio broadcast receiver, an e-book device, a game device or any combination thereof, including accessories and peripherals of these devices or any combination thereof.

[0019] The computing resource scheduling device 115 can be used to schedule computing resources 125 in the computing resource set 120. The computing resource scheduling device 115 receives a request 110 for using a target number of computing resources from one or more applications or tenants 105. The computing resource scheduling device 115 can allocate the target number of computing resources from the computing resource set 125 to the request 110 based on the computing resource dynamic scheduling process described in detail below. For example, the computing resource scheduling device 115 can allocate computing resources 125-1 and computing resources 125-2 to the request 110.

[0020] An example implementation of the computing resource scheduling device 115 dynamically allocating computing resources will be discussed in detail below.

[0021] Example Process

[0022] Figure 2 A flowchart of a process 200 for dynamic allocation of computing resources according to some implementations of the present disclosure is shown. The process 200 may be implemented by the computing resource scheduling device 115.

[0023] At 202, the computing resource scheduling device 115 receives a first request 110 for using a target number of computing resources in a computing resource set 120, wherein at least one idle computing resource in the computing resource set 120 is organized into at least one idle resource group. In some implementations, the computing resource scheduling device 115 may receive the first request 110 from an application or tenant 105 that applies for computing resources in the computing resource set 120. For example, the tenant 105 may issue a request to the computing resource scheduling device 115 to use 2 GPU devices for deploying a machine learning algorithm.

[0024] In some implementations, the computing resource scheduling device 115 may organize the idle computing resources in the computing resource set 120 into one or more idle resource groups based on a predetermined rule. For example, if it is determined that more tenants request 2 computing resources based on an analysis of requests received from historical events, the computing resource scheduling device 115 may preferentially organize the idle computing resources into an idle resource group consisting of two consecutive computing resources.

[0025] Considering that applications in computing resource deployment are increasingly concerned with the proximity of computing devices, for example, the performance of two GPUs located in the same PCIe switch working together will be much higher than that of GPUs located in two different computing nodes. In some implementations, the computing resource scheduling device 115 can determine a multi-level topology structure corresponding to the computing resource set 110, and organize idle resource groups based on the multi-level topology structure. The following uses GPU as an example of computing resources, and will refer to Figure 3 to describe the process of organizing groups of idle resources, Figure 3 A schematic diagram of an example topology 300 of a set of computing resources is shown according to some implementations of the present disclosure.

[0026] For multiple GPUs organized as follows: they are organized into multiple computing nodes, and each computing node includes two central processing unit (CPU) slots, each CPU slot is further connected to two PCIe switches, and each PCIe switch is connected to two GPUs, and the corresponding topology 300 is as follows: Figure 3 As shown, the topology 300 includes a plurality of nodes associated with a plurality of different levels.

[0027] Specifically, the topology 300 may include a first level 340, wherein the first level 340 includes a plurality of GPU nodes 345-1 to 345-8 (individually or collectively referred to as GPU nodes 345) corresponding to individual GPUs. Figure 1The topology 300 further includes a second level 330, wherein the second level 330 includes nodes 335-1 to 335-4 (individually or collectively referred to as PCIe nodes 335) corresponding to PCIe switches connecting multiple GPUs.

[0028] The topology 300 further includes a third level 320, wherein the third level 320 includes nodes 325-1 to 325-2 (individually or collectively referred to as CPU nodes 325) corresponding to CPU sockets connecting multiple PCIe switches. Further, the topology 300 further includes a first level 340, wherein the first level 340 includes nodes 315-1 to 315-N (individually or collectively referred to as computing device nodes 315) corresponding to computing devices connecting multiple CPU sockets.

[0029] Figure 3 The specific node arrangement and number of levels in the topology 300 shown are only exemplary and are not intended to limit the solutions of the present disclosure. It should be understood that additional levels or fewer levels may be provided according to the actual topology. For example, when a CPU slot is connected to a PCIe switch, the second level 330 may be omitted. In some implementations, the multi-level topology may include at least two levels of the first level 340, the second level 330, the third level 320, and the fourth level 310.

[0030] In some implementations, the computing resource scheduling device 115 can organize at least one idle computing resource into at least one idle resource group based on the multi-level topological structure corresponding to the computing resource set 110, so that each idle resource group includes all computing resources associated with the same node in the multi-level topological structure, where the node in the multi-level topological structure corresponds to the corresponding computing resource in the computing resource set or the connected components of multiple computing resources in the computing resource set.

[0031] In some implementations, the computing resource scheduling device 115 may organize the idle computing resources to be associated with the highest possible level of nodes. Figure 3 In the example, based on the multi-level topology structure 300, when computing resources 125-1 to 125-N are all idle, the computing scheduling resource device 115 can organize the idle computing resources 125 into the same idle resource group, wherein all idle resources 125 in the group are associated with the computing device node 315-2 in the fourth level in the multi-level topology structure 300.

[0032] As another example, for example, when the computing resources 125-1 and 125-2 corresponding to the nodes 345-1 and 345-2 are already in use. Based on the multi-level topology 300, the computing resource scheduling device 115 can determine that the computing resources 125-3 and 125-4 corresponding to the nodes 345-3 and 345-4 are to be organized into an idle resource group 370, wherein each computing resource corresponds to the PCIe node 335-2. Similarly, the computing resource scheduling device 115 can organize the computing resources 125-5 to 125-N (N=8) corresponding to the nodes 345-5 to 345-8 into an idle resource group 380, wherein each computing resource is associated with the CPU node 380. Figure 3 As shown, since the computing resources 125-1 and 125-2 corresponding to the nodes 345-1 and 345-2 have been used, the computing resources 125-1 and 125-2 will not be organized into the same idle resource group as the computing resources 125-5 to 125-8. Based on such an idle resource organization method, the computing resource scheduling device 115 can ensure that the allocated computing resources always have proximity, thereby improving the efficiency of the computing resources when running.

[0033] Continue to refer Figure 2 At 204, the computing resource scheduling device 115 determines whether the at least one idle resource group includes an idle matching resource group having the target number of computing resources. In some implementations, the computing resource scheduling device 115 may maintain a list of idle resource groups. Figure 3 In the example of , when all eight computing resources 125 are idle, the computing resource scheduling device 115 may determine that there is only one idle resource group with a number of computing resources of 8. In response to determining at 204 that at least one idle resource group includes an idle matching resource group, the method 200 may also proceed to 210, where the computing resource scheduling device 115 allocates computing resources in the idle matching resource group to the first request 110.

[0034] In response to determining at 204 that at least one idle resource group does not include an idle matching resource group, method 200 proceeds to 206, where the computing resource scheduling device 115 determines whether at least one idle resource group includes an idle redundant resource group, wherein the number of resources in the idle redundant resource group is greater than the target number. Figure 3 For example, when the first request 110 requests to use 2 computing resources, the computing resource scheduling device 115 may determine that there is no idle matching resource group corresponding to the number 2.

[0035] The computing resource scheduling device 115 may further determine whether there is an idle redundant resource group. In some implementations, the computing resource scheduling device 115 may search for idle redundant resource groups of the previous level in ascending order of size. For example, when the computing resource scheduling device 115 determines that there is no idle resource group of size 2, it may further search for idle resource groups corresponding to the third level 320 (resource groups of size 4), and then further search for idle resource groups corresponding to the fourth level 310 (resource groups of size 8).

[0036] In response to determining at 206 that at least one idle resource group includes an idle redundant resource group, method 200 proceeds to 208, where the computing resource scheduling device 115 allocates the target number of computing resources to the first request by splitting the idle redundant resource group. In some implementations, the computing resource scheduling device 115 may split the idle redundant resource group into a first resource group and at least one second resource group, where the first resource group has the target number of computing resources, and allocate the computing resources in the first resource group to the first request. For example, continue Figure 3 In the example of, when all eight computing resources 125 are idle, and the number of computing resources requested by the first request 110 is 2, the computing resource scheduling device 115 can divide the idle redundant resource group into a first resource group 360 (including computing resources 125-1 and 125-2), an idle resource group 370 (including computing resources 125-3 and 125-4), and an idle resource group 380 (including computing resources 125-5 to 125-8). The computing resource scheduling device 115 can further allocate the computing resources 125-1 and 125-2 in the obtained first resource 360 ​​to the first request 110.

[0037] In some implementations, the computing resource scheduling device 115 can split the idle redundant resource groups according to the topological level. For example, the computing resource scheduling device 115 can split the idle redundant resource group corresponding to the node 315-2 in the fourth level 310 into two idle resource groups corresponding to the nodes 325-1 and 325-2 in the third level 320, and further split the idle resource group corresponding to the node 325-1 to obtain two idle resource groups corresponding to the nodes 335-1 and 335-2 in the second level 330. Based on this approach, the computing resource scheduling device 115 can further ensure that a larger continuous computing resource group is retained as much as possible under the premise of ensuring the proximity of the allocated resources, so that the computing resources can cope with usage requests of different sizes.

[0038] In some implementations, in response to the first request 110 being executed, the computing resource scheduling device 115 may mark the first resource group as idle. The computing resource scheduling device 115 may further determine that the computing resources included in at least one second resource group are all idle, and merge the computing resources included in the first resource group and at least one second resource group into a new idle resource group. For example, continue Figure 3 For example, when the computing resource scheduling device 115 determines that the computing resources 125-1 and 125-2 corresponding to the nodes 345-1 and 345-2 have been marked as idle, the computing resource scheduling device 115 can first determine whether the other computing resources 125-3 and 125-4 corresponding to the upper layer node 325-1 are idle. If so, the four computing resources 125-1 to 125-2 can be merged into a new idle resource group. Further, the computing resource scheduling device 115 can also determine whether the other computing resources 125-5 to 125-N (N=8) corresponding to the node 315-2 of the upper layer of the node 325-1 are idle. If so, the computing resource scheduling device 115 can further merge the computing resources 125-1 to 125-N (N=8) into a new idle resource group for processing subsequent requests. Based on this approach, the computing resource scheduling device 115 can always reserve a larger continuous computing resource group, so that the computing resources can cope with usage requests of different sizes.

[0039] In some implementations, in response to determining at 206 that at least one idle resource group does not include an idle redundant resource group, the method 200 may also proceed to 212, where the computing resource scheduling device 115 determines whether the priority of the first request 110 is higher than the priority threshold. In some implementations, the application and / or the tenant 105 may attach information indicating the priority when sending the first request 110. For example, the application and / or the tenant 105 may specify a specific priority based on the type of task to be deployed. For example, a more important task may be assigned a higher priority.

[0040] In some implementations, the computing resource scheduling device 115 may also implement priority control of received requests. Figure 4 FIG. 2 shows a flowchart of a process of request priority control according to other implementations of the present disclosure. Figure 4 As shown, at block 402, the computing resource scheduling device 115 may determine a first number of computing resources in a resource group that has been used by the first tenant 105 associated with the first request. At block 404, the computing resource scheduling device 115 may determine that the sum of the target number and the first number exceeds the upper limit of the number of computing resources corresponding to the first tenant. In some implementations, the upper limit of the number of computing resources corresponding to the first tenant is equal to the sum of the second number of computing resources pre-allocated to the first tenant and the third number of computing resources obtained by the tenant through exchange with the second tenant.

[0041] For example, according to the service purchased by the tenant 105, the computing resource scheduling device 115 can set the second number of pre-allocated resources (also referred to as the tenant quota) of the first tenant who submitted the first request 110 to 4. In some implementations, the computing resource scheduling device 115 can support dynamic adjustment of the second number of pre-allocated resources of the tenant 105. For example, the tenant 105 can apply to the computing resource scheduling device 115 to reduce the tenant quota in the first time period to increase the tenant quota in the second time period. Based on this approach, for example, the tenant 105 can give up the idle computing resources in exchange for more computing resources in certain time periods when jobs are concentrated.

[0042] In some implementations, each tenant may be pre-assigned a virtual private computing resource set, and the resources in the virtual private computing resource set may always be occupied by the tenant with high priority. In some implementations, the virtual private computing resource set may correspond to a node in a layer of the multi-layer topology structure described above, so that the computing resources allocated to the tenants always have proximity.

[0043] In some implementations, the computing resource scheduling device 115 can also support resource exchange between tenants. For example, the computing resource scheduling device 115 can configure predetermined rules for resource interaction and collect resource exchange applications submitted by each tenant. The computing resource scheduling device can determine whether the submitted resource exchange application complies with the predetermined rules to perform resource exchange. In some implementations, the predetermined rules can be based on the points of different tenants to exchange computing resources. For example, different tenants can exchange computing resources for corresponding points by providing computing resources. For example, tenant A can apply to exchange 2 points for a computing resource, tenant B can apply to exchange 3 points for a computing resource, and tenant C can apply to provide computing resources. At this time, according to the predetermined rules, the computing resource scheduling device 115 can determine that tenant B can obtain the computing resources provided by tenant C at the cost of 3 points, and tenant C can increase the corresponding points. Based on this method, the computing resource scheduling device 115 can support the exchange of resources owned by different tenants, and further improve the utilization efficiency of computing resources. For example, the first tenant 105 can obtain an additional 2 available computing resources through exchange.

[0044] In response to determining in block 404 that the sum exceeds the upper limit of the number of computing resources, the computing resource scheduling device 115 may set the priority of the first request to be lower than the priority threshold. Based on this approach, the computing resource scheduling device 115 may allow the tenant 105 to occupy some temporarily idle computing resources of other tenants at a lower priority, thereby improving the utilization of computing resources.

[0045] Alternatively, in response to determining in block 404 that the sum exceeds the upper limit of the number of computing resources, the computing resource scheduling device 115 may also directly suspend the first request until the sum is less than or equal to the upper limit of the number of computing resources.

[0046] Alternatively, in response to determining in block 404 that the sum exceeds the upper limit of the number of computing resources, the computing resource scheduling device 115 may also remind the tenant 105 whether to allocate resources with a low priority and prompt that the resources allocated with a low priority may be reclaimed at any time. The computing resource scheduling device 115 may set the priority of the first request 110 to be lower than the threshold after obtaining confirmation from the tenant 105 that the resources are allocated with a low priority.

[0047] Continue to refer Figure 2 In response to determining that the priority is higher than the priority threshold at 212, method 200 may also proceed to 214, where the computing resource scheduling device 115 determines to use at least one available computing resource in the computing resource set to allocate a target number of computing resources for the first request, wherein the available computing resources include idle computing resources and candidate computing resources, and the candidate computing resources have been allocated to the second request whose priority is less than or equal to the priority threshold. For example, when it is determined through the process of box 202 to box 206 that the tenant no longer has idle computing resources, and at this time the priority of the first request 110 submitted by the tenant is still higher than the threshold, at this time, some low-priority requests may have occupied the resources in the virtual private resource set that have been allocated to the tenant.

[0048] In some implementations, the computing resource scheduling device 115 allows requests with a priority higher than the priority threshold to occupy computing resources that have been allocated to requests with a priority less than or equal to the priority threshold, which are also referred to as candidate computing resources. At this time, the computing resource scheduling device 115 can also organize the available computing resources into at least one available computing resource group in the same manner as organizing the idle resource group. Figure 5 To describe the process of block 214 in detail, Figure 5 A flow diagram of a process 500 for allocating using available computing resources is shown in accordance with some implementations of the present disclosure.

[0049] like Figure 5 As shown, in block 502, the computing resource scheduling device 115 may determine whether at least one available resource group includes an available matching resource group having a target number of computing resources. Figure 3For example, if the computing resources 125-1 and 125-2 corresponding to nodes 345-1 and 345-2 are allocated to the second request below the priority threshold, then the available resources include computing resources 125-1 to 125-N (N=8), although resources 125-1 and 125-2 are not idle. Therefore, according to the method described above, the computing resource scheduling device 115 can organize the available computing resources 125-1 to 125-8 into an available computing resource group.

[0050] In response to determining in block 502 that at least one of the available resource groups includes an available matching resource group, the method proceeds to block 502, where the computing resource scheduling device 115 can reclaim the computing resources that have been allocated in the available matching resource group. For example, when the first request 110 requires the use of 8 computing resources, the computing resource scheduling device 115 can directly terminate the job performed on the computing resources 125-1 and 125-2, and reclaim the computing resources 125-1 and 125-2 that have been allocated to the second request. In block 506, the computing resource scheduling device 115 allocates computing resources in the available matching resource group to the first request 110. For example, the computing resource scheduling device 115 can allocate available computing resources 125-1 to 125-N (N=8) to the first request 110.

[0051] Based on this approach, the computing resource scheduling device 115 can support some requests to temporarily occupy computing resources allocated to other tenants while ensuring that other tenants can always obtain computing resources within their corresponding quotas.

[0052] In response to determining in box 502 that at least one available resource group does not include an available matching resource group, the method proceeds to box 508, where the computing resource scheduling device 115 can determine whether at least one available resource group includes an available redundant resource group, where the number of resources in the available redundant resource group is greater than the target number.

[0053] In response to determining in block 508 that at least one of the available resource groups includes an available redundant resource group, the method proceeds to block 510, where the computing resource scheduling device 115 can allocate the target number of computing resources for the first request by splitting the available redundant resource group. It should be understood that the processes of blocks 508 and 510 are similar to the processes described above for blocks 206 and 208, and the computing resource scheduling device 115 can obtain the target number of computing resources by splitting larger continuous available computing resources.

[0054] Based on the above method, the computing resource scheduling device 115 can execute different personalized allocation logics for requests of different priorities, among which high-priority requests can further use the computing resources occupied by low-priority requests on the premise of giving priority to allocating idle computing resources, thereby improving the flexibility of computing resource allocation.

[0055] Example Environment

[0056] Figure 6 600 is a schematic block diagram of an example device 600 that can be used to implement an embodiment of the present disclosure. The device 600 can be used to implement Figure 1 The scheduling computing device 120. It should be understood that Figure 6 The device 600 shown is merely exemplary and should not constitute any limitation on the functionality and scope of the implementation described in the present disclosure. Figure 1 As shown, components of device 600 may include, but are not limited to, one or more processors or processing units 110 , memory 120 , storage devices 130 , one or more communication units 140 , one or more input devices 150 , and one or more output devices 160 .

[0057] In some implementations, the device 600 may be implemented as various user terminals or service terminals. The service terminal may be a server provided by various service providers, a large computing device, etc. The user terminal may be any type of mobile terminal, fixed terminal, or portable terminal, including a mobile phone, a multimedia computer, a multimedia tablet, an Internet node, a communicator, a desktop computer, a laptop computer, a notebook computer, a netbook computer, a tablet computer, a personal communication system (PCS) device, a personal navigation device, a personal digital assistant, or a computer.

[0058] (PDA), audio / video player, digital camera / camcorder, positioning device, television receiver, radio broadcast receiver, e-book device, gaming device or any combination thereof, including accessories and peripherals of these devices or any combination thereof. It is also foreseeable that device 600 can support any type of interface for the user (such as "wearable" circuit, etc.).

[0059] Processing unit 610 may be a real or virtual processor and is capable of performing various processes according to a program stored in memory 620. In a multi-processor system, multiple processing units execute computer executable instructions in parallel to increase the parallel processing capabilities of device 600. Processing unit 610 may also be referred to as a central processing unit (CPU), a microprocessor, a controller, or a microcontroller.

[0060] The device 600 typically includes a plurality of computer storage media. Such media may be any available media accessible to the device 600, including but not limited to volatile and non-volatile media, removable and non-removable media. The memory 620 may be a volatile memory (e.g., a register, a cache, a random access memory (RAM)), a non-volatile memory (e.g., a read-only memory (ROM), an electrically erasable programmable read-only memory (EEPROM), a flash memory) or some combination thereof. The memory 620 may include one or more program melody generation modules 622, which are configured to perform the functions of various implementations described herein. The melody generation module 622 may be accessed and run by the processing unit 610 to implement the corresponding functions. The storage device 630 may be a removable or non-removable medium, and may include a machine-readable medium that can be used to store information and / or data and can be accessed within the device 600.

[0061] The function of the component of device 600 can be realized with a single computing cluster or multiple computing machines, and these computing machines can communicate by communication connection. Therefore, device 600 can use the logical connection with one or more other servers, personal computers (PC) or another general network node to operate in a networked environment. Device 600 can also communicate with one or more external devices (not shown) by communication unit 640 as needed, and external devices such as database 670, other storage devices, servers, display devices, etc., communicate with one or more devices that make users interact with device 600, or communicate with any device (for example, network card, modem, etc.) that makes device 600 communicate with one or more other computing devices. Such communication can be performed via input / output (I / O) interface (not shown).

[0062] The input device 650 may be one or more various input devices, such as a mouse, keyboard, trackball, voice input device, camera, etc. The output device 660 may be one or more output devices, such as a display, speaker, printer, etc.

[0063] The device 600 includes a resource scheduling module 622, which is configured to receive a first request for using a target number of computing resources in a computing resource set, wherein at least one idle computing resource in the computing resource set is organized into at least one idle resource group; determine whether at least one idle resource group includes an idle matching resource group having a target number of computing resources; in response to at least one idle resource group not including an idle matching resource group, determine whether at least one idle resource group includes an idle redundant resource group, and the number of resources in the idle redundant resource group is greater than the target number; and in response to at least one idle resource group including an idle redundant resource group, allocate the target number of computing resources to the first request by splitting the idle redundant resource group.

[0064] Example Implementation

[0065] Some example implementations of the present disclosure are listed below.

[0066] In a first aspect, a method for managing computing resources is provided. The method includes: receiving a first request for using a target number of computing resources in a computing resource set, wherein at least one idle computing resource in the computing resource set is organized into at least one idle resource group; determining whether at least one idle resource group includes an idle matching resource group having the target number of computing resources; in response to at least one idle resource group not including an idle matching resource group, determining whether at least one idle resource group includes an idle redundant resource group, wherein the number of resources in the idle redundant resource group is greater than the target number; and in response to at least one idle resource group including an idle redundant resource group, allocating the target number of computing resources for the first request by splitting the idle redundant resource group.

[0067] In some implementations, the method further includes: organizing at least one idle computing resource into at least one idle resource group based on a multi-level topological structure corresponding to the computing resource set, so that each idle resource group includes all computing resources associated with the same node in the multi-level topological structure, and the nodes in the multi-level topological structure correspond to corresponding computing resources in the computing resource set or connected components of multiple computing resources in the computing resource set.

[0068] In some implementations, the computing resources include graphics processing units, and the multi-level topology includes at least two of the following: a first level, the first level includes nodes corresponding to individual graphics processing units; a second level, the second level includes nodes corresponding to PCIe switches connecting multiple graphics processing units; a third level, the third level includes nodes corresponding to CPU sockets connecting multiple PCIe switches; and a fourth level, the fourth level includes nodes corresponding to computing devices connecting multiple CPU sockets.

[0069] In some implementations, allocating a target number of computing resources to a first request by splitting an idle redundant resource group includes: splitting the idle redundant resource group into a first resource group and at least one second resource group, the first resource group having the target number of computing resources; and allocating computing resources in the first resource group to the first request.

[0070] In some implementations, the method further includes: in response to completion of execution of the first request, marking the first resource group as idle; and in response to determining that the computing resources included in at least one second resource group are all idle, merging the computing resources included in the first resource group and at least one second resource group into a new idle resource group.

[0071] In some implementations, the method further includes: in response to determining that at least one idle resource group does not include an idle redundant resource group, determining whether the priority of the first request is higher than a priority threshold; and in response to the priority being higher than the priority threshold, allocating a target number of computing resources to the first request using at least one available computing resource in the computing resource set, the available computing resources including idle computing resources and candidate computing resources, the candidate computing resources having been allocated to a second request having a priority less than or equal to the priority threshold.

[0072] In some implementations, at least one available computing resource is organized into at least one available resource group, wherein using the available computing resources in the computing resource set to allocate a target number of computing resources to the first request includes: determining whether at least one available resource group includes an available matching resource group with the target number of computing resources; in response to at least one available resource group including an available matching resource group, reclaiming computing resources that have been allocated in the available matching resource group; and allocating computing resources in the available matching resource group to the first request.

[0073] In some implementations, allocating a target number of computing resources to a first request using available computing resources in a computing resource set includes: in response to at least one available resource group not including an available matching resource group, determining whether at least one available resource group includes an available redundant resource group, the number of resources in the available redundant resource group being greater than the target number; and in response to determining that at least one available resource group includes an available redundant resource group, allocating the target number of computing resources to the first request by splitting the available redundant resource group.

[0074] In some implementations, the method also includes: determining a first number of computing resources in a resource group already used by a first tenant associated with the first request; and in response to determining that the sum of the target number and the first number exceeds an upper limit on the number of computing resources corresponding to the first tenant, setting a priority of the first request to below a priority threshold.

[0075] In some implementations, the upper limit of the number of computing resources corresponding to the first tenant is equal to the sum of the second number of computing resources pre-allocated to the first tenant and the third number of computing resources obtained by the tenant through exchange with the second tenant.

[0076] In a second aspect, a device is provided. The device includes: a processing unit; and

[0077] A memory, coupled to the processing unit and containing instructions stored thereon, which, when executed by the processing unit, cause the device to perform the following actions: receiving a first request for using a target number of computing resources in a computing resource set, at least one idle computing resource in the computing resource set being organized into at least one idle resource group; determining whether at least one idle resource group includes an idle matching resource group having a target number of computing resources; in response to at least one idle resource group not including an idle matching resource group, determining whether at least one idle resource group includes an idle redundant resource group, the number of resources in the idle redundant resource group being greater than the target number; and in response to at least one idle resource group including an idle redundant resource group, allocating the target number of computing resources for the first request by splitting the idle redundant resource group.

[0078] In some implementations, the action also includes: based on the multi-level topological structure corresponding to the computing resource set, organizing at least one idle computing resource into at least one idle resource group, so that each idle resource group includes all computing resources associated with the same node in the multi-level topological structure, and the node in the multi-level topological structure corresponds to the corresponding computing resource in the computing resource set or the connected components of multiple computing resources in the computing resource set.

[0079] In some implementations, the computing resources include graphics processing units, and the multi-level topology includes at least two of the following: a first level, the first level includes nodes corresponding to individual graphics processing units; a second level, the second level includes nodes corresponding to PCIe switches connecting multiple graphics processing units; a third level, the third level includes nodes corresponding to CPU sockets connecting multiple PCIe switches; and a fourth level, the fourth level includes nodes corresponding to computing devices connecting multiple CPU sockets.

[0080] In some implementations, allocating a target number of computing resources to a first request by splitting an idle redundant resource group includes: splitting the idle redundant resource group into a first resource group and at least one second resource group, the first resource group having the target number of computing resources; and allocating computing resources in the first resource group to the first request.

[0081] In some implementations, the action also includes: in response to the completion of the execution of the first request, marking the first resource group as idle; and in response to determining that the computing resources included in at least one second resource group are all idle, merging the computing resources included in the first resource group and at least one second resource group into a new idle resource group.

[0082] In some implementations, the action also includes: in response to determining that at least one idle resource group does not include an idle redundant resource group, determining whether the priority of the first request is higher than a priority threshold; and in response to the priority being higher than the priority threshold, allocating a target number of computing resources to the first request using at least one available computing resource in the computing resource set, the available computing resources including idle computing resources and candidate computing resources, the candidate computing resources having been allocated to a second request having a priority less than or equal to the priority threshold.

[0083] In some implementations, at least one available computing resource is organized into at least one available resource group, wherein using the available computing resources in the computing resource set to allocate a target number of computing resources to the first request includes: determining whether at least one available resource group includes an available matching resource group with the target number of computing resources; in response to at least one available resource group including an available matching resource group, reclaiming computing resources that have been allocated in the available matching resource group; and allocating computing resources in the available matching resource group to the first request.

[0084] In some implementations, allocating a target number of computing resources to a first request using available computing resources in a computing resource set includes: in response to at least one available resource group not including an available matching resource group, determining whether at least one available resource group includes an available redundant resource group, the number of resources in the available redundant resource group being greater than the target number; and in response to determining that at least one available resource group includes an available redundant resource group, allocating the target number of computing resources to the first request by splitting the available redundant resource group.

[0085] In some implementations, the action also includes: determining a first number of computing resources in a resource group already used by a first tenant associated with the first request; and in response to determining that the sum of the target number and the first number exceeds an upper limit on the number of computing resources corresponding to the first tenant, setting a priority of the first request to below a priority threshold.

[0086] In some implementations, the upper limit of the number of computing resources corresponding to the first tenant is equal to the sum of the second number of computing resources pre-allocated to the first tenant and the third number of computing resources obtained by the tenant through exchange with the second tenant.

[0087] In a third aspect, the present disclosure provides a computer program product tangibly stored in a non-transitory computer storage medium and comprising machine executable instructions which, when executed by a device, perform the method according to the first aspect.

[0088] In a fourth aspect, the present disclosure provides a computer-readable medium having machine-executable instructions stored thereon, which, when executed by a device, causes the device to perform the method of the first aspect.

[0089] The functions described above herein may be performed at least in part by one or more hardware logic components. For example, and without limitation, exemplary types of hardware logic components that may be used include: field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), system on a chip (SOCs), complex programmable logic devices (CPLs), and the like.

[0090] (CPLD) and so on.

[0091] The program code for implementing the method of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general-purpose computer, a special-purpose computer, or other programmable data processing device, so that the program code, when executed by the processor or controller, enables the functions / operations specified in the flow chart and / or block diagram to be implemented. The program code may be executed entirely on the machine, partially on the machine, partially on the machine and partially on a remote machine as a stand-alone software package, or entirely on a remote machine or server.

[0092] In the context of the present disclosure, a machine-readable medium may be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, device, or equipment. A machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or equipment, or any suitable combination of the foregoing. A more specific example of a machine-readable storage medium may include an electrical connection based on one or more lines, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0093] In addition, although each operation is described in a specific order, this should be understood as requiring such operation to be performed in the specific order shown or in a sequential order, or requiring that all illustrated operations should be performed to obtain the desired result. Under certain circumstances, multitasking and parallel processing may be advantageous. Similarly, although several specific implementation details are included in the above discussion, these should not be interpreted as limiting the scope of the present disclosure. Certain features described in the context of a separate implementation can also be implemented in a single implementation in combination. On the contrary, the various features described in the context of a single implementation can also be implemented in multiple implementations individually or in any suitable sub-combination.

[0094] Although the subject matter has been described in language specific to structural features and / or methodological logical actions, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or actions described above. On the contrary, the specific features and actions described above are merely example forms of implementing the claims.

Claims

1. A method for managing computing resources, comprising: receiving a first request for using a target number of computing resources in a computing resource set, at least one idle computing resource in the computing resource set being organized into at least one idle resource group, the at least one idle resource group comprising a plurality of processors; determining whether the at least one idle resource group includes an idle matching resource group having the target number of computing resources; In response to the at least one idle resource group not including the idle matching resource group, determining whether the at least one idle resource group includes an idle redundant resource group, the number of resources in the idle redundant resource group being greater than the target number; In response to the at least one idle resource group including the idle redundant resource group, allocating the target number of computing resources for the first request by splitting the idle redundant resource group, wherein the target number of computing resources is allocated based on the configuration of the plurality of processors; In response to determining that the at least one idle resource group does not include the idle redundant resource group, determining whether the priority of the first request is higher than a priority threshold; as well as In response to the priority being higher than the priority threshold, allocating the target number of computing resources to the first request using at least one available computing resource in the set of computing resources, the available computing resources comprising idle computing resources and candidate computing resources that have been allocated to a second request having a priority less than or equal to the priority threshold, wherein the target number of computing resources is allocated based on: said configuration of said plurality of processors; and Proximity of processors in the plurality of processors, wherein the processors in the plurality of processors are deployed to implement computer processing functions.

2. The method according to claim 1, further comprising: Based on the multi-level topological structure corresponding to the computing resource set, the at least one idle computing resource is organized into the at least one idle resource group so that each idle resource group includes all computing resources associated with the same node in the multi-level topological structure shown, and the nodes in the multi-level topological structure correspond to the corresponding computing resources in the computing resource set or the connected components of multiple computing resources in the computing resource set.

3. The method of claim 2, wherein the computing resource comprises a graphics processing unit, and the multi-level topology comprises at least two of the following: a first level including nodes corresponding to individual graphics processing units; a second level, the second level including nodes corresponding to a PCIe switch connecting the plurality of graphics processing units; A third level, the third level including nodes corresponding to CPU slots to which the plurality of PCIe switches are connected; as well as A fourth level includes nodes corresponding to computing devices connecting the plurality of CPU sockets.

4. The method according to claim 1, wherein allocating the target number of computing resources for the first request by splitting the idle redundant resource group comprises: Splitting the idle redundant resource group into a first resource group and at least one second resource group, wherein the first resource group has the target number of computing resources; as well as Computing resources in the first resource group are allocated to the first request.

5. The method according to claim 4, further comprising: In response to the first request being executed successfully, marking the first resource group as idle; as well as In response to determining that the computing resources included in the at least one second resource group are all idle, the computing resources included in the first resource group and the at least one second resource group are merged into a new idle resource group.

6. The method according to claim 1, wherein the at least one available computing resource is organized into at least one available resource group, wherein allocating the target number of computing resources for the first request using the available computing resources in the computing resource group comprises: determining whether the at least one available resource group includes an available matching resource group having the target number of computing resources; In response to the at least one available resource group including the available matching resource group, reclaiming the computing resources that have been allocated in the available matching resource group; as well as A computing resource in the available matching resource group is allocated to the first request.

7. The method according to claim 6, wherein allocating the target number of computing resources for the first request using available computing resources in the computing resource set comprises: In response to the at least one available resource group not including the available matching resource group, determining whether the at least one available resource group includes an available redundant resource group, the number of resources in the available redundant resource group being greater than the target number; as well as In response to determining that the at least one available resource group includes the available redundant resource group, the target number of computing resources is allocated to the first request by splitting the available redundant resource group.

8. The method according to claim 1, further comprising: determining a first number of computing resources in a resource group that has been used by a first tenant associated with the first request; as well as In response to determining that the sum of the target number and the first number exceeds an upper limit on the number of computing resources corresponding to the first tenant, setting a priority of the first request to be lower than a priority threshold.

9. The method according to claim 8, wherein the upper limit of the number of computing resources corresponding to the first tenant is equal to the sum of the second number of computing resources pre-allocated to the first tenant and the third number of computing resources obtained by the tenant through exchange with the second tenant.

10. A device for allocating computing resources, comprising: Processing unit; as well as A memory coupled to the processing unit and containing instructions stored thereon, which, when executed by the processing unit, cause the device to perform the following actions: receiving a first request for using a target number of computing resources in a computing resource set, at least one idle computing resource in the computing resource set being organized into at least one idle resource group, the at least one idle resource group comprising a plurality of processors; determining whether the at least one idle resource group includes an idle matching resource group having the target number of computing resources; In response to the at least one idle resource group not including the idle matching resource group, determining whether the at least one idle resource group includes an idle redundant resource group, the number of resources in the idle redundant resource group being greater than the target number; In response to the at least one idle resource group including the idle redundant resource group, allocating the target number of computing resources for the first request by splitting the idle redundant resource group, wherein the target number of computing resources is allocated based on the configuration of the plurality of processors; In response to determining that the at least one idle resource group does not include the idle redundant resource group, determining whether the priority of the first request is higher than a priority threshold; as well as In response to the priority being higher than the priority threshold, allocating the target number of computing resources to the first request using at least one available computing resource in the set of computing resources, the available computing resources comprising idle computing resources and candidate computing resources that have been allocated to a second request having a priority less than or equal to the priority threshold, wherein the target number of computing resources is allocated based on: said configuration of said plurality of processors; and Proximity of processors in the plurality of processors, wherein the processors in the plurality of processors are deployed to implement computer processing functions.

11. The device of claim 10, wherein the actions further comprise: Based on the multi-level topological structure corresponding to the computing resource set, the at least one idle computing resource is organized into the at least one idle resource group so that each idle resource group includes all computing resources associated with the same node in the multi-level topological structure, and the nodes in the multi-level topological structure correspond to corresponding computing resources in the computing resource set or connected components of multiple computing resources in the computing resource set.

12. The apparatus of claim 11, wherein the computing resource comprises a graphics processing unit, and the multi-level topology comprises at least two of the following: a first level including nodes corresponding to individual graphics processing units; a second level, the second level including nodes corresponding to a PCIe switch connecting the plurality of graphics processing units; A third level, the third level including nodes corresponding to CPU slots to which the plurality of PCIe switches are connected; as well as A fourth level includes nodes corresponding to computing devices connecting the plurality of CPU sockets.

13. The device according to claim 10, wherein allocating the target number of computing resources to the first request by splitting the idle redundant resource group comprises: Splitting the idle redundant resource group into a first resource group and at least one second resource group, wherein the first resource group has the target number of computing resources; as well as Computing resources in the first resource group are allocated to the first request.

14. The apparatus of claim 13, wherein the actions further comprise: In response to the first request being executed successfully, marking the first resource group as idle; as well as In response to determining that the computing resources included in the at least one second resource group are all idle, the computing resources included in the first resource group and the at least one second resource group are merged into a new idle resource group.

15. The apparatus according to claim 10, wherein the at least one available computing resource is organized into at least one available resource group, wherein allocating the target number of computing resources for the first request using the available computing resources in the computing resource group comprises: determining whether the at least one available resource group includes an available matching resource group having the target number of computing resources; In response to the at least one available resource group including the available matching resource group, reclaiming the computing resources that have been allocated in the available matching resource group; as well as A computing resource in the available matching resource group is allocated to the first request.

16. The apparatus of claim 15, wherein allocating the target number of computing resources to the first request using available computing resources in the set of computing resources comprises: In response to the at least one available resource group not including the available matching resource group, determining whether the at least one available resource group includes an available redundant resource group, the number of resources in the available redundant resource group being greater than the target number; as well as In response to determining that the at least one available resource group includes the available redundant resource group, the target number of computing resources is allocated to the first request by splitting the available redundant resource group.

17. The apparatus of claim 10, the actions further comprising: Determining a first number of computing resources in a resource group that has been used by a first tenant associated with the first request; as well as In response to determining that the sum of the target number and the first number exceeds an upper limit on the number of computing resources corresponding to the first tenant, setting a priority of the first request to be lower than a priority threshold.

18. A computer program product tangibly stored in a non-transitory computer storage medium and comprising machine executable instructions which, when executed by a device, cause the device to perform the method according to any one of claims 1 to 9.

Citation Information

Patent Citations

  • Resource allocation

    EP1075769A1