Method, system, and storage medium for dynamic recomposition of computing system
Patent Information
- Application Number
- PCT/CN2023/106894
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-07-12
- Publication Date
- 2025-02-20
AI Technical Summary
In data centers, managing workload distribution across devices is challenging due to congestion issues, which are often not timely recognized until performance problems occur. Additionally, moving workloads between devices is impractical due to dependencies within the application stack and data topology.
A method and system for dynamic recomposition of a composable system, where the statuses of compute elements are checked for over-utilization. If a compute element is over-utilized and recomposable, a recomposition type is determined, and a recomposition is performed to rebalance utilization, involving storage, interconnect, GPU, or FPGA components.
This approach enables timely recognition and mitigation of congestion issues, improving system performance and efficiency by dynamically rebalancing resource utilization without requiring new hardware or workload deployment.
Smart Images

Figure CN2023106894_20022025_PF_FP_ABST
Abstract
Description
METHOD, SYSTEM, AND STORAGE MEDIUM FOR DYNAMIC RECOMPOSITION OF COMPUTING SYSTEM
[0001] FIELD OF THE DISCLOSURE
[0002] The present disclosure relates to data processing, and more particularly, relates to a method, a system and a storage medium for dynamic recomposition of a composable system in a computing system.BACKGROUND
[0003] In a data center, a number of different devices may be connected to each other in complex configurations. A workload administrator may manage workload demands on devices according to workload distribution and device availabilities. For example, the workload administrator may need to move data from a device on a congested link to another device on a less-utilized link upon a usage analysis or reconfigure the workload to utilize an equivalent device on a less-congested link. This may be difficult to manage, as workload changes are often unable to be timely recognized until a performance problem occurs at a later time due to congestion. Additionally, in some cases, moving data or workload from one device to another may be impractical, given dependencies within the application stack on underlying hardware and data topology.SUMMARY
[0004] One aspect of the present disclosure provides a method. In the method, statuses of compute elements in a composable system are checked and it is determined whether resources of the compute elements are over-utilized. The compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component. In response to a resource of a compute element being over-utilized, whether the over-utilized compute element is recomposable to rebalance its utilization is determined. In response to the over-utilized compute element being recomposable, a recomposition type is determined for recomposing the over-utilized compute element. A recomposition is performed on the over-utilized compute element according to the recomposition type corresponding to the over-utilized element.
[0005] Another aspect of the present disclosure provides a system. The system includes a memory, storing program instructions and a processor, operatively coupled to the memory. When the program instructions are being executed, the processor is configured to check statuses of compute elements of a composable system and determine whether resources of the compute elements are over-utilized. The compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component. In response to a resource of a compute element being over-utilized, whether the over-utilized compute element is recomposable to rebalance its utilization is determined. In response to the over-utilized compute element being recomposable, a recomposition type is determined for recomposing the over-utilized compute element. A recomposition is performed on the over-utilized compute element according to the recomposition type corresponding to the over-utilized element.
[0006] Another aspect of the present disclosure provides a non-transitory computer readable storage medium, containing computer program instructions, and when being loaded and executed by a processor, the computer program instructions cause a processor to perform checking statuses of compute elements of a composable system and determining whether resources of the compute elements are over-utilized. The compute elements include one or more of a storage component, an interconnect component, and a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component. In response to a resource of a compute element being over-utilized, whether the over-utilized compute element is recomposable to rebalance its utilization is determined. In response to the over-utilized compute element being recomposable, a recomposition type is determined for recomposing the over-utilized compute element. A recomposition is performed on the over-utilized compute element according to the recomposition type corresponding to the over-utilized element.
[0007] The foregoing and other objects, features and advantages of the present disclosure may be apparent from the following more particular description of exemplary embodiments of the present disclosure as illustrated in the accompanying drawings where reference numbers represent like parts of exemplary embodiments of the present disclosure.BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 illustrates a block diagram of an example of a computing system according to some embodiments of the present disclosure;
[0009] FIG. 2 illustrates a block diagram of an example of a composable system according to some embodiments of the present disclosure; and
[0010] FIG. 3 illustrates a flow chart of an example of a method for a dynamic recomposition of a composable system in a computing system according to some embodiments of the present disclosure.DETAILED DESCRIPTION
[0011] Hereinafter, certain embodiments of the present disclosure may be described with reference to the drawings. It should be understood, however, that the descriptions may be merely exemplary and may not intended to limit the scope of the present disclosure. In addition, in the following description, descriptions of well-known structures and techniques are omitted to avoid unnecessarily obscuring the concepts of the present disclosure.
[0012] The terminology used herein may be merely for the purpose of describing particular embodiments and may not intended to limit the scope of the present disclosure. The terms "include" , "comprise" and the like as used herein may indicate the presence of stated features, steps, operations, and / or components, but may not exclude the presence or addition of one or more other features, steps, operations, or components.
[0013] All terms (including technical and scientific terms) used herein may have the same meaning as commonly understood by those skilled in the art unless otherwise defined. It should be noted that the terms used herein should be interpreted to have meanings consistent with the context of the specification and should not be interpreted in an idealized or overly rigid manner.
[0014] Certain block diagrams and / or flowcharts may be shown in the drawings. It should be understood that certain blocks or combinations of block diagrams and / or flowcharts may be implemented by computer program instructions. The computer program instructions may be provided to processors of a general-purpose computer, a special purpose computer, or other programmable data processing devices, thus the instructions, when executed by the processors, may create means for implementing the functions / operations illustrated in the block diagrams and / or flowcharts.
[0015] A method, a system, and a storage medium for a dynamic recomposition of a composable system are provided. The method includes checking statuses of compute elements in a composable system and determining whether resources of the compute elements are over-utilized. The compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component. In response to a resource of a compute element being over-utilized, whether the over-utilized compute element is recomposable to rebalance its utilization is determined. In response to the over-utilized compute element being recomposable, a recomposition type is determined for recomposing the over-utilized compute element. A recomposition is performed on the over-utilized compute element according to the recomposition type corresponding to the over-utilized element.
[0016] FIG. 1 illustrates a block diagram of an example of a computing system according to some embodiments of the present disclosure. The computing system may include one or more composable systems for dynamic recomposition to achieve load balancing. As shown in FIG. 1, the computing system 152 may include at least one processor 156 (e.g., central processing unit (CPU) ) and a memory such as a random-access memory (RAM) 168. The RAM 168 is connected, through a high-speed memory bus 166 and a bus adapter 158, to the processor 156 and other components of the computing system 152.
[0017] An operating system 154 may be stored in the RAM 168. Operating systems useful in computers configured for the disclosed composable systems with dynamic recomposition for load balancing according to the embodiments of the present disclosure may include UNIX TM, Linux TM, Microsoft Windows TM, AIXTM, and the like, although the operating system 154 in the example of FIG. 1 is illustrated in the RAM 168 as an example. However, various components of the above-mentioned operating systems may be stored in non-transitory memory, such as a data storage 170, which may not be limited according to the embodiments of the present disclosure. Furthermore, a pod manager 126, which may be a module of computer program instructions for composable systems with dynamic recomposition for load balancing, may also be stored in the RAM 168.
[0018] The computing system 152 in FIG. 1 may further include a drive adapter 172 which is coupled, through an expansion bus 160 and the bus adapter 158, to the processor 156 and other components of the computing system 152. The drive adapter 172 may connect non-transitory memory (e.g., the data storage 170) to other components of the computing system 152. Drive adapters useful in computers configured for composable systems with dynamic recomposition for load balancing may include integrated drive electronics (IDE) adapters, small computer system interface (SCSI) adapters, non-volatile memory express (NVMe) adapters, serial advanced technology attachment (SATA) adapters, serial attached SCSI (SCSI stands for small computer system interface) (SAS) adapters, small computer system interface (SCSI) over internet protocol (IP) adapters (i.e. iSCSI adapters) , SCSI over fibre channel (FC) adapters, and any other suitable adapters. Non-transitory memory may also be implemented as optical disk drives, electrically erasable programmable read-only memory (EEPROM or flash memory) , RAM drives, and the like.
[0019] The computing system 152 in FIG. 1 may further include one or more input / output (I / O) adapters 178. The I / O adapters 178 may implement user-oriented input / output through software drivers and computer hardware for controlling output to display devices such as computer display screens, as well as user input from user input devices 181 such as keyboards and mice. The computing system 152 in FIG. 1 may further include a video adapter 209, which is an example of the I / O adapter specially designed for graphic output to a display device 180, including a display screen or a computer monitor. Optionally, the video adapter 209 may be coupled to the processor 156 through a high-speed video bus 164, the bus adapter 158, and a front side bus 162 which is also a high-speed bus.
[0020] The computing system 152 in FIG. 1 may further include a communication adapter 167 for data communication with other computers and a data communication network. The data communication may be carried out serially through external buses (e.g., a universal serial bus (USB) ) , data communication networks (i.e., IP data communication networks) , and other suitable manners. Communication adapters may implement the hardware level of data communication where one computer sends data communication to another computer, directly or through a data communication network. Examples of communications adapters in computers configured for composable systems with dynamic recomposition for load balancing may include InfiniBand adapters, 4G / 5G wireless adapters, Ethernet (IEEE 802.3) adapters for wired data communications, and 802.11 adapters for wireless data communications.
[0021] The expansion bus 160 of the computing system 152 in FIG. 1, which may be an interconnect fabric, may also be connected to a compute node 122 or any other suitable nodes. The compute node 122 may be a collection of compute elements (acompute element 124A to a compute element 124N) which are able to be arranged (i.e., composed) into different configurations based on data center requirements. The compute elements (e.g., the compute element 124A to the compute element 124N) may be modules of computer hardware and software configured to create composable systems. The compute elements 124A-124N may be devices which perform one or more functions within the system. The compute elements 124 may include storage components 1240A, interconnect components 1242A, GPU components 1244A, processing units, I / O adapters, drive adapters, and the like. In some embodiments, the compute elements 124 may further include field-programmable gate arrays (FPGAs) which are also used in various places where GPUs are used and are subject to the same composition, sharing, and over-utilization, which may not be limited according to the embodiments of the present disclosure. For example, congestion may exist because of the choices made in assigning targets to initiators; the elements that are composed may be recomposed (atarget x initiator matrix is rebalanced) to re-route flows on the interconnect that are causing congestion; similar to other components (aGPU or FPGA) , a composed system may share a specialized interconnect component; compute accelerators may have a small amount of workload specific (temporary) data storage but shifting between the data storage of the compute accelerators is less costly; and alleviating congestion in a network is a type of problem that is solved by looking at the totality of all composed system definitions on the common interconnect. The compute node 122 may be a set of compute elements configured based on the rack scale design (RSD) platform. Furthermore, the compute node 122 may be coupled to the expansion bus 160 via the communication adapter 167.
[0022] FIG. 2 illustrates a block diagram of a composable system with dynamic recomposition for load balancing according to the embodiments of the present disclosure. The pod may include a group of compute nodes (e.g., a first compute node 122A to an N-th compute node 122N) , and a pod manager 126 coupled to an interconnect fabric 204 may be shown in FIG. 2.The compute nodes 122A-122N may be coupled to the interconnect fabric 204. The compute node 122A may include an interconnect switch 206 coupled to the interconnect fabric 204 and a plurality of compute elements 124A-124N. The interconnect switch 206 may include a management central processing unit (CPU) 208. Each compute node may include similar elements shown in the compute node 122A.
[0023] The composable system is a combination of compute elements selected from the compute element 124A to the compute element 124N, communicatively coupled together (i.e., composable) to form a system capable of executing workloads. For example, a compute element, e.g., the compute element 124A, may include a storage component 1240A, an interconnect component 1242A, a GPU component 1244A, and / or any other suitable component, which may not be limited according to the embodiments of the present disclosure. The compute elements each coupled to one another using the interconnect fabric 204. The composable system may include compute elements communicatively selected from the compute elements 124A-124N or may include other suitable elements from other different nodes, which may not be limited according to the embodiments of the present disclosure.
[0024] The pod may be a group of nodes including compute nodes 122A-122N housing the compute elements 124A-124N communicatively configured to create the composable system. A compute element within the pod which is able to be composed into the composable system is referred to as a composable compute element. The pod of composable compute elements may include the composable system of the above-mentioned compute elements. For example, the pod may include three compute nodes, including a compute node A, a compute node B, and a compute node C; and each compute node may include the storage component 1240A, the interconnect component 1242A, the GPU component 1244A, and / or any other suitable component, which may not be limited according to the embodiments of the present disclosure. One composable system may be composed from the storage component 1240A on the compute node A, the interconnect component 1242A on the compute node B, and the GPU component 1244A on the compute node C. The composable systems may be formed based on any combinations using the above-mentioned elements, which may not be limited herein according to the embodiments of the present disclosure.
[0025] The pod manager 126 is software, hardware, or an aggregation of both software and hardware which may compose and manage the composable systems. The pod manager 126 may manage and configure the composable systems made up of the above-mentioned compute elements, or any other suitable elements. The pod manager 126 may instruct the management CPU 208 to add or remove a communication coupling on the interconnect fabric 204 between the compute elements 124A-124N, thereby creating or modifying the composable system.
[0026] The interconnect fabric 204 may be a device or a group of devices which may transfer data between the elements including the compute elements 124A-124N and the nodes including the compute nodes 122A-122N on the system. The interconnect fabric 204 may be a switching fabric, such as a peripheral component interconnect express (PCIe) , an infiniband, an omni-path, and an ethernet network. The interconnect fabric 204 may connect the nodes to each other via the interconnect switch 206. For example, the interconnect fabric 204 may connect the compute nodes 122A-122N to each other via the interconnect switch 206. The interconnect switch 206 may be a bridge, for example, between the compute elements on each of the compute nodes 122A-122N and the interconnect fabric 204, creating a potential communicative coupling between each compute element on each compute node in the system. Each node may be a collection of the compute elements 124A-124N coupled together via the interconnect switch 206.
[0027] The management CPU 208 may be software, hardware, or the aggregation of both software and hardware which manages and configures elements in a node, such as the compute elements 124A-124N on one of the compute nodes 122A-122N. The management CPU 208 may communicate with the pod manager 126 to provide the pod manager 126 with information of the compute elements 124A-124N contained in one of the compute nodes 122A-122N. The management CPU 208 may also carry out the instructions received from the pod manager 126, including configuring the composition of the composable systems from the above-mentioned compute elements (e.g., by mapping or unmapping the compute elements to or from other compute elements) .
[0028] The management CPU 208 may also monitor the resource utilization of each of the compute elements 124A-124N coupled to the interconnect switch 206. The management CPU 208 may send information about the resource utilization to the pod manager 126. Resource utilization information of a compute element may include, for example, utilized percentages of the storage component 1240A, the interconnect component 1242A, the GPU component 1244A, and / or any other suitable component, which may not be limited according to the embodiments of the present disclosure.
[0029] In one embodiment, the compute elements 124A-124N may be modules of computer hardware and software used to create the composable systems. The compute elements 124A-124N may be endpoints on the interconnect fabric 204. The compute elements 124A-124N may include hardware components such as the storage components 1240A, the interconnect components 1242A, and / or the GPU components 1244A. The compute elements 124A-124N may also include software components, such as virtualized hardware instantiated to share a single hardware compute element across multiple composable systems.
[0030] The above-mentioned compute elements may make up a resource pool. In one embodiment, the compute elements 124A-124N from each of the compute nodes 122A-122N may make up a resource pool. The resource pool of the compute elements may be a collection of one or more of the compute elements 124A-124N from each of one or more of the compute nodes 122A-122N. Each composable system may be composed from a subset of the compute elements in the resource pool.
[0031] For further explanation, FIG. 3 illustrates a method for a composable system with dynamic recomposition for load balancing according to the embodiments of the present disclosure.
[0032] In S101 of FIG. 3, the method may include checking the statuses of the compute elements in a computing system. Each of the compute elements may include one or more of a storage component, an interconnect component, and a GPU component. In one embodiment, the system management software may be used to place the workload into the composable system sized based on its minimum demands. The status of the compute elements may be periodically checked by a composable system management software. The workload may be a processing job which may include data and an application, where the data is processed according to the present disclosure. For example, the workload may include a modeling application along with related data. For example, for weather forecasting, the workload may include a weather modeling application and weather data. Executing the workload may include contributions from each of the elements including the compute elements 124A-124N in the composable system. The involvement of each element / component may increase or decrease depending on the current requirements of the workload execution. During certain periods of the execution of the workload, certain elements / components may be heavily utilized or lightly utilized. Furthermore, during certain periods of the execution of the workload, certain elements may be in an idle or busy state.
[0033] The pod may be managed and monitored by the pod manager 126 in communication with the management CPU 208 on each of the nodes, including the compute nodes 122A-122N. For example, the pod of composable compute elements may be formed by a number of different compute nodes selected from the compute elements 122A-122N. The composable system may be formed by a subset of the compute elements in the pod, including the compute elements on different compute nodes.
[0034] In S102 of FIG. 3, the method may include determining whether resources of the compute elements are over-utilized. In response to the resources of the compute elements being over-utilized, the process may proceed to S103; and in response to the resources of the compute elements being not over-utilized, the process may return to S101. For example, the resource over-utilized situations may include one or more of the following situations, such as when the workload reaches a performance threshold or a congestion is detected internally on an interconnect fabric. For example, resource utilization information of a compute element may include utilized percentages of the storage component, the interconnect component, the GPU component, and / or any other suitable component which may not be limited according to the embodiments of the present disclosure, and the utilization of the compute element may be measured by different measures including, e.g., average percent capacity utilized over a unit of time.
[0035] In S103 of FIG. 3, the method may include determining whether the elements being over-utilized are recomposable to rebalance the utilization. In response to the over-utilized compute elements being recomposable, the process may proceed to S104. In response to the over-utilized compute elements being not recomposable, the process may return to S101. In one embodiment, the recomposibility may refer to that the compute elements are logically pooled and assembled to implement a specific workload.
[0036] In S104 of FIG. 3, the method may include determining recomposition types for recomposing the over-utilized compute elements. For example, a corresponding recomposition algorithm of the composable system may be invoked according to the recomposition types for recomposing the over-utilized compute element (s) , which may be transparent to the workload itself and performed in the context of a system composer, thereby dynamically modifying the configuration of the composable system and further improving the performance of the composable system. In some embodiments, the thresholds, including over-utilization thresholds, for recomposition may be adjustable by a system manager, and the recomposition may be temporary or permanent, which may not be limited in the embodiments of the present disclosure. The compute elements in the composable system may include one or more recomposition types, including a storage type, an interconnect type, a GPU type, an FPGA type, or any suitable types, which may not be limited herein according to the embodiments of the present disclosure. In response to the recomposition type being determined to be a storage type, the process may proceed to S200. The over-utilized compute element may include one or more of a slow-speed storage component, an unperformed storage component, and an overloaded storage component. S200 may include migrating the data from the slow-speed storage component to a high-speed storage component, unmapping the slow-speed storage component from a corresponding compute node and mapping the new high-speed storage component to the corresponding compute node. In one embodiment, S200 may include sharing a workload of the overloaded storage component across one or more storage components, and / or sharing a set of workloads across one or more storage components without including the unperformed storage component.
[0037] Migrating the data from the slow-speed storage component to the high-speed storage component may be carried out by the pod manager 126 or the management CPU 208. Unmapping the slow-speed storage component from the corresponding compute node may be carried out by disabling a communication coupling on the interconnect fabric between the corresponding compute node and the slow-speed storage component in the composable system. Mapping the new high-speed storage component to the corresponding compute node may be carried out by enabling a communication coupling on the interconnect fabric between the corresponding compute node and the high-speed storage component in the composable system. The present disclosure may resolve the hot spot issue of being in congested with the low-speed storage component (e.g., low disk access rate) by mapping the composable system to the high-speed storage component type using the composable system management software, thereby avoiding data re-hosting.
[0038] In some embodiments, in response to the recomposition type being determined to be a storage type, the process may also proceed to S202. S202 may include copying data from a slow-speed storage component to a high-speed storage component, mapping a corresponding compute node to the high-speed storage component, and entirely or partially (e.g., write operation) executing a workload on the high-speed storage component, where the low-speed storage component may be still attached and partially (e.g., read-only operation) used for executing the workload. Further, S202 may further include unmapping the slow-speed storage component from the corresponding compute node any time after the workload under execution is completed entirely.
[0039] In response to the recomposition type being determined to be an interconnect type, the process may proceed to S204. S204 may include reconfiguring the network from a congested switch to a non-congested switch or reshaping network traffic flows in the network. Often, when the network is congested, one or more devices may be moved from the congested switch to the non-congested switch by a system manager. However, in one embodiment, the composable system management software may reconfigure the network from the congested switch to the non-congested switch according to the present disclosure, thereby effectively avoiding the network congestion. Further, the composable system management software may be set up to monitor the network traffic and reconfigure the network to reduce congestions on network switches when it detects a congested switch. A network resource may be any composable element according to the embodiments of the present disclosure.
[0040] In some embodiments, in response to the recomposition type being determined to be an interconnect type, the process may also proceed to S206. S206 may include mapping a corresponding compute node to a high-speed network adapter (e.g. from 10 GbE to 24 GbE) or mapping a corresponding compute node to a high-speed port of a switch, regardless of same or different switches, which may not be limited according to the embodiments of the present disclosure.
[0041] In response to the recomposition type being determined to be a GPU type, the process may proceed to S208. S208 may include unmapping an oversubscribed (e.g., busy) GPU from a corresponding compute node and remapping an idle GPU to such corresponding compute node and migrating the workload from the oversubscribed GPU to the remapped GPU. Unmapping the oversubscribed GPU from the corresponding compute node may be carried out by disabling a communication coupling on the interconnect fabric between the corresponding compute node and the oversubscribed GPU in the composable system. Remapping the idle GPU to such corresponding compute node may be carried out by enabling a communication coupling on the interconnect fabric between the corresponding compute node and the idle GPU in the composable system. Migrating the workload to the remapped GPU may be carried out by the pod manager 126 or the management CPU 208. In one embodiment, in response to the oversubscribed GPU being heavily utilized by a certain workload, the system management software may migrate certain portion of workload to the idle GPU, thereby reducing the high utilization rate on the oversubscribed GPU and balancing the workload of the composable system according to the embodiments of the present disclosure.
[0042] In some embodiments, in response to the recomposition type being determined to be a GPU type, the process may also proceed to S210. S210 may include mapping a corresponding compute node to a high-performance GPU, progressively assigning a workload to the high-performance GPU, and unmapping an oversubscribed (e.g., busy) GPU from the corresponding compute node after the workload carried out by the oversubscribed GPU is completed entirely.
[0043] After the recomposition is completed, the process may return to step S101 for checking the status of the composable system.
[0044] In some embodiments, the dynamic recomposition may be applied to any suitable applications or a set of applications where demands on hardware may vary over time. For example, a workload may be a video stream service, which may require high processing and network capacity in the evening time. By periodically checking the status of the composable system, the system implementing the method of the present disclosure may adjust storage components, interconnect components, and GPU components throughout the time of the day, and therefore increasing the performance and / or capacity of the composable compute nodes automatically without initiating new hardware or workload deployment.
[0045] In some embodiments, the method consistent with the present disclosure may also include periodically monitoring for over capacity of the composable system. The system management software may dynamically recompose the computing system, if over capacity is detected in one or more components, including the storage components, interconnect components, GPU components, and any suitable components, which may not be limited according to the embodiments of the present disclosure. After determining a compute element is detected with over-capacity and has a recomposibility, a recomposition type, e.g., a storage type, an interconnect type, and a GPU type, may be determined corresponding to the detected component. The management software may then free up certain components, based on the recomposition type, to be available to other workloads. For example, when a compute element detected with over-capacity is a storage type, the management software may free up certain storage component (s) to be available to receive workloads. In addition, the dynamic recomposition may be carried out without significant disruption to a running workload, for example, rebooting the system or restarting the workload, which may be beneficial for performing dynamic recomposition according to the embodiments of the present disclosure.
[0046] As such, load balancing of a computing system may be achieved by dynamic recomposition of the composable system in the computing system, which improves the operation of the computing system with increased system efficiency. In addition, the operation of the computing system may be improved without using new hardware or workload deployment, and thus increasing the system performance and capacity.
[0047] Exemplary embodiments of the present disclosure are described largely in the context of a fully functional computer system for performing dynamic recomposition for load balancing on composable systems during workload execution. Those skilled in the art should recognize, however, that the present disclosure also may be embodied in a computer program product disposed upon computer readable storage media for use with any suitable data processing system. Such computer readable storage media may be any storage medium for machine-readable information, including magnetic media, optical media, or other suitable media. Examples of such media include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and the like. Those skilled in the art should immediately recognize that any computer system having suitable programming means may be capable of executing the steps of the method of the disclosure as embodied in a computer program product. Those skilled in the art should recognize also that, although certain exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present disclosure.
[0048] The present disclosure may be a system, a method, and / or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.
[0049] The computer readable storage medium may be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium may include the following: a persistent memory including a non-volatile dual in-line memory module (NVDIMM) , a redundant array of independent disks (RAID) adapter, a tape drive, a hard disk, a random access memory (RAM) , a read-only memory (ROM) , an erasable programmable read-only memory (EPROM or Flash memory) , a static random access memory (SRAM) , a portable compact disc read-only memory (CD-ROM) , a digital versatile disk (DVD) , a memory stick, a mechanically encoded device such as raised structures in a groove having instructions recorded thereon, and any suitable combination of the above-mentioned storage media. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable) , or electrical signals transmitted through a wire.
[0050] Computer readable program instructions described herein may be downloaded to respective computing / processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and / or edge servers. A network adapter card or network interface in each computing / processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing / processing device.
[0051] Computer readable program instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the C programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN) , or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) . In certain embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA) , or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
[0052] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) , and computer program products according to embodiments of the disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0053] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein includes an article of manufacture including instructions which implement aspects of the function / act specified in the flowchart and / or block diagram block or blocks.
[0054] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in the flowchart and / or block diagram block or blocks.
[0055] The flowchart and block diagrams in the drawings may illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. Each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing the specified logical function (s) . In certain alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may be executed in the reverse order at certain cases, depending upon the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
[0056] It should be understood from the foregoing description that modifications and changes may be made in various embodiments of the present disclosure without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present disclosure is limited only by the language of the following claims.
Claims
1.A method, comprising:checking statuses of compute elements of a composable system, wherein the compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component;determining whether resources of the compute elements are over-utilized;in response to a resource of a compute element being over-utilized, determining whether an over-utilized compute element is recomposable to rebalance a utilization thereof;in response to the over-utilized compute element being recomposable, determining a recomposition type for recomposing the over-utilized compute element; andperforming a recomposition on the over-utilized compute element according to the recomposition type corresponding to the over-utilized compute element.2.The method according to claim 1, wherein:the recomposition type includes one or more of a storage type, an interconnect type, a GPU type, and an FPGA type.3.The method according to claim 2, wherein:the recomposition type is the storage type;the over-utilized compute element includes a slow-speed storage component; andperforming the recomposition includes:migrating data from the slow-speed storage component to a high-speed storage component;unmapping the slow-speed storage component from a corresponding compute node; andmapping the high-speed storage component to the corresponding compute node.4.The method according to claim 2, wherein:the recomposition type is the storage type;the over-utilized compute element includes a slow-speed storage component; andperforming the recomposition includes:copying data from the slow-speed storage component to a high-speed storage component;mapping a corresponding compute node to the high-speed storage component; andunmapping the slow-speed storage component from the corresponding compute node.5.The method according to claim 2, wherein:the recomposition type is the interconnect type;the over-utilized compute element includes a congested switch; andperforming the recomposition includes:reconfiguring a network from the congested switch to a non-congested switch or reshaping network traffic flows in a network.6.The method according to claim 2, wherein:the recomposition type is the interconnect type;the over-utilized compute element includes a congested switch; andperforming the recomposition includes:mapping a corresponding compute node to a high-speed network adapter or mapping a corresponding compute node to a network adapter attached to a high-speed port of a switch.7.The method according to claim 2, wherein:the recomposition type is the GPU type;the over-utilized compute element includes an oversubscribed GPU; andperforming the recomposition includes:unmapping the oversubscribed GPU from a corresponding compute node;remapping an idle GPU to the corresponding compute node; andmigrating a workload to a remapped idle GPU.8.The method according to claim 2, wherein:the recomposition type is the GPU type;the over-utilized compute element includes an oversubscribed GPU; andperforming the recomposition includes:mapping a corresponding compute node to a high-performance GPU;progressively assigning a workload to the high-performance GPU; andunmapping an oversubscribed GPU from the corresponding compute node.9.A system, comprising:a memory, storing program instructions; anda processor, operatively coupled to the memory, and when the program instructions being executed, configured to:check statuses of compute elements of a composable system, wherein the compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component;determine whether resources of the compute elements are over-utilized;in response to a resource of a compute element being over-utilized, determine whether an over-utilized compute element is recomposable to rebalance a utilization thereof;in response to the over-utilized compute element being recomposable, determine a recomposition type for recomposing the over-utilized compute element; andperform a recomposition on the over-utilized compute element according to the recomposition type corresponding to the over-utilized compute element.10.The system according to claim 9, wherein:the recomposition type at includes one or more of a storage type, an interconnect type, a GPU type, and an FPGA type.11.The system according to claim 10, wherein:the recomposition type is the storage type; andthe over-utilized compute element includes one or more of a slow-speed storage component, an unperformed storage component, and an overloaded storage component.12.The system according to claim 11, wherein the processor is configured to perform the recomposition by:migrating data from the slow-speed storage component to a high-speed storage component;unmapping the slow-speed storage component from a corresponding compute node; andmapping the high-speed storage component to the corresponding compute node.13.The system according to claim 11, wherein the processor is configured to perform the recomposition by:sharing a workload of the overloaded storage component across one or more storage components; and / orsharing a set of workloads across one or more storage components without including the unperformed storage component.14.The system according to claim 10, wherein:the recomposition type is the storage type;the over-utilized compute element includes a slow-speed storage component; andthe processor is configured to perform the recomposition by:copying data from the slow-speed storage component to a high-speed storage component;mapping a corresponding compute node to the high-speed storage component; andunmapping the slow-speed storage component from the corresponding compute node.15.The system according to claim 10, wherein:the recomposition type is the interconnect type;the over-utilized compute element includes a congested switch; andthe processor is configured to perform the recomposition by:reconfiguring a network from the congested switch to a non-congested switch.16.The system according to claim 10, wherein:the recomposition type is the interconnect type;the over-utilized compute element includes a congested switch; andthe processor is configured to perform the recomposition by:mapping a corresponding compute node to a high-speed network adapter or mapping a corresponding compute node to a network adapter attached to a high-speed port of a switch.17.The system according to claim 10, wherein:the recomposition type is the GPU type;the over-utilized compute element includes an oversubscribed GPU; andthe processor is configured to perform the recomposition by:unmapping the oversubscribed GPU from a corresponding compute node;remapping an idle GPU to the corresponding compute node;and migrating a workload to a remapped idle GPU.18.The system according to claim 10, wherein:the recomposition type is the GPU type;the over-utilized compute element includes an oversubscribed GPU; andthe processor is configured to perform the recomposition by:mapping a corresponding compute node to a high-performance GPU;progressively assigning a workload to the high-performance GPU; andunmapping an oversubscribed GPU from the corresponding compute node.19.A non-transitory computer readable storage medium, containing computer program instructions, and when being loaded and executed by a processor, the computer program instructions cause a processor to perform:checking statuses of compute elements of a composable system, wherein the compute elements include one or more of a storage component, an interconnect component, a graphics processing unit (GPU) component, and a field-programmable gate array (FPGA) component;determining whether resources of the compute elements are over-utilized;in response to a resource of a compute element being over-utilized, determining whether an over-utilized compute element is recomposable to rebalance a utilization thereof;in response to the over-utilized compute element being recomposable, determining a recomposition type for recomposing the over-utilized compute element; andperforming a recomposition on the over-utilized compute element according to the recomposition type corresponding to the over-utilized compute element.20.The storage medium according to claim 19, wherein:the recomposition type includes one or more of a storage type, an interconnect type, a GPU type, and an FPGA type.